当前位置: 代码迷 >> C语言 >> [求助]一个统计学生成绩的程序
  详细解决方案

[求助]一个统计学生成绩的程序

热度:437   发布时间:2007-08-24 21:55:48.0
[求助]一个统计学生成绩的程序
要求是
有10个学生,每个学生的数据包括学号,姓名,5门课的成绩,总成绩,平均成绩和名次。学生的学号,姓名,各门课的成绩由键盘输入,经处理后输出。程序由main,输入函数input(包括计算总成绩和平均成绩),计算名次函数fun,和打印函数print组成。
我写了一个,找不到哪里出错了。
struct student
{
char name[20];
char num[10];
float scor[5];
float sum;
float aver;
int mingci;
};
main()
{
struct student stu[10];
void input();
int fun();
int print();
input(stu);
fun(stu);
print(stu);
}
void input(struct student stu[])
{
int i,j;
for(i=0;i<3;i++)
{
printf("please input name and num:\n");
gets(stu[i].name);
scanf("%s",stu[i].num);
printf("please input the score:\n");
for(j=0,stu[i].sum=0;j<5;j++)
{
scanf("%f",&stu[i].scor[j]);
stu[i].sum+=stu[i].scor[j];
}
stu[i].ever=stu[i].sum/5;
if(i!=2)printf("over,next\n");

}
}
int fun(struct student stu[])
{
int i,j,m;
for(i=0;i<3;i++)
{
for(j=0,m=0;j<10;j++)
{
if(i!=j&&stu[i].sum>stu[j].sum)m++;
else continue;
}
stu[i].mingci=10-m;
}
}
int print(struct student stu[])
{
int i;
for(i=0;i<10;i++)
{
printf("%s\t%s\n",stu[i].name,stu[i].num);
printf("%f,%f,%f,%f,%f\n",stu[i].scor[0],stu[i].scor[1],stu[i].scor[2],stu[i].scor[3],stu[i].scor[4]);
printf("%f,%f\n",stu[i].sum,stu[i].ever);
printf("%d",stu[i].mingci);
}
}
搜索更多相关的解决方案: 学生  函数  学号  input  

----------------解决方案--------------------------------------------------------
先说我第一眼的错
没有用头文件
没有对函数声明
请不要用voi main()
具体程序未看,我也要做我的程序了
----------------解决方案--------------------------------------------------------
以下是引用栖柏在2007-8-24 21:58:04的发言:
先说我第一眼的错
没有用头文件
没有对函数声明
请不要用voi main()
具体程序未看,我也要做我的程序了

加上头文件了
原来的程序里面有函数声明啊


----------------解决方案--------------------------------------------------------
把main()写在所有函数后不用声明,看来我以后出来当老师,专带你们
----------------解决方案--------------------------------------------------------
以下是引用栖柏在2007-8-24 22:05:58的发言:
把main()写在所有函数后不用声明,看来我以后出来当老师,专带你们

那我这个到底哪里错了嘛


----------------解决方案--------------------------------------------------------
你main写在哪,把main函数放到最后去,如果再有什么问题,看看书好么?这是最基础了,除了我,回答你的甚少呀
----------------解决方案--------------------------------------------------------
以下是引用栖柏在2007-8-24 22:11:12的发言:
你main写在哪,把main函数放到最后去,如果再有什么问题,看看书好么?这是最基础了,除了我,回答你的甚少呀

改了,现在的是这样的
#include "stdio.h"
struct student
{
char name[20];
char num[10];
float scor[5];
float sum;
float ever;
int ming;
};
void input(struct student stu[])
{
int i,j;
for(i=0;i<10;i++)
{
printf("please input name and num:\n");
gets(stu[i].name);
scanf("%s",stu[i].num);
printf("please input the score:\n");
for(j=0,stu[i].sum=0;j<5;j++)
{
scanf("%f",&stu[i].scor[j]);
stu[i].sum+=stu[i].scor[j];
}
stu[i].ever=stu[i].sum/5;
if(i!=2)printf("over,next\n");

}
}
int fun(struct student stu[])
{
int i,j,m;
for(i=0;i<10;i++)
{
for(j=0,m=0;j<10;j++)
{
if(i!=j&&stu[i].sum>stu[j].sum)m++;
else continue;
}
stu[i].ming=10-m;
}
}
int print(struct student stu[])
{
int i;
for(i=0;i<10;i++)
{
printf("%s\t%s\n",stu[i].name,stu[i].num);
printf("%f,%f,%f,%f,%f\n",stu[i].scor[0],stu[i].scor[1],stu[i].scor[2],stu[i].scor[3],stu[i].scor[4]);
printf("%f,%f\n",stu[i].sum,stu[i].ever);
printf("%d",stu[i].ming);
}
}

main()
{
struct student stu[3];
input(stu);
fun(stu);
print(stu);
}
毛病就是输入第一个人的数据以后,再输第二个的时候就只能输入到姓名,之后程序就结束了。


----------------解决方案--------------------------------------------------------

最后可行更改结果
#include "stdio.h"
struct student
{
char name[10];
char num[10];
float scor[5];
float sum;
float ever;
int mingci;
};
void input(struct student stu[])
{
int i,j;
for(i=0;i<10;i++)
{
printf("please input name :\n");
fgets(stu[i].name,10,stdin);
printf("please input num :\n");
fflush(stdin);
fgets(stu[i].num,10,stdin);

printf("please input the score:\n");
for(j=0,stu[i].sum=0;j<5;j++)
{
scanf("%f",&stu[i].scor[j]);
stu[i].sum+=stu[i].scor[j];
}
fflush(stdin);
stu[i].ever=stu[i].sum/5;
if(i!=2)printf("over,next\n");
}
}
void fun(struct student stu[])
{
int i,j,m;
for(i=0;i<10;i++)
{
for(j=0,m=0;j<3;j++)
{
if(i!=j&&stu[i].sum>stu[j].sum)m++;
else continue;
}
stu[i].mingci=10-m;
}
}
void print(struct student stu[])
{
int i;
for(i=0;i<10;i++)
{
printf("%s\t%s\n",stu[i].name,stu[i].num);
printf("%4f,%4f,%f,%4f,%4f\n",stu[i].scor[0],stu[i].scor[1],stu[i].scor[2],stu[i].scor[3],stu[i].scor[4]);
printf("%4f,%4f\n",stu[i].sum,stu[i].ever);
printf("%d\n",stu[i].mingci);
}
}

main()
{
struct student stu[10];
input(stu);
fun(stu);
print(stu);
}


----------------解决方案--------------------------------------------------------
你看看我那程序怎么样,我刚发的原创作品,可能对你有用
----------------解决方案--------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=165252
----------------解决方案--------------------------------------------------------
  相关解决方案