求救 c语言 改错题

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:33:26
在main函数中,从文本文件test3-l.dat中读出N个整型数,
调用fun函数,分别统计其中正数的个数和负数的个数;
在main函数中输出正数的个数和负数的个数。

请改正程序中的错误,使它能得出正确结果。
注意:不得增行或删行,也不得更改程序结构。

*/

#define N 20
#include <stdlib.h>
#include <stdio.h>
void fun(int *a)
{
int i,cnt=0;

for(i=0;i<N;i++)
if(a[i]>0) cnt++;
return cnt;
}

void main( )
{
FILE *fp;
int a[],i,cnt;

if((fp=fopen("test3-1.dat","r"))==NULL)
{
printf("Cannot open the file.\n");
exit(0);
}
for(i=0;i<N;i++)
fscanf(fp,"%d",a[i]);
fclose(fp);
fun(a);
printf("positive = %d\n",N-cnt);
printf("negative = %d\n",cnt);
}

#define N 20
#include <stdlib.h>
#include <stdio.h>
int fun(int *a) //返回值类型错误
{
int i,cnt=0;

for(i=0;i<N;i++)
if(a[i]>0) cnt++;
return cnt;
}

void main( )
{
FILE *fp;
int a[N],i,cnt;//定义数组错误

if((fp=fopen("test3-1.dat","r"))==NULL)
{
printf("Cannot open the file.\n");
exit(0);
}
for(i=0;i<N;i++)
fscanf(fp,"%d",&a[i]); //读取需要用指针
fclose(fp);
cnt=fun(a);//返回值
printf("positive = %d\n",N-cnt);
printf("negative = %d\n",cnt);
}