以下代码:
#include <stdio.h>
int izbaciSveProste(int n, int x[], int y[])
{
int i;
int flag=0;
for(i=2; i<n/2; i++)
{
if(n%i ==0)
{
flag =1;
break;
}
}
if(flag==1)
return 0;
else
return 1;
}
int main()
{
int i,j,n,x[100],y[100];
printf("Koliko elemenata zelite u polju?\n");
scanf("%d", &n);
printf("Enter elements in array:- ");
for(i=0;i<n;i++)
{
scanf("%d",&x[i]);
}
int len = sizeof(x)/sizeof(x[0]);
for(i=0; i<len; i++)
{
if(izbaciSveProste(x[i]))
{
for(j=i; j<len; j++)
{
x[j] = x[j+1];
}
i--;
len--;
}
}
printf("Elementi nakon brisanja su:\n");
for(i=0; i<len; i++)
printf("%d\n",y[i]);
printf("\n");
return 0;
}
该程序的目的是删除具有n个元素的数组x []中的所有素数,其余元素应重写为y []数组并最后显示y []中的元素数。我相信函数正常,并且在main()中存在错误,特别是在存储y []时。
答案 0 :(得分:2)
您的函数原型具有3个参数:
int izbaciSveProste(int n, int x[], int y[])
调用函数时,仅提供1:
if(izbaciSveProste(x[i]))
编译器希望获得全部3。
由于您的函数甚至都没有触及2个数组参数,因此您可以简单地将它们从函数定义中删除,并且只使用1个整数。
另一个问题:
您在循环中打印y[i]
,但从未为该数组分配任何值。
答案 1 :(得分:2)
您的函数int izbaciSveProste(int n, int x[], int y[])
需要三个参数。您的代码izbaciSveProste(x[i]
传递了一个参数。这还不够。编译器通过错误消息告诉您该事实:
错误:函数'izbaciSveProste'的参数太少