标题:[求助]一个统计学生成绩的程序
取消只看楼主
硬度为7
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-12
 问题点数:0 回复次数:4 
[求助]一个统计学生成绩的程序
要求是
有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 
2007-08-24 21:55
硬度为7
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-12
得分:0 
以下是引用栖柏在2007-8-24 21:58:04的发言:
先说我第一眼的错
没有用头文件
没有对函数声明
请不要用voi main()
具体程序未看,我也要做我的程序了

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

2007-08-24 22:03
硬度为7
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-12
得分:0 
以下是引用栖柏在2007-8-24 22:05:58的发言:
把main()写在所有函数后不用声明,看来我以后出来当老师,专带你们

那我这个到底哪里错了嘛

2007-08-24 22:08
硬度为7
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-12
得分:0 
以下是引用栖柏在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);
}
毛病就是输入第一个人的数据以后,再输第二个的时候就只能输入到姓名,之后程序就结束了。

2007-08-24 22:15
硬度为7
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-12
得分:0 

最后可行更改结果
#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);
}

2007-08-24 23:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-165235-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.931128 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved