我很困惑地搜索1到1000之间的所有素数。我正在尝试这样做并且每行打印13个。我的代码适用于前5个数字,然后结束。这是我到目前为止,我目前的输出是12357.任何想法是什么错?提前谢谢!
void removenonprimes(int d, int ary[]) {
int i;
int h = 0;
for (i = 0; i < sizeof(ary); i++) {
h = ary[i];
if (h % d == 0 || h == d) {
ary[i] = 0;
}
}
}
void prnt(int ary[]) {
int i;
int holder;
int count = 0;
for (i = 0; i < sizeof(ary); i++) {
if (i > 1) {
removenonprimes(i, ary);
holder = ary[i];
//case for when number is not 13th in its line
if (holder != 0 && count != 13) {
printf("%d", holder);
count++;
}
//case for when number is 13th in its line
else if (holder != 0 && count == 13) {
printf("%d\n", holder);
count = 0;
}
} else {
printf(" %d", ary[i]);
}
}
}
答案 0 :(得分:2)
您无法检查sizeof(ary)
,因为sizeof(ary)
返回数组指针的大小,而不是数组的大小。
您需要将大小(1000)作为参数传递给函数,或使用全局常量。
void prnt(int ary[], arySize){
...
for(i = 0; i < ary; i++){
并将其称为
prnt(nums, 1000);
你需要为你的removenonprimes功能做类似的事情。
答案 1 :(得分:0)
我相信第1点会解决你的问题,你应该看一下数组的长度。
答案 2 :(得分:0)
确定数组中元素的数量:
int n = sizeof(ary) / sizeof(int);
for(i = 0; i < n; i++)