[英]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.