【发布时间】:2021-11-29 21:06:18
【问题描述】:
我有一个程序旨在计算特定数字的素数,然后我必须将它放入一个数组中以便对这些数字进行一些数学运算;但是,我遇到了一个问题,我无法将收集到的素数放入数组中。
当前代码
#include <stdio.h>
#include "pairs.h"
#define SIZE 1000
int main(){
int n, m, count, i=0, res = 0;
char prime[SIZE];
scanf("%d %d", &n, &m);
// while(count >= 1){
// // count = getchar();
// // prime[i++] = count;
for(count = n; count >= 2; count--){
if(primed(count) == 0){
prime[i++] = count;
}
}
printf("%s",prime);
return 0;
}
int primed(int num){
int primes;
for(primes = 2; primes<=num/2; primes++){
if (num % primes != 0){
continue;
}
else{
return 1;
}
}
return 0;
}
我希望将 for 循环中收集的数字添加到数组中
【问题讨论】:
-
“无法将收集到的素数放入数组中”。这到底是什么意思?
primed是什么,因为代码中没有显示。但对于初学者来说,这是不正确的:printf("%s",prime);。prime不是字符串,不能用%s打印。 -
count = getchar();你为什么打电话给getchar?你知道那是做什么的吗?与putchar相同。 -
那么
%s怎么样?这显然是错误的。您不应该对字符串甚至字符进行操作。将数组保留为int元素,并编写一个函数循环遍历数组,分别打印每个 int 值。 -
如果它显得不礼貌,我深表歉意。但是 cmets 的空间有限。我并没有试图粗鲁,而是直截了当地强调剩余的错误和要修复的事情。我的观点是
%s是一个 ascii 字符串。但是您的数组不是字符串。所以如果你用它来检查你的结果,它可能不会正确。所以你需要先解决这个问题。 -
但是您是否将
%s更改为%d?如果我做出改变,它对我有用。见HERE。
标签: arrays c for-loop printf scanf