Программа чисел треугольника на C языке? - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу сделать простую программу с числами треугольников 1, 3, 6, 10,..., которая не более чем 100, я уже сделал это. но есть небольшая проблема

давайте посмотрим на мой код:

#include <stdio.h>

int main (void){
    int j=1 , k=1 , i=100 , status;

    while (k <= i){
        j = j + 1;
        k = k + j;
        while ( k < 100){

        printf (" %d\n",k);
        status = 1;
        break;
    }
    }
    if (status == 1){
    printf ("DONE!");
    }
}

output:

3
6
10
15
21
28
36
45
55
66
78
91
DONE !

Отсюда у меня есть некоторые проблемы:

  1. Я использую две While команды, потому что, когда я использую только одну While, результат будет больше, чем 100, это будет 105. Таким образом, есть способ упростить это с помощью одной while команды?
  2. Вывод не начинается с номера 1, я хочу, чтобы программа выводила данные так:
1
3
6
10
15
21
28
36
45
55
66
78
91
DONE !

но в конце, вывод всегда начинается с номера 3?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

, когда вы используете только одно время, когда k=91 так k<=100 и условие while истинно, и поэтому вы введете время, и k станет 105, и вы распечатаете его. поэтому вам нужно одно if до printf, чтобы проверить if(k<100).

и здесь, если вы инициализировали k=0 и заменили k+=j, а j++ вы также напечатаете 1.

внешний вид:

int main()
{
    int k = 1, j = 2, i = 100;
    while (k <= i) {
        printf("%d\n", k);
        k += j;
        j++;
    }
    printf("DONE!");
}
2 голосов
/ 03 апреля 2020

Ваш подход слишком сложен. Вам нужен только один l oop, промежуточная сумма и переменная для хранения следующего значения, которое будет добавлено к сумме.

Начните текущую сумму с нуля, затем добавьте 1 и напечатайте сумму, затем добавьте 2 и напечатайте сумму, затем добавьте 3 и напечатайте сумму ... продолжайте делать это до тех пор, пока сумма не станет выше 100.

Как:

#include <stdio.h>

int main(void) {
    int sum = 0;
    int nextToAdd= 1;
    while(1)
    {
        sum += nextToAdd;
        ++nextToAdd;
        if (sum > 100) break;
        printf("%d\n", sum);
    }
    return 0;
}

или, если вы предпочитаете do-while

#include <stdio.h>

int main(void) {
    int sum = 1;
    int nextToAdd = 1;
    do
    {
        printf("%d\n", sum);
        ++nextToAdd;
        sum += nextToAdd;
    } while(sum <= 100);
    return 0;
}

или, если вы предпочитаете, для-l oop

#include <stdio.h>

int main(void) {
    int sum = 1;
    for (int nextToAdd = 2; sum <= 100; ++nextToAdd)
    {
        printf("%d\n", sum);
        sum += nextToAdd;
    }
    return 0;
}
...