这是我的代码,我需要先说1-10个数字,然后打印它们是哪些。它得到了正确的数量,但不是打印等于1-10的数字,而是打印前10个数字。
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main () {
int i;
int br = 0, brr = 0, brrr = 0, br1 = 0;
int polje[50];
srand(time(NULL));
for(i = 0; i < 50; i++) {
polje[i] = rand() % 30 + 1;
printf("%d ", polje[i]);
}
printf("\n");
for(i = 0; i < 50; i++) {
if(polje[i] >= 1 && polje[i] <= 10)
br++;
}
printf("Brojevi od 1 do 10 pojavljuju se %d puta a to su ", br);
do {
for(i = 0; i < 10; i++)
printf("%d ", polje[i]);
} while (polje[i] >= 1 && polje[i] <= 10);
return 0;
}
答案 0 :(得分:1)
...然后打印出哪些
如果您需要按照polje数组中显示的顺序打印数字:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main () {
int i;
int br = 0, brr = 0, brrr = 0, br1 = 0;
int polje[50];
srand(time(NULL));
for(i = 0; i < 50; i++) {
polje[i] = rand() % 30 + 1;
printf("%d ", polje[i]);
}
printf("\n");
for(i = 0; i < 50; i++) {
if(polje[i] >= 1 && polje[i] <= 10)
br++;
}
printf("Brojevi od 1 do 10 pojavljuju se %d puta a to su ", br);
// changed from here:
for(i = 0; i < 50; i++) {
if(polje[i] >= 1 && polje[i] <= 10)
printf( "%d ", polje[i] );
}
return 0;
}
如果您需要在polje数组中打印其索引(位置):
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main () {
int i;
int br = 0, brr = 0, brrr = 0, br1 = 0;
int polje[50];
srand(time(NULL));
for(i = 0; i < 50; i++) {
polje[i] = rand() % 30 + 1;
printf("%d ", polje[i]);
}
printf("\n");
for(i = 0; i < 50; i++) {
if(polje[i] >= 1 && polje[i] <= 10)
br++;
}
printf("Brojevi od 1 do 10 pojavljuju se %d puta a to su ", br);
// changed from here:
for(i = 0; i < 50; i++) {
if(polje[i] >= 1 && polje[i] <= 10)
printf( "%d ", i );
}
return 0;
}
答案 1 :(得分:0)
我认为这是您正在寻找的代码。我也拿出了do-while循环。如果polje[10]
介于1到10之间,它会导致无限循环,因为到测试条件时i
将永远是10。
for(i = 0; i < 50; i++) // changed it from 10 to 50
if((polje[i] >= 1 && polje[i] <= 10)) // if statement
printf("%d ", polje[i]);
答案 2 :(得分:0)
如果您想打印1到10之间的数字,那么这是您的代码的更正版本:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main () {
int i;
int br = 0, brr = 0, brrr = 0, br1 = 0;
int polje[50];
srand(time(NULL));
for(i = 0; i < 50; i++) {
polje[i] = rand() % 30 + 1;
printf("%d ", polje[i]);
}
printf("\n");
for(i = 0; i < 50; i++) {
if(polje[i] >= 1 && polje[i] <= 10)
br++;
}
printf("\nBrojevi od 1 do 10 pojavljuju se %d puta a to su \n", br);
//Change the loop from do-while to for and upto 50 iteration instead 10.
for(i = 0; i < 50; i++)
if(polje[i] >= 1 && polje[i] <= 10)
printf("%d ", polje[i]);
return 0;
}
更改:
- 替换
do {
for(i = 0; i < 10; i++)
printf("%d ", polje[i]);
} while (polje[i] >= 1 && polje[i] <= 10);
到
for(i = 0; i < 50; i++)
if(polje[i] >= 1 && polje[i] <= 10)
printf("%d ", polje[i]);
无需在for loop
内嵌套while loop
。
- 更改
for(i = 0; i < 10; i++)
到
for(i = 0; i < 50; i++)
因为您必须在阵列中打印1到10之间的所有数字,而不仅仅是前10个数字在1到10之间(根据我的理解)。