c - 数组中质数的平均值

标签 c

嗯,问题就出在上面。总而言之,它可以编译,但我想我的主要想法是错误的。我试图用该代码做的是:

  • 我希望此人向我们提供数组的元素,他想要多少(最多 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/

相关文章:

c - 输入时跳过指令

c - 算术类型的合格版本

c# - 在第一次使用之前声明变量有什么缺点?

c - 为什么这个工具不打印字符串?

c - 用 C 列出环境变量

c - 餐厅模拟

C x 的最低有效字节中的任何位等于 1

iOS CFSocket 和 C 套接字

c - 使用 CMake 获取链接错误

c - 如何通过输入一次 q 字符而不是两次来退出程序?