题目和要求:

编写一段程序录入 N 个学生的信息包括姓名、性别、年龄和成绩;

要求:1.按照成绩由小到大的顺序输出,如果成绩相同则按年龄由小到大的顺序 输出;

2.计算 N 个学生成绩的平均值;

注:1.输入的第一行是一个整数 N,表示 N 个学生;接下来 N 行每行描述一个 学生的姓名、性别、年龄和成绩。

样例:

例子 1:

3

Alice female 18 98

Bob male 19 90

Miller male 17 92

结果: Bob male 19 90

Miller male 17 92

Alice female 18 98

average = 93.33

例子 2:

10

student1 female 14 98

student2 female 15 78

student3 female 11 88

student4 male 17 84

student5 female 19 78

student6 female 12 88

student7 male 16 90

student8 male 13 64

student9 male 20 90

student10 female 18 84

结果:

student8 male 13 64

student2 female 15 78

student5 female 19 78

student4 male 17 84

student10 female 18 84

student3 female 11 88

student6 female 12 88

student7 male 16 90

student9 male 20 90

student1 female 14 98

average = 84.2

考察内容:结构体+链表+冒泡排序


话不多说上程序:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct node {   char       name[10];char       sex[7] ;int        age;int      score;struct node  *next;         } Node;
//这里是定义的学生的结构体Node  *Create_1()    //正序建立单链表
{   int n;Node  *head,*tail,*p;head= (Node*)malloc(sizeof(Node)); //申请头结点 if(head==NULL)  exit(0);head->next = NULL;tail=head;printf("输入学生人数: \n");scanf("%d",&n); printf("输入姓名 性别  年龄  成绩:\n"); while(n)         {  p= (Node*)malloc(sizeof(Node));if(!p)  exit(0);//如果申请失败,则退出程序//数据的输入scanf("%s %s %d %d",p->name,p->sex,&p->age, &p->score  );p->next=NULL;tail->next=p;tail=p; n--;}return head;
}//按照成绩的排序
void Sort(Node *head)
{ Node *pi,*pj,*pk;   char tmp1[10];  int tmp2; int tmp3;pi=head->next;while(pi!=NULL){ pk=pi;for(pj=pi->next; pj; pj=pj->next)if(pj->score < pk->score) pk=pj;//pk记录较小的成绩的结构体 ,同时也是后一个 if(pi!=pk){ strcpy(tmp1, pi->name);strcpy(pi->name,pk->name);strcpy(pk->name,tmp1);strcpy(tmp1, pi->sex);strcpy(pi->sex,pk->sex);strcpy(pk->sex,tmp1);tmp2=pi->age;  pi->age=pk->age;  pk->age=tmp2;tmp3=pi->score;   pi->score=pk->score;  pk->score=tmp3;        }  pi=pi->next;}} //对按照成绩排过序的链表再次按照年龄排序
void Sort2(Node *head)
{ Node *pi,*pj,*pk;   char tmp1[10];  int tmp2; int tmp3;pi=head->next;while(pi!=NULL){ pk=pi;for(pj=pi->next; pj; pj=pj->next)if(pj->score == pk->score) pk=pj;//pk记录相邻的成绩相同的同学的指针 if(pi!=pk){ if(pi->age >pk->age)//如果成绩相等,但年龄不是由小到大{strcpy(tmp1, pi->name);strcpy(pi->name,pk->name);strcpy(pk->name,tmp1);strcpy(tmp1, pi->sex);strcpy(pi->sex,pk->sex);strcpy(pk->sex,tmp1);tmp2=pi->age;  pi->age=pk->age;  pk->age=tmp2;tmp3=pi->score;   pi->score=pk->score;  pk->score=tmp3;    } }  pi=pi->next;}} void Print(Node* head)    //遍历
{Node *p; int num=0;float average=0;p= head->next ; //跳过头结点,得到第1个结点的地址 while(p){printf("%s ",   p->name);printf("%s ",   p->sex);printf("%d ",   p->age  );printf("%d\n", p->score  );average =average+p->score;num++;p = p->next ;}average=average/num;printf("average= %f\n",average);
}int main()
{   int tt;Node *Head;Head=Create_1();//建立链表printf("\n结果:\n"); Sort(Head);Sort2(Head);Print(Head);printf("\n\n"); }   

实验结果:

好了这就没了

编写一段程序录入 N 个学生的信息包括姓名、性别、年龄和成绩;要求:1.按照成绩由小到大的顺序输出,如果成绩相同则按学号由小到大的顺序输出;2.计算 N 个学生成绩的平均值;相关推荐

  1. 分别统计出其中英文字母、空格、数字和其它字符的个数 matlab 程序,编写一段程序,要求先输入一行字符,然后分别统计出其中英文...

    编写一个求和的程序,要求能任意输入两个整数,求和 用javascript写 +=functionadd(){varA=document.getElementById("a").va ...

  2. C++primer第五版 编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分

    这是一个关于字符串处理的简单程序,但是里面有一些细节是值得关注的.先附上程序: // primer_3_2_3.cpp : Defines the entry point for the applic ...

  3. 把ax中存放的16位二进制数K看作是8个二进制的“四分之一字节”。试编写一段程序,要求数一下值为3(即11B)的的四分之一字节数,并将该数在终端上显示出来。

    把ax中存放的16位二进制数K看作是8个二进制的"四分之一字节".试编写一段程序,要求数一下值为3(即11B)的的四分之一字节数,并将该数在终端上显示出来. DATA SEGMEN ...

  4. 你到国外去旅游,那里的人都讲英语,虽然你的英语不怎么好,但你会编程,请编写一段程序,利用文件“dict.txt”,把英文单词译成中文,帮助与人沟通。

    1.你到国外去旅游,那里的人都讲英语,虽然你的英语不怎么好,但你会编程,请编写一段程序,利用文件"dict.txt",把英文单词译成中文,帮助与人沟通. 文件dict.txt是一个 ...

  5. 已知:切比雪夫多项式如下:编写一段程序,输入n,x,并将0-n的所有Tn(x)的值输出导到文件tdat.txt中。

    已知:切比雪夫多项式如下: Tn(x)=               1                (n=0) x                (n=1) 2xTn-1(x)-Tn-2(x)  ...

  6. c语言课程设计运动会成绩管理,C语言课程设计要求编写一段程序题目是运动会分数..._统计师_帮考网...

    楼主你好,你看看下面这个代码吧   和你的比较相似 : #include #include #include using namespace std; class School{ private: i ...

  7. C语言编写一个四位数的和,c语言编写一段程序,输入一个四位数,输出各位数字的和...

    用C语言编写程序,输入一个正整数n(1 #include"stdio.h"intmain(){\x09inti,j,n;\x09inta[12];\x09intmin,mx;\x0 ...

  8. 求求大家指点指点我吧——大一C语言题:编写一段程序,计算某个日期为这一年的第几天及第几周的星期几。(使用软件Dev-C++)如下是我代码,感觉还挺对,至少编译时没错误没警告,但是运行时出不来结果啊啊啊

    int days(int month,int year)//定义副分支(month为月份)  {     switch(month)     {         case 1:            ...

  9. 机械祭天法力无边:练习3.6:编写一段程序,使用范围for语句将字符串内的所有字符用X代替。

    #include<iostream> #include<string>using namespace std; int main() {string s;cout <&l ...

最新文章

  1. 利用ConcurrentHashMap来实现一个ConcurrentHashSet
  2. 是时候抛弃web.xml了?
  3. 计算机xp怎么做备份,怎样备份xp系统电脑上的所有数据?在xp系统中备份所有文件的方法...
  4. SAP Spartacus B2B 页面 Disable 按钮的显示原理
  5. java array 元素的位置_java中的两种排序工具Arrays和Collections的使用
  6. 京东健康将开启首批新冠抗原自测产品线上预约
  7. html出现滚动条页面闪动,CSS3 calc实现滚动条出现页面不跳动闪动
  8. 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形
  9. 不小心删除数据--利用MySQL的binlog恢复数据
  10. 电位器/电阻器型号命名方法
  11. 名编辑电子杂志大师教程 | 文本复制按钮
  12. JAVA解析JSON格式的数据
  13. 学习和温习sqlserver
  14. 使用OpenCV编写图像窗宽窗位动态调节程序
  15. 《关键对话》:高效沟通与数据分析的意义不言而喻
  16. mac下hadoop环境的搭建以及碰到的坑点
  17. Android 软件安装方法介绍
  18. 一、CC2530开发环境搭建
  19. HTTP 404错误你知道是什么意思吗
  20. mysql 生成随机数 —— 数字、字符串、手机号、日期、姓名、一段中文汉字

热门文章

  1. 微信小程序 录音文件格式silk 坑
  2. is_numeric() 函数
  3. 年中狂欢购,墨刀破冰折扣+终身版回归,快来看!
  4. 为家庭网络布线-第5部分-千兆吞吐量和Vista
  5. selenium篇之滑动验证码
  6. cad批量打印_还为批量打印CAD图纸而发愁?只需五步,3秒打印百张图纸!
  7. Linux文档编辑命令大全
  8. 成功下载并安装Adams软件
  9. 为什么选择保险经纪人
  10. Linux中复制前10kb的数据,linux基本操作