我想编写一个程序,用户可以在其中输入1
和100
之间的数字。然后,程序将显示该数字及其前面的所有数字,直到1
。每行只能有10个数字。所以基本上它应该像这样:
我使用了以下代码:
#include <stdio.h>
#include <conio.h>
void main(void) {
int num, counter;
counter = 1;
printf("Input a number between 1 and 100: ");
scanf("%d", &num);
printf("\n");
if (num> 1 && num < 100)
while (num > 0) {
printf("%d %d %d %d %d %d %d %d %d %d \n", num, num - 1, num - 2, num - 3, num - 4, num - 5, num - 6, num - 7, num - 8, num - 9);
num -= 10;
}
else
printf("\nInvalid value. Please enter a different number.");
getch();
}
但是最后,它仍然继续显示0
和负数。
我该如何解决?
答案 0 :(得分:2)
您的问题是线路
while(num>0)
num可能是3,大于零。但是,在您的printf语句中,您打印的数字最多为num-9,即-6。 尝试一次打印一个数字,并每次检查是否已打印所需的10个数字/行。例如,您可以使用模运算符计算除以10的余数。如果为零,则可以开始新的一行。
答案 1 :(得分:0)
while(num>=1){
printf("%d ",num--);
counter++;
if(counter==11){
counter=1;
printf("\n");
}
}