嗯,问题就出在上面。总而言之,它可以编译,但我想我的主要想法是错误的。我试图用该代码做的是:
- 我希望此人向我们提供数组的元素,他想要多少(最多 100 个元素)。
- 之后,我会检查哪些数组位置是质数。(例如:位置 2、3、5 等。不是元素本身)。
- 之后,我计算素数位置的平均值。
就是这样。有任何想法吗?请记住,我处于工程的第一阶段,所以我不是最擅长编程的。
代码如下:
#include <stdio.h>
#include <windows.h>
int main(void)
{
int k, i, j, d, v[101], sum, prim, f;
float ave;
i = 0;
while ((i < 101) && (j != 0) )
{
i++;
printf("Set the value of the element %d => ", i);
scanf("%d", &v[i]);
printf("To stop press 0 => ");
scanf("%d", &j);
}
k = 0;
prim = 1;
f = i;
sum = 0;
while (f > 2)
{
if (i % (f - 1) == 0)
{
prim = 0;
}
else
{
k++;
sum = sum + v[f];
}
f = f - 1;
}
med = sum / k;
printf("%d, %d, %d", k, soma, i);
printf("The average is => %f \n", ave);
system("pause");
}
对于那些想知道的人,这是我在正确答案中编辑后得到的:
int main(void)
{
int v[101];
int n = 0;
int k,j = 0;
int i=0;
int sum = 0;
while( i<100 )
{
i++;
printf ("Set the value of the element %d => ", i);
scanf ("%d", &v[i]);
int x,primo=1;
if (i>1){
for (x=2; x*x<=i; x++) {
if (i % x == 0) primo = 0;
}
if(primo==1)
{
sum = sum+ v[i];
n++;
}
}
printf ("To stop press 0 => ");
scanf ("%d", &j);
if(j == 0)
break;
}
float ave =(sum /n);
printf("%d, %d, %d", n,i,sum);
printf("The average is => %f \n", ave);
system("pause");
}
最佳答案
首先让我们创建一个可读的方法来测试一个数是否为质数; this answer来自另一个 SO 帖子给了我们一个很好的:
int IsPrime(int number) {
int i;
for (i=2; i*i<=number; i++) {
if (number % i == 0) return 0;
}
return 1;
}
其次,让我们清理您的代码,并计算到目前为止遇到的所有素数的运行总和。此外,我们将检查 scanf
的返回值(但我们应该 avoid scanf !)
第三,我们添加一些缩进。
int main(void)
{
int n = 0;
int i = 0;
int j = 0;
int k = 0;
int sum = 0;
while( i<101 )
{
i++;
printf ("Set the value of the element %d => ", i);
if(scanf ("%d", &k) != 1)
continue;
if(is_prime(k))
{
sum += k;
++n;
}
printf ("To stop press 0 => ");
if(scanf ("%d", &j) == 1)
if(j == 0)
break;
}
float ave = sum / (double) n;
printf("The average is => %f \n", ave);
system("pause");
}
关于c - 数组中质数的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24113548/