2016-06-22 7 views
-2

ここに私のコードです。私の質問は、5桁の数字しか印刷しないのはなぜですか?なぜそれは10のように印刷されませんか?要素の半分だけループを繰り返す

#include<stdio.h> 
    #include<stdlib.h> 
    #include<time.h> 

    int main(){ 

    int r, col; 

    srand((unsigned)time(NULL)); 

    for (col=1; col<=10; col++){ 

    r = rand() % 11; 
    printf("%d\n", r); 
    col++; 

    } 
    return 0; 
    } 
+4

ループの中で 'col ++;'を省略するか、 'for(col = 1; col <= 10; col ++)'を 'for(col = 1; col <= 10;)' –

答えて

3

、一度ループ本体では、一度ポストループ文で、col++二回をやっているので。

for (col=1; col<=10; col++) //...................(i) 
        ^^^^^^^ 

r = rand() % 11; 
printf("%d\n", r); 
col++;      //.....................(ii) 
^^^^^ 

ので、1回の反復のために、colは二回、反復回数が半分ますをインクリメントます。

いずれかのステートメントを削除します。

+0

おかげで、このnoobの質問と来る他のnoob質問のための私を失礼します – CrushClaw

0

あなたは間違いをしました。col++を2度書く必要はありません!

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 

int main(){ 

    int r, col; 

    srand((unsigned)time(NULL)); 

    for (col=1; col<=10; col++){ 

     r = rand() % 11; 
     printf("%d\n", r); 
    } 

    return 0; 
} 
0

double col ++。 "for"ループ文には3つの式が含まれます。 最初は初めに一度呼び出されます。通常、カウンタの初期化に使用されます。 2番目はループ継続条件チェックです。すべての反復の前に呼び出されます。式の結果がfalseの場合、ループが停止します。 繰り返しごとに3番目の部分が呼び出されます。通常、カウンタのインクリメントに使用されます。

"for"でcol ++を使用し、 "col"を1回ずつインクリメントする場合は、ループ本体でcol ++を実行しないでください。

#include<stdio.h> 
    #include<stdlib.h> 
    #include<time.h> 

    int main(){ 

    int r, col; 

    srand((unsigned)time(NULL)); 

    for (col=1; col<=10; col++){ 

    r = rand() % 11; 
    printf("%d\n", r); 
    //col++; 

    } 
    return 0; 
    } 
関連する問題