2014-03-29 70 views
0

我的C代码有问题。我想写的函数是一个数组,其中包含100个数字,并打印出小于数组中数字平均值的素数。我有一个错误,我不知道为什么我的代码不工作:我的代码在c中出现了什么问题

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#define SIZE 100 

void Array123(int arr[]) { 

    int i = 0, arr[SIZE], j, count = 0; 
    float sum = 0, avg; 

    do{ 
     scanf(" %d", &arr[i]); 
     i++; 
     count++; 
     sum += arr[i]; 
    } 
    while ((arr[i] != 0) || (i < SIZE)); 

    avg = sum/count; 

    for (j = 2; j <= arr[i] - 1; j++) { 
     if (arr[i] % j == 0) { 
      break; 
     } 
    } 

    if (j == arr[i]) { 
     if (arr[i] < avg) { 
      printf("%d", arr[i]); 
     } 
    } 
} 

int main() { 
    int arr[SIZE], i, x; 
    for (i = 0; i < SIZE; i++) { 
     x = Array123(arr[SIZE]); 
     printf(" %d", x); 
    } 
} 

注意,我被允许使用数组指针没有。

的错误是:

Warning 2 warning C4047: 'function' : 'int *' differs in levels of indirection from 'int' 
Warning 3 warning C4024: 'Array123' : different types for formal and actual parameter 1 
     5 IntelliSense: argument of type "int" is incompatible with parameter of type "int *"  41 14 
Error 4 error C2120: 'void' illegal with all types  41 1 
Error 1 error C2082: redefinition of formal parameter 'arr' 
+0

您应该格式化您的代码,以便它对我们和您来说更具可读性。 –

回答

0

谢谢你,我现在没有错误,但我意识到我的代码不够好,所以我改变它变得更合理。

#define _CRT_SECURE_NO_WARNINGS 
    #include <stdio.h> 
    #define size 100 

    void PrimeNumbers(int size) 
    { 
int num,i,sum=0,count=0,arr[size],flag=0,j; 
float avg; 
do{ 

    scanf(" %d",&num); 
    if(num >0) 
    { 
     arr[i]=num; 
    i++; 
    count++; 
    sum+=num; 
    }while (i<100 && num!=0) 
     avg=sum/count; 
    for (i=0;i<count;i++) 
    { 
     for (j = 2; i < arr[i]; i++) 
     { 
    if (arr[i] % j == 0) 
    flag=1; 
    if (flag =1 && arr[i]<avg) 
     printf("the prime number that less than average\n %d ",arr[i]); 
      } 
0

Array123返回void,你正试图将其分配到一个int这是不可能的。

void Array123(int arr[]) 

... 

x = Array123(arr[SIZE]); 

2.

要传递一个数组给一个函数,你不应该[]通过它,试试这个:

Array123(arr); 

arr内的值将被Array123修改,您不会不必返回阵列。

4.

arr是一个函数参数,以及要重新声明它在该函数内部。你应该删除这个额外的声明。

0

你重新声明 “改编” 为局部变量,它覆盖的功能参数:

改变这一行:

int i=0,arr[SIZE],j,count=0; 

要这样:

int i=0,j,count=0; 
1

的主要问题是您在您的功能中重新启用arr

相关问题