2016-06-22 2 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 ++;' внутри цикла или просто изменить эту строку 'для (столбец = 1; Col <= 10; Col ++)' в 'для (Col = 1; Col <= 10;)' –

ответ

3

Потому что, вы делаете col++дважды, когда в теле цикла, и один раз в заявлении пост-цикла.

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

и

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

Таким образом, для одной итерации, col получает приращение дважды, счетчик цикла получает в два раза.

Удалить любое из утверждений.

+0

Спасибо, помощник и извините меня за этот вопрос с нобом и другие вопросы о нобе – CrushClaw

0

Вы допустили ошибку - вам не нужно писать 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); 
    } 

    return 0; 
} 
0

Двойной col ++. Оператор цикла for for включает три выражения. Сначала вызывается один раз в начале. Обычно используется для инициализации счетчика. Вторая проверка состояния цикла. Вызывается перед каждой итерацией. Если результат выражения ложный цикл будет остановлен. Третья часть называется после каждой итерации. Обычно используется для приращения счетчика.

Если вы использовали col ++ в «for» и хотите, чтобы «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; 
    } 
Смежные вопросы