簡體   English   中英

為什么這個簡單的程序給我看似不正確的輸出?

[英]Why is this simple program giving me seemingly incorrect output?

這是我要分配的一個簡單程序。

  • 向用戶詢問一個數字,您可以假設該數字將為1或更大
  • 以3s計數,打印從1到用戶編號的數字; 例如最多15:1、4、7、10、13 o在一行上打印數字o另外,找到這些數字的總和並在下一行打印,在這種情況下為35
  • 在1個程序中,使用while循環求解,然后使用for循環再次求解

這是我的代碼

#include<stdio.h>

int main(){

int number;
int i = 1;
int sum = 0;


printf("Please enter a number greater than 1: ");
scanf("%d", &number);


while(i < number){
    printf("%d ", i);
    i+=3;

    sum = sum + i;
}

printf("\nThe sum of these numbers is: %d\n", sum);


    return 0;
}

這是示例輸出:

請輸入大於1:15的數字

1 4 7 10 13

這些數字的總和是:50

我一生都無法弄清楚為什么將數字(15)相加。 輸入15被加到1、4、7、10和13的總和上。在此程序中,我什么時候等於數字?

很抱歉,如果這沒有任何意義。 任何幫助表示贊賞。 我想了解我做錯了什么。 謝謝。

在將i加到總和之前,您要遞增i 如果每個數字都增加了3,那么在這種情況下,您的總錯誤將總計為15。

確保僅在每次迭代中使用完i后才遞增i

while(i < number){
    printf("%d ", i);
    sum = sum + i;

    i+=3;
}

你沒有得到50

1 + 4 + 7 + 10 + 13 + number

而是

4 + 7 + 10 + 13 + 16

如同

(1 + 3) + (4 + 3) + (7 + 3) + (10 + 3) + (13 + 3)"

要么

(1 + 4 + 7 + 10 + 13 + (3+3+3+3+3)

誤差的總和恰好等於number ,但並非來自number

只需對線求和,然后對i加3即可。

暫無
暫無

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

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