输入10名学生的序号和每个学生三门功课(数学、英语、C语言程序设计)的成绩,编程计算出每个学生的总分

输入10名学生的序号和每个学生三门功课(数学、英语、C语言程序设计)的成绩,编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,且打印一张按高分到低分名次排序的成绩单... 输入10名学生的序号和每个学生三门功课(数学、英语、C语言程序设计)的成绩,编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,且打印一张按高分到低分名次排序的成绩单。然后用折半查找法查找有没有平均分为85分的学生,如果找到,则输出相关的序号,如果没有找到,则输出没有找到的信息。
要求:
(1) 排序用一个函数实现。
(2) 打印的成绩单表项包括:序号、数学、英语、 C语言程序设计、总分、平均分。
折半查找法才是重点 !!!!
展开
 我来答
我爱深蓝色天空
2013-05-23 · 超过13用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:31.6万
展开全部

#include<stdio.h>

#include<stdlib.h>

struct student

{ int num;

  int math;

  int english;

  int c;

  int sum;

  int average;

};

void main()

{struct student s[10];

int i;

void sum( student s[]);

void average(student s[]);

void sort(student s[]);

void print(student s[]);

void search(student s[]);


for(i=0;i<10;i++)

 {

printf("请输入%d个学生的信息-------学号------数学成绩------英语成绩-----c语言成绩\n",i+1);

     scanf("%d,%d,%d,%d",&s[i].num,&s[i].math,&s[i].english,&s[i].c);

  }

sum(s);

average(s);

sort(s);

search(s);

print(s);

system("pause");//我用的是vs2010编译器,楼主用别的话改下这条

}

void sum( student s[])

{ int i;


for(i=0;i<10;i++)

s[i].sum=s[i].math+s[i].english+s[i].c;

}

void average(student s[])

{

int i;


 for(i=0;i<10;i++)

s[i].average=(s[i].math+s[i].english+s[i].c)/3;

}

void sort(student s[])


{

  int i,j,k;

  struct student temp;

  for(i=0;i<10;i++)

   {   k=i;

  for(j=i+1;j<10;j++)

 if(s[k].sum<s[j].sum)

 k=j;

    if(k!=i)

   {temp=s[i];

    s[i]=s[k];

s[k]=temp;

   }

 }

}

void search(student s[])

{int mid,low,high,found;

 low=0;

 high=9;

 found=0;

 while(low<=high)

 {mid=(high+low)/2;

  if(s[mid].average==85){found=1;break;}

  else if(85>s[mid].average)

 high=mid-1;

  else low=mid+1;


 }

 if(found==1) 

printf("平均分为85分的学生序号为%d\n",s[mid].num);

 else printf("平均分为85分的学生不存在\n");

}

void print(student s[])

{int i;

printf("学号--数学成绩---英语成绩---c语言课程设计成绩---平均分---总分\n");

 for(i=0;i<10;i++)


printf("%-4d%5d%5d%5d%5d%5d\n",s[i].num,s[i].math,s[i].english,s[i].c,s[i].average,s[i].sum);

}


注意输入时每个都用逗号隔开,看不懂再问我

更多追问追答
追问
我用的VC6,编译的时候有错误。
追答
把sysytem("pause")哪行去掉了没;
sikaiyu
2013-05-22 · TA获得超过133个赞
知道答主
回答量:88
采纳率:0%
帮助的人:63.7万
展开全部
从v型在v刹
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzeyi6
2013-05-22 · TA获得超过188个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:122万
展开全部
6ekdtkdtukt
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式