也是一道C语言作业题~~简单的~~速度

有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程的成绩),计算处平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。
大哥,知道你方法多,
但是我就要一种,
还是编好的那种,,,
帮帮忙;
额,老师啊 ~
那你早点休息,
我再等等,没有好的答案就只有等你有空在帮我讲解了--#

应用以下不同的方法,对学生的成绩进行处理。根据不同的方法的难度和采用方法的种类评定成绩。选方法1、2、3,至少要完成两种算法的程序编写。方法4、5实现其中一个就可以了。

方法1:数组+排序
1. 定义一个数组a[11],用以存放学生的成绩。
2. 从键盘输入10个学生成绩
3. 采用冒泡法,将学生成绩按照从高到低进行排序,显示排序后的结果。
4. 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组,显示插入后的结果。
5. 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。显示反序后的结果。
建议:每完成一步程序,运行正确后再做下一步。

方法2:函数+排序
1. 在函数中进行10个学生成绩从高到低排名 sort1(int a[]),显示结果。
2. 改进第一步的函数为sort2(int a[], int n),将数组中前n个学生成绩从进行高到低的排名,显示结果。
3. 改进第二步的函数为sort3(int a[], int n, char style),将n个学生成绩排序,排序方式根据函数的style参数进行,当style为 'a' 时按升序排序,style为 'd' 按降序排序。分别显示升序与降序结果。
4. 编写函数,insert(int a[], int x),将一个学生成绩x按照排序规律插入原学生成绩数组,显示插入后的结果。
建议:为方便第4步插入一个成绩,定义数组时应该有11个元素。在主函数main()中,调用各函数。

方法3:指针+排序+函数
1. 定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现。
2. 将数组stu[10]的内容输出到屏幕上,要求用指针实现。
3. 将成绩数组按照从高到低进行排序,要求用指针实现。
4. 将第三步内容放在函数中实现,在主函数main()中调用实现排序,用指针实现,输出排序后的成绩单。
建议:为方便调试程序,建议成绩先定义在数组。实现排序功能后,再改成从键盘输入成绩。

方法4:结构数组+排序
1. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩。
2. 从键盘输入10个学生的以上内容。
3. 输出各门课程成绩最高的学生的学号、姓名、以及该门课程的成绩
4. 输出三门课程的平均分数最高的学生的学号、姓名及其平均分
5. 将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:

Number name math Chinese English average
103 zhang 90 90 100 95
101 li 90 80 70 80

建议:为方便调试程序,建议各功能分别设计成函数来实现。成绩数据先定义在数组中,实现排序功能后,再改成从键盘输入成绩。或者设计两个函数,分别用于定义数组数据和从键盘输入数组数据。

方法5:文件+结构+排序
1. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩
2. 从键盘输入10个学生的学号,姓名及三门课的成绩,存入文件stud.dat。关闭文件。
3. 打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。
4. 打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.dat中。
5. 从studsort.dat 文件中读取第2,4,6,8,10个学生的数据。
建议:为方便调试程序,建议各功能分别设计成函数来实现。先将成绩数据定义在数组当中,实现排序及保存文件功能后,再改写程序从键盘输入成绩等数据。或者设计两个函数,分别用于定义数组数据和从键盘输入数组数据,然后在主函数main()当中调用操作。

呃,你要知道,现在可是星期4.作为一个电脑老师,我……明天还要监考的说……(中考!)

乖……听话……这东西不能只靠别人,得自己慢慢琢磨!are you 明白?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-19
你7级了 怎么还这么垃圾呢?
#include<stdio.h>
#include<string.h>
#define N 2 //学生人数
struct stu{
char number[12];
char name[15];
float s[3];
};
void Account(struct stu * p,float aver[])
{
int i;
for(i=0;i<N;i++)
{
p[i].s[3]= p[i].s[0] + p[i].s[1] + p[i].s[2];
aver[i]=(float)(p[i].s[3]/3.0);
}
}
void main()
{
FILE *fp;
int i;
struct stu t[N],* p=t;
float aver[N];
fp=fopen("stud.txt","w");
for(i=0;i<N;i++)
{
puts("输入学号:\n");
scanf("%s",p[i].number);
puts("输入姓名:\n");
scanf("%s",p[i].name);
puts("输入成绩1:\n");
scanf("%f",&p[i].s[0]);
puts("输入成绩2:\n");
scanf("%f",&p[i].s[1]);
puts("输入成绩3:\n");
scanf("%f",&p[i].s[2]);

}
Account(p,aver);
for(i=0;i<N;i++)
{

fprintf(fp,"%s %s ",p[i].number,p[i].name);
fprintf(fp,"%.2f %.2f %.2f %.2f\n",t[i].s[0],t[i].s[1],t[i].s[2],aver[i]);

}
fclose(fp);
}本回答被提问者采纳
第2个回答  2008-06-19
#include "stdio.h"
#include "conio.h"
struct student
{
char num[6];
char name[8];
int score[3];
float avr;
}stu[5];
main()
{
int i,j,sum;
FILE *fp;
/*input*/
for(i=0;i<5;i++)
{
printf("\n please input No. %d score:\n",i);
printf("stuNo:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
for(j=0;j<3;j++)
{
printf("score %d.",j+1);
scanf("%d",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].avr=sum/3.0;
}
fp=fopen("stud","w");
for(i=0;i<5;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
getch();
}
第3个回答  2008-06-19
我刚给你写完,一提交,网页出错了,哎,郁闷~~
你要是能等等,明天11点前再给你写一个.
我们10.30熄灯.