请大侠指点一下

我有两个功能都是处理并输出学生成绩的C代码 请从各个方面分析哪个较理想
#include <stdio.h>
#include <string.h>

#define N 3//学生数目

typedef struct /*定义结构体数组*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
float score[4]; /*成绩*/
float total;//总分
float average;//平均分
} Student;

Student stu[N];

//输入学生信息
void input()
{
int i,j;

printf("请输入%d个学生的信息:\n",N);
for(i=0;i<N;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<4;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}

//输出学生信息
void output(int i)
{
int j;

printf("学生的信息如下:\n");
printf("学号:%s\n",stu[i].num);
printf("姓名:%s\n",stu[i].name);
for(j=0;j<4;j++)
{
printf("科目%d的成绩:%f\n",j+1,stu[i].score[j]);
}
printf("总分:%f\n",stu[i].total);
printf("平均分:%f\n",stu[i].average);
}

//计算总分和平均分
void process()
{
int i,j;

for(i=0;i<N;i++)
{
stu[i].total=0;
for(j=0;j<4;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/4;
}
}

//排序并输出
void sort()
{
Student tStu;
int i,j;

for(i=0;i<N;i++)
{
for(j=N-1;j>i;j--)
{
if(stu[j].total>stu[j-1].total)
{
tStu=stu[j];
stu[j]=stu[i];
stu[i]=tStu;
}
}
}
for(i=0;i<N;i++)
{
output(i);
}
}

//根据学号查找
void find(char *no)
{
int i;

for(i=0;i<N;i++)
{
if(strcmp(stu[i].num,no)==0)
{
output(i);
return;
}
}
printf("没有找到!\n");
}

void main()
{
input();
process();
sort();
find("1");
}

我晕,楼主的这个程序,是前几天,我写的啊!

http://zhidao.baidu.com/question/54455224.html

007年《C语言程序设计》实验报告题目
已知N个学生的学号、姓名和4门功课的成绩,计算:
(1) 每个学生的总分、平均分。
(2) 按总分从大到小排序,同时调整学号、姓名、4门功课成绩和平均分;输出经排序后全部学生的成绩单。
(3) 任意输入一个学生的学号,输出该学生的成绩单。
注:每一小题用一个函数完成。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-23
哈哈 金山兄 到了系统维护阶段了啊
第2个回答  2008-05-23
哪个是哪个,说清楚
第3个回答  2008-05-23
咯咯咯咯
第4个回答  2008-05-23
我郁闷!!都是什么啊!!
相似回答