问题描述
- 统计学生成绩的c,编译没报错,运行错误
-
#include
/*这是一个查询学生成绩的程序,查询数学,英语,语文,计算并算出总成绩*/
/*首先,显示输入学生人数,然后显示输入各科成绩,最后按照学号排序输出各科
成绩。最后计算并显示出各科成绩的平均值,最大值,最小值*/
/*在main函数中既有printf1函数,scanf函数,printf2函数,arg函数,min函数
max函数*/
void input(double s[][4],int n);
void output(double s[][4],int n);
double max(double s[][4],int n,int i);double min(double s[][4],int n,int i);
double avg(double s[][4],int n,int i);
int main()
{
int i,number;
double grade[100][4];
char pro[4][10]={"数学","英语","语文","总成绩"};
printf("请输入学生的人数:") ;
scanf("%d",&number);
input(grade,number);
output(grade,number);
for(i=0;i<=4;++i)
{
printf("%s最高成绩为%.2f",pro[i],max(grade,number,i));
printf("%s最低成绩为%.2f",min(grade,number,i));
printf("%s平均成绩为%.2f",avg(grade,number,i));
printf("n");
}
return 0;
}void input(double s[][4],int n)
{
printf("输入学生的成绩按照(高数,英语,c语言的次序输入)n");
/*转义字符*/
int i;
for(i=0;i<n;i++)
{
scanf("%1f %1f %1f",&s[i][0],&s[i][1],s[i][2]);
s[i][3]=s[i][2]+s[i][1]+s[i][0];
}
}
void output(double s[][4],int n)
{
printf("输入的学生成绩为:n");
printf("学号t高数t英语tc语言t总分n");
int i;
for(i=0;i<n;i++)
{
printf("%dt%.1lft%.1lft%.1lft%.1lfn",i,s[i][0],s[i][1],s[i][2],s[i][3]);
}
}
double max(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m<s[i][j])
m=s[i][j];
return m;
}
double min(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m+s[i][j])
m=s[i][j];
return m;
}
double avg(double s[][4],int n,int j)
{
double sum= s[0][j];
int i;
for(i=1;i<n;i++)
sum+=s[i][j];
return sum/n;
}
解决方案
错误太多了,直接给你修改好了。
#include<stdio.h>
/*这是一个查询学生成绩的程序,查询数学,英语,语文,计算并算出总成绩*/
/*首先,显示输入学生人数,然后显示输入各科成绩,最后按照学号排序输出各科
成绩。最后计算并显示出各科成绩的平均值,最大值,最小值*/
/*在main函数中既有printf1函数,scanf函数,printf2函数,arg函数,min函数
max函数*/
void input(double s[][4],int n);
void output(double s[][4],int n);
double max(double s[][4],int n,int i);
double min(double s[][4],int n,int i);
double avg(double s[][4],int n,int i);
int main()
{
int i,number;
double grade[100][4];
char pro[4][10]={"数学","英语","语文","总成绩"};
printf("请输入学生的人数:") ;
scanf("%d",&number);
input(grade,number);
output(grade,number);
for(i=0;i<4;++i)
{
printf("%s最高成绩为%.2f",pro[i],max(grade,number,i));
printf(" %s最低成绩为%.2f",pro[i],min(grade,number,i));
printf(" %s平均成绩为%.2f",pro[i],avg(grade,number,i));
printf("n");
}
return 0;
}
void input(double s[][4],int n)
{
printf("输入学生的成绩按照(高数,英语,c语言的次序输入)n");
/*转义字符*/
int i;
for(i=0;i<n;i++)
{
scanf("%lf %lf %lf",&s[i][0],&s[i][1],&s[i][2]);
s[i][3]=s[i][2]+s[i][1]+s[i][0];
}
}
void output(double s[][4],int n)
{
printf("输入的学生成绩为:n");
printf("学号t高数t英语tc语言t总分n");
int i;
for(i=0;i<n;i++)
{
printf("%dt%.1lft%.1lft%.1lft%.1lfn",i,s[i][0],s[i][1],s[i][2],s[i][3]);
}
}
double max(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m<s[i][j])
m=s[i][j];
return m;
}
double min(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m>s[i][j])
m=s[i][j];
return m;
}
double avg(double s[][4],int n,int j)
{
double sum= s[0][j];
int i;
for(i=1;i<n;i++)
sum+=s[i][j];
return sum/(double)n;
}
解决方案二:
printf("%s最高成绩为%.2f",**pro[i]**,max(grade,number,i));
printf("%s最低成绩为%.2f",min(grade,number,i)); //这里姓名的参数呢???
printf("%s平均成绩为%.2f",avg(grade,number,i)); //一样的道理
解决方案三:
给你个建议,可以学一下gdb调试
解决方案四:
给你个建议,可以学一下gdb调试
解决方案五:
void input(double s[][4],int n);
void output(double s[][4],int n);
double max(double s[][4],int n,int i);
double min(double s[][4],int n,int i);
double avg(double s[][4],int n,int i);
int main()
{
int i,number;
double grade[100][4] = {0.0};
char pro[4][10]={"数学","英语","语文","总成绩"};
printf("请输入学生的人数:") ;
scanf("%d",&number);
input(grade,number);
output(grade,number);
for(i=0;i<=4;++i)
{
printf ("%dn",i);
printf("%s最高成绩为%.2f",pro[i],max(grade,number,i));
printf("%s最低成绩为%.2f",pro[i],min(grade,number,i));
printf("%s平均成绩为%.2f",pro[i],avg(grade,number,i));
printf("n");
}
return 0;
}
void input(double s[][4],int n)
{
printf("输入学生的成绩按照(高数,英语,c语言的次序输入)n");
/*转义字符*/
int i;
for(i=0;i<n;i++)
{
scanf("%lf %lf %lf",&s[i][0],&s[i][1],&s[i][2]);
s[i][3]=s[i][2]+s[i][1]+s[i][0];
}
}
void output(double s[][4],int n)
{
printf("输入的学生成绩为:n");
printf("学号t高数t英语tc语言t总分n");
int i;
for(i=0;i<n;i++)
{
printf("%dt%.1lft%.1lft%.1lft%.1lfn",i,s[i][0],s[i][1],s[i][2],s[i][3]);
}
}
double max(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m<s[i][j])
m=s[i][j];
return m;
}
double min(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m+s[i][j])
m=s[i][j];
return m;
}
double avg(double s[][4],int n,int j)
{
double sum= s[0][j];
int i;
for(i=1;i<n;i++)
sum+=s[i][j];
return sum/n;
}