我正在嘗試使用 for 回圈生成 1-5 的數字并顯示它們的總和。我的目標是有一個看起來像這樣的輸出:
1 2 3 4 5 = 15
但相反,我得到了輸出:
1 2 3 4 5 = 15
#include <stdio.h>
void main()
{
int a, sum = 0;
for (a = 1; a <= 5; a )
{
printf(" \t%d\t",a);
sum = sum a;
}
printf("=\t%d", sum);
}
uj5u.com熱心網友回復:
每當輸出由某個值分隔的串列時,就會經常遇到這種情況。問題是您有 5 個值要輸出,但只有 4 個分隔符。如果您沒有做任何特別的事情,那么您將輸出 5 個分隔符,這正是您的示例中發生的情況。即使你移動隔板后你的價值,你仍然有太多了。
我更喜歡這樣做的方式是:
for (a = 1; a <= 5; a)
{
if (a > 1) printf("\t \t");
printf("%d", a);
sum = a;
}
與在回圈外輸出一些值相比,我更喜歡這種方法的原因是因為您輸出的東西通常更復雜,可能涉及額外的計算或函式呼叫,而且我不喜歡復制該代碼。
所以,如果我知道我將要輸出其他東西,我只輸出一個分隔符。這意味著,為除第一次之外的每個回圈迭代輸出一個分隔符。
我也喜歡做前綴樣式,因為通常回圈中第一項的條件比最后一項的條件更簡單。它還與涉及標志的不同方法兼容:
int first = 1;
for (a = 1; a <= 5; a)
{
if (!first) printf("\t \t");
first = 0;
printf("%d", a);
sum = a;
}
還有許多其他方式您會看到這種模式發生。并且可能有各種形式的優化它會降低可讀性。但這種方法簡單易行。
uj5u.com熱心網友回復:
您可以采用指標型別char并為其分配一個空字串作為第一次迭代的分隔符,并在列印第一個數字后將分隔符字串分配給指標,以便在進一步迭代中在兩個數字之間列印。
執行:
#include <stdio.h>
int main (void) {
int a, sum = 0;
char * str = "";
for (a = 1; a <= 5; a ) {
printf("%s%d\t", str, a);
sum = sum a;
str = " \t";
}
printf("=\t%d\n", sum);
return 0;
}
輸出:
# ./a.out
1 2 3 4 5 = 15
額外的:
- 使用
void作為回傳型別main()的功能是不按標準。main()函式的回傳型別應該是int.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387304.html
