如何在C中每行打印10个值(其中值按降序排列,并且仅使用while循环和if-else语句)?

时间:2018-11-27 13:14:06

标签: c loops if-statement while-loop

我想编写一个程序,用户可以在其中输入1100之间的数字。然后,程序将显示该数字及其前面的所有数字,直到1。每行只能有10个数字。所以基本上它应该像这样:


enter image description here


我使用了以下代码:


#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和负数。

enter image description here

我该如何解决?

2 个答案:

答案 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");
    }
}