输入50个学生C语言成绩,完成以下操作,

(1)求及格学生成绩的平均值
(2)查找成绩为98分的学生
(3)把所有成绩按从小到大重放
(4)按折半查找法查找65分的成绩出现的次数
(5)插入一个成绩为72分的成绩,使之仍有序
(6)删除所有成绩为59分的数据,输出剩下的所有数据
(7)把所有剩下的数据数颠倒重放(只能借助一个单元)
(8)把后10个数据平移到开头(只能借助一个单元)
请大家帮帮忙,五天后我们就得交作业,不交期末不及格,小妹在此求大家了.有力的出力,不会的学长学姐帮忙问问朋友.在此静候佳音

/*求及格的学生的平均成*/
float getAverage(float *score){/*传入50个成绩的首地址*/
int i,sum,num=0;
for(i=0;i<50;i++)
if(score>=60){
sum+=score[i];
num+=1;
}
return sum/=num;/*返回平均成绩*/
}

/*找98分的同学*/
int find98(float *score){
int i;
for(i=0;i<50;i++)
if(score[i]==98)
return i;/*返回成绩为98的数组下标*/
}

/*选择法排序*/
void sort(float *score){
int i,j,k;
for(i=50-1;i>=1;i--){
k=0;
for(j=1;j<=i;j++)
if(score[j]<score[k])k=j;
if(k!=i){
int temp;
temp=score[i];
score[i]=score[k];
score[k]=temp;
}
}
}
就到这儿吧,我累了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-12-02
前段时间正好做了这个题目,还在U盘上呢,拷给你吧,不过你给的分太低了,加点给我哦.(大致的给你吧,可以进行输入,排序,插入,删除,不足的自己去改了.很容易
---------------------------------------------------
#include<stdio.h>
struct StuInfo
{
int StuID;
char name[20];
float score1;
float score2;
float score3;
float avg_score;
}Stu[50];
struct StuInfo input_StuInfo()
{
struct StuInfo Student,*p;
p=&Student;
printf("学号: ");
scanf("%d",&p->StuID);
printf("姓名: ");
fflush(stdin);
gets(p->name);
printf("第一门课程的成绩: ");
scanf("%f",&p->score1);
printf("第二门课程的成绩: ");
scanf("%f",&p->score2);
printf("第三门课程的成绩: ");
scanf("%f",&p->score3);
p->avg_score=(p->score1+p->score2+p->score3)/3;
return *p;
}
void display(int z,struct StuInfo Stu[])
{
int i;
struct StuInfo *p;
p=Stu;
printf("学号:\t\t姓名: \t\t平均成绩: \t\t\n");
for(i=0;i<z;i++)
printf("%d \t\t%s \t\t%.2f \t\t\n",(p+i)->StuID,&(p+i)->name,(p+i)->avg_score);
}
void order(int y,struct StuInfo Stu[])
{
int i,j;
struct StuInfo temp,*p;
p=Stu;
for(i=0;i<y;i++)
{
for(j=0;j<y-1;j++)
{
if((p+j)->avg_score<(p+j+1)->avg_score)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
return;
}
void main()
{
struct StuInfo *d;
int i,j,StuNum,del_StuID;
char ans='Y';
d=Stu;
printf("\t\t\t学员信息管理系统\n");
printf("请输入学生总人数: ");
scanf("%d" ,&StuNum);
for(i=0;i<StuNum;i++)
{
Stu[i]=input_StuInfo();
}
printf("\n\n\n排序前的学员信息为: \n");
display(StuNum,Stu);
order(StuNum,Stu);
printf("\n\n\n排序后的学员信息为: \n");
display(StuNum,Stu);
while(ans=='y'||ans=='Y')
{
printf("是否插入新学员?(Y/N)\n");
fflush(stdin);
ans=getchar();
if(ans=='y'||ans=='Y')
{
Stu[StuNum]=input_StuInfo();
printf("\n\n\n插入新学员后的学员信息如下: \n");
order(StuNum+1,Stu);
display(StuNum+1,Stu);
StuNum=StuNum+1;
}
}
for(ans='y';(ans=='y'||ans=='Y');)
{
printf("是否删除某个学员?(Y/N)\n");
fflush(stdin);
ans=getchar();
if(ans=='y'||ans=='Y')
{
printf("请输入要删除的学员的学号: ");
scanf("%d",&del_StuID);
for(i=0;i<StuNum;i++)
{
if(Stu[i].StuID==del_StuID)
break;
}
for(j=i;j<StuNum-1;j++)
{
Stu[j]=Stu[j+1];
}
printf("\n\n\n删除后的学员信息为: \n");
display(StuNum-1,Stu);
}

}
}
第2个回答  2007-12-02
我也这么觉得,其实自己 看一下书就可以把这些问题都解决了,都很简单的,除非你以后不编程,要编的话,自己多独立思考一些!
第3个回答  2007-12-02
阁下的这个问是不是太多了 ,要写很多的。基本上要自定义8个函数,很辛苦的
第4个回答  2007-12-02
相当复杂的程序 - -``
30分估计不会有人做的。
相似回答