c语言问题求教
1个回答
展开全部
#define N 150
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int readdata(char *filename,int a[],int n){ //读文件数据
FILE *fp;
int i;
if ((fp=fopen(filename,"r"))==NULL){
printf("无法打开文件%s\n",filename);
exit(0);
}
for(i=0;i<n;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
double average(int a[],int n){ //平均
int sum=0,i;
for(i=0;i<n;i++) sum+=a[i];
return 1.0*sum/n;
}
double bzc(int a[],int n){ //标准差
double avg,sum=0;
int i;
avg=average(a,n);
for(i=0;i<n;i++)
sum+=(a[i]-avg)*(a[i]-avg);
return sqrt(sum/n);
}
int jigers(int a[],int n,int x){ //及格人数统计,大于等x为及格
int i,sum=0;
for(i=0;i<n;i++)
if (a[i]>=x) sum++;
return sum;
}
void savedata(char *filename,int a[],int n,int jg){ //向文件输出信息
FILE *fp;
if ((fp=fopen(filename,"w"))==NULL){
printf("无法打开文件%s\n",filename);
exit(0);
}
fprintf(fp,"平均分是%.2lf\n",average(a,n)); //计算存储平均分
fprintf(fp,"标准差是%.2lf\n",bzc(a,n)); //计算存储标准差
fprintf(fp,"及格人数是%d\n",jigers(a,n,jg)); //计算存储及格人数
fclose(fp);
}
int main(){
int a[N],jg=60; //60分以上算及格
readdata("d:\\data.txt",a,N); //读取文件记录
printf("平均分是%.2lf\n",average(a,N)); //计算显示平均分
printf("标准差是%.2lf\n",bzc(a,N)); //计算显示标准差
printf("及格人数是%d\n",jigers(a,N,jg)); //计算显示及格人数
savedata("d:\\Analysis.txt",a,N,jg); //保存信息
}
更多追问追答
追问
主函数胸为什么要int jgrs呢?
中
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询