我一直在嘗試用C語言撰寫從n數到0數的減法的代碼(我的意思是以遞減的順序,比如如果n是5,那么5-4-3-2-1-0)。但我沒有得到正確的答案。 以下是我的代碼,如有錯誤,請指正。
#include<stdio.h>/span>
int main(void) {
int i, n, sum;
printf("輸入任何數字:")。
scanf("%d"/span>, &n)。
for(i=n; i>=0; i--) {
sum -= i;
}
printf("%d
", sum)。)
}
我已經做了同樣的代碼,用于從0到n個數字的加法。我得到了正確的答案,而根據這段代碼,我試著做減法,但沒有得到正確的答案。 請幫助我,謝謝你。
uj5u.com熱心網友回復:
變數sum沒有被初始化
int i, n, sum;
所以它有一個不確定的值。結果是這個陳述句
sum -= i;
引起了未定義的行為。
你最初需要將它設定為變數n的輸入值。
另外,由于變數n具有帶符號的整數型別int,所以沒有什么可以阻止用戶輸入一個負數。在這種情況下,for回圈將不會被執行。
如果我沒有理解錯的話,這個賦值
我的意思是按照遞減的順序,比如如果n是5,那么5-4-3-2-1-0)
那么你的程式可以看起來像下面這樣
如果輸入數字5,那么輸出將是
輸入任何數字。5
sum = 5
如果輸入數字-5,那么輸出將是
輸入任何數字。5
sum = 5
uj5u.com熱心網友回復:
- 總是檢查scanf的回傳值。
sum -= i沒有意義,因為它在第一次迭代時使sum為0。只需減少控制變數。- 你試圖在沒有任何需要的情況下將其過度復雜化。
int main(void)
{
int start;
do
{
printf("
輸入數字:")。
}while(scanf(" %d", &start) !=1) 。
printf("
")。)
for(int current = start; current >= 0; current--)
printf("%d%s"/span>, current, current ? ", " : "
")。)
}
https://godbolt.org/z/6bqnEr7nq
uj5u.com熱心網友回復:
第一件事是,你必須初始化你的變數和。此外--當i為0時,沒有必要進行回圈迭代,因為它只是從數字中減去0。 最后一件事--你的主函式缺少一個回傳陳述句。 這段代碼可以做到 -
#include<stdio.h>
int main(void) {
int i, n, sum = 0;
printf("輸入任何數字:")。
scanf("%d"/span>, &n)。
for(i = n; i > 0; i-) {
sum -= i;
}
printf("%d
", sum)。)
return 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328900.html
標籤:
下一篇:我如何存盤整個迭代結果?
