在屏幕上打印一定数量的数字

时间:2012-04-02 00:42:22

标签: c math for-loop

我想扩展我现在正在工作的程序的一部分的功能..

现在我的代码在屏幕上显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
1999

但我希望这样做:把数十个放在文本中,没有数字。编号为数十。

1
2
3
4
5
6
7
8
9
ten 1
11
12
13
14
15
16
17
18
19
ten 2
21
22
...
1999

但是我知道C的功能,我无法想象怎么做。 可以用for中的许多ifs来做这件事,但不要让代码如此广泛。

第一个输出的代码是:

#include<stdio.h>

int main(void) {

    int i, j=2000;

        for(i=1;i<=j;i++)
        {
            printf("%d\n", i);

        }

    return 0;
}

很简单,我想保留它。

简单的说法:所有以0结尾的数字都应该打印“十个x”,而不是数字......

谢谢。

3 个答案:

答案 0 :(得分:3)

要查明数字n是否可以被10整除,请使用:

if ((n % 10) == 0) ...

这是模运算符,当n除以10时返回余数 - 当你这样做时,可被10整除的数字的余数为零,所有其他数字的余数为1到9(至少在非负空间是你工作的地方 - 可能对于负数不同但我不打算检查,因为它在这里不相关)。

要查找您需要使用"ten"字符串输出的号码,只需将n除以10即可。

因此,print语句将变为类似:

if ((i % 10) == 0)
    printf ("ten %d\n", i / 10);
else
    printf ("%d\n", i);

进行更改会为您提供输出:

1
2
3
4
5
6
7
8
9
ten 1
11
12
:
1988
1989
ten 199
1991
1992
1993
1994
1995
1996
1997
1998
1999
ten 200

这似乎是你所追求的。


另外还有一点,尽管有代码,你的输出似乎在1999而不是2000停止。如果这是您真正想要的,请将j更改为1999或将for语句更改为使用<而不是<=

答案 1 :(得分:1)

    #include <stdio.h>
    int main(void)
    {
      int i, j=2000;
      for( i = 1; i <= j; i++ )
      {
        if ( !i%10 ) // if i / 10 is an integer...
        {
          printf ("ten %d\n", i/10);
        } else
        {
          printf("%d\n", i);
        }
      }
      return 0;
    }

答案 2 :(得分:0)

首先,您可能想要检查IF是否可以被10整除。看这里如何做到这一点: Check if a double is evenly divisible by another double in C?

然后你可以检查它除以10的次数并打印出来