1

助けてください、私の頭は吹き飛ばされそうです

#include<stdio.h>
int main(void){
    unsigned short sum1=0;unsigned short counter=0;

    printf("Enter the number of integers you want to sum\n");scanf("%hd",&counter);
    for (unsigned int i=1;i<=counter;++i)
    { 
        printf("The i is %d and the sum is %d\n",i,sum1);
        sum1 =0;// 2 iteration sum =0;
        printf("The i is %d and the sum is %d\n",i,sum1);

        for(unsigned int j=1;j<=i;++j)
            sum1 =sum1+j;// 1 iteration sum=1;
        printf("The i is %d and the sum is %d\n\n",i,sum1);
    }
return 0;
}

今まで私が読んだ本 ネストされたループでは中かっこを配置するために使用されていましたが、この例ではそうではありません...ネストされた for ) ? 質問 2) なぜ printf() したいのに j hits error なのですか? このプログラムの仕組みを正確に説明できる人はいますか? つまり、1回目の反復、2回目の反復....ありがとう、ブラザーズ....

4

2 に答える 2

3

このコード:

for (unsigned int i=1;i<=counter;++i)
{ printf("The i is %d and the sum is %d\n",i,sum1);
sum1 =0;// 2 iteration sum =0;
printf("The i is %d and the sum is %d\n",i,sum1);
for(unsigned int j=1;j<=i;++j)
sum1 =sum1+j;// 1 iteration sum=1;
printf("The i is %d and the sum is %d\n\n",i,sum1);}

次と同等です。

for (unsigned int i=1;i<=counter;++i) { 
    printf("The i is %d and the sum is %d\n",i,sum1);
    sum1 =0;// 2 iteration sum =0;
    printf("The i is %d and the sum is %d\n",i,sum1);
    for(unsigned int j=1;j<=i;++j) {
        sum1 =sum1+j;// 1 iteration sum=1;
    }
    printf("The i is %d and the sum is %d\n\n",i,sum1);
}

これは、for-loop中かっこのない s では、次の行だけがループに含まれるためです。

最初の反復では、次のようになります。

"The i is 1 and the sum is 0"
"The i is 1 and the sum is 0"
"The i is 1 and the sum is 1" //Enters inner for-loop

2番:

"The i is 2 and the sum is 1" //Hasn't reset yet
"The i is 2 and the sum is 0" //Reset
"The i is 2 and the sum is 3" //Sum was 0, then added 1 when j was 1, 
                              //then added 2 when j was 2

ここで、 j を出力できない理由は、printfステートメントがすべて inner の外側にあるため、定義されていないfor-loopためjです:)

于 2013-09-11T18:25:19.803 に答える