簡體   English   中英

C語言的三角數程序?

[英]Triangle number program in C language?

我想做一個簡單的三角形數程序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 output 將大於100它將是105 那么有一種方法可以通過使用一個while命令來簡化這一點嗎?
  2. Output 不以數字1開頭,我想讓程序輸出如下:
1
3
6
10
15
21
28
36
45
55
66
78
91
DONE !

但最后,output 總是以數字3開頭?

你的方法太復雜了。 您只需要一個循環、一個運行總和和一個變量來保存要添加到總和的下一個值。

從零開始運行總和,然后加 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;
}

或者如果您更喜歡 for 循環

#include <stdio.h>

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

當你只使用一個 while 時,當k=91所以k<=100並且while的條件為真,所以你將輸入 while, k將變為105 ,你將打印它。 所以你需要一個ifprintf之前檢查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!");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM