关于用结构体完成C程序

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:48:38
要求:输入十个学生的数据,包括学号姓名和三门成绩。从键盘输入数据,输出总成绩,以及最高分的学生的数据,包括学号姓名和三门成绩。要求用结构体完成。
以下是我写的。有些地方要改进,但就是不知道哪里改。比如我输入数据完毕,还要随便再打一些东西,按回车才有结果,不然一直按回车都没输出。请高手帮忙一下这只菜鸟,十分虽然不多,但亦是在下一片心意。万分感激。orz.
#include<stdio.h>
#define FORMAT "%d%s%d%d%d\n"
struct stu
{
int num;
char name[20];
int score[3];
}guy[10];

int main()
{
void print(struct stu *q,int n);
int i;
printf("please enter the datas:\n");
for(i=0;i<10;i++)
scanf(FORMAT,&guy->num,&guy->name,&guy->score[0],&guy->score[1],&guy->score[2]);

print(guy,10);

return 0;

}

void print(struct stu *q,int n)
{
struct stu *p;
struct stu *m;
int sum=0;
int max=q->score[0]+q->score[1]+q->score[2];

p=q;
m=q;

for(p=q;p<q+n;p++)
{
sum+=p->score[0]+p->score[1]+p->score[2];

刚开始学,不要着急,不要有问题就问别人,一定要自己思考,不然很难有进步
说说你程序的不足吧
1 写程序注意层次,不然,程序显得很繁琐,自己和别人都不易阅读
2 sum+=p->score[0]+p->score[1]+p->score[2];是不是多了个+号 自加也不是这样用的,呵呵
对于sum=p->score[0]+p->score[1]+p->score[2];最好使用循环,程序简洁易懂
3 C非常灵活int main() 的int可以不写,同时删掉return 0;
4 对于人数(这里是10)可以用预处理命令定义为#define size 10,在调试程序时,把10改为3,调试输入会方便很多
这些是我的一些经验,根据这些去修改你的程序吧
学编程动手时最重要的, 北大教授张铭最近重申够这个问题,努力吧!朋友
good luck