请教一下数组赋值为啥一直都是0;
#include <stdio.h>#include <math.h>
int isprime(int x);
int main() {
int X = pow(10, 4), M, N, j, k, i, t = 0;
scanf("%d%", &M, &N);
int prime;
for (j = 2, k = 0; j < X; j++) {
if (isprime(j)) {
prime = j; //这一行赋值一直都是0;不知道哪里有问题
t++;
printf("%d %d %d", prime, j, k);
if (t % 10 == 0) {
printf("\n");
} else {
printf(" ");
}
}
}
// for (i = M - 1; i < N; i++) {
// printf("%d", prime);
// t++;
// if (t % 10 == 0) {
// printf("\n");
// } else {
// printf(" ");
// }
// }
// return 0;
}
int isprime(int x) {
int ret = 1, q;
if (x == 1) {
ret = 0;
} else {
for (q = 2; q < x; q++) {
if (x % q == 0) {
ret = 0;
}
}
}
return ret;
} 本帖最后由 须弥芥子 于 2022-9-13 08:02 编辑
prime = j; //这一行赋值一直都是0;不知道哪里有问题
t++;
printf("%d %d %d\n", prime, j, k-1);
这里prime = j执行结束后k自加1了,所以printf里面k要减1。 printf("%d %d %d", prime, j, k-1); 你k++的地方错了才会一直显示零
你像我这样把k++的地方改到下面那里就好了
for (j = 2, k = 0; j < X; j++) {
if (isprime(j)) {
prime = j; //这一行赋值一直都是0;不知道哪里有问题
t++;
printf("%d %d %d", prime, j, k);
if (t % 10 == 0) {
printf("\n");
} else {
printf(" ");
}
}
} 须弥芥子 发表于 2022-9-13 07:54
这里prime = j执行结束后k自加1了,所以printf里面k要减1。
明白了,大意了 gandixiwang 发表于 2022-9-13 08:02
你k++的地方错了才会一直显示零
你像我这样把k++的地方改到下面那里就好了
明白了 问题在于误用逗号表达式
j = 2, k = 0 ;//实际执行此行后 j=0 , k=0
修正:
#include <stdio.h>
#include <math.h>
int isprime(int x);
int main() {
int X = pow(10, 4), M, N, j, k, i, t = 0;
scanf("%d%", &M, &N);
int prime;
j=2;
k=0;
for (; j < X; j++) {//实际执行此行后 j=0 , k=0
if (isprime(j)) {
prime = j; //这一行赋值一直都是0;不知道哪里有问题
t++;
printf("%d %d %d", prime, j, k);
k++;
if (t % 10 == 0) {
printf("\n");
} else {
printf(" ");
}
}
}
// for (i = M - 1; i < N; i++) {
// printf("%d", prime);
// t++;
// if (t % 10 == 0) {
// printf("\n");
// } else {
// printf(" ");
// }
// }
// return 0;
}
int isprime(int x) {
int ret = 1, q;
if (x == 1) {
ret = 0;
} else {
for (q = 2; q < x; q++) {
if (x % q == 0) {
ret = 0;
}
}
}
return ret;
}
页:
[1]