Как вывести 10 значений на строку в C, где значения расположены в порядке убывания и используются только в циклах while и if-else-операторов? - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу написать программу, в которой пользователь может ввести число от 1 до 100.Затем программа отобразит этот номер со всеми предыдущими номерами до 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 голосов
/ 27 ноября 2018
while(num>=1){
    printf("%d ",num--);
    counter++;
    if(counter==11){
        counter=1;
        printf("\n");
    }
}
0 голосов
/ 27 ноября 2018

Ваша проблема в строке

while(num>0)

num может быть 3, что больше нуля.Тем не менее, в вашем выражении printf вы печатаете числа до числа-9, которое будет равно -6.Попробуйте печатать по одному номеру за раз и каждый раз проверять, напечатали ли вы нужные 10 цифр / строку.Вы можете (например) использовать оператор по модулю для вычисления остатка, если он разделен на 10. Если это ноль, вы можете начать новую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...