我有两个功能都是处理并输出学生成绩的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");
}