编写一段程序录入 N 个学生的信息包括姓名、性别、年龄和成绩;要求:1.按照成绩由小到大的顺序输出,如果成绩相同则按学号由小到大的顺序输出;2.计算 N 个学生成绩的平均值;
题目和要求:
编写一段程序录入 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 个学生成绩的平均值;相关推荐
- 分别统计出其中英文字母、空格、数字和其它字符的个数 matlab 程序,编写一段程序,要求先输入一行字符,然后分别统计出其中英文...
编写一个求和的程序,要求能任意输入两个整数,求和 用javascript写 +=functionadd(){varA=document.getElementById("a").va ...
- C++primer第五版 编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分
这是一个关于字符串处理的简单程序,但是里面有一些细节是值得关注的.先附上程序: // primer_3_2_3.cpp : Defines the entry point for the applic ...
- 把ax中存放的16位二进制数K看作是8个二进制的“四分之一字节”。试编写一段程序,要求数一下值为3(即11B)的的四分之一字节数,并将该数在终端上显示出来。
把ax中存放的16位二进制数K看作是8个二进制的"四分之一字节".试编写一段程序,要求数一下值为3(即11B)的的四分之一字节数,并将该数在终端上显示出来. DATA SEGMEN ...
- 你到国外去旅游,那里的人都讲英语,虽然你的英语不怎么好,但你会编程,请编写一段程序,利用文件“dict.txt”,把英文单词译成中文,帮助与人沟通。
1.你到国外去旅游,那里的人都讲英语,虽然你的英语不怎么好,但你会编程,请编写一段程序,利用文件"dict.txt",把英文单词译成中文,帮助与人沟通. 文件dict.txt是一个 ...
- 已知:切比雪夫多项式如下:编写一段程序,输入n,x,并将0-n的所有Tn(x)的值输出导到文件tdat.txt中。
已知:切比雪夫多项式如下: Tn(x)= 1 (n=0) x (n=1) 2xTn-1(x)-Tn-2(x) ...
- c语言课程设计运动会成绩管理,C语言课程设计要求编写一段程序题目是运动会分数..._统计师_帮考网...
楼主你好,你看看下面这个代码吧 和你的比较相似 : #include #include #include using namespace std; class School{ private: i ...
- C语言编写一个四位数的和,c语言编写一段程序,输入一个四位数,输出各位数字的和...
用C语言编写程序,输入一个正整数n(1 #include"stdio.h"intmain(){\x09inti,j,n;\x09inta[12];\x09intmin,mx;\x0 ...
- 求求大家指点指点我吧——大一C语言题:编写一段程序,计算某个日期为这一年的第几天及第几周的星期几。(使用软件Dev-C++)如下是我代码,感觉还挺对,至少编译时没错误没警告,但是运行时出不来结果啊啊啊
int days(int month,int year)//定义副分支(month为月份) { switch(month) { case 1: ...
- 机械祭天法力无边:练习3.6:编写一段程序,使用范围for语句将字符串内的所有字符用X代替。
#include<iostream> #include<string>using namespace std; int main() {string s;cout <&l ...
最新文章
- 利用ConcurrentHashMap来实现一个ConcurrentHashSet
- 是时候抛弃web.xml了?
- 计算机xp怎么做备份,怎样备份xp系统电脑上的所有数据?在xp系统中备份所有文件的方法...
- SAP Spartacus B2B 页面 Disable 按钮的显示原理
- java array 元素的位置_java中的两种排序工具Arrays和Collections的使用
- 京东健康将开启首批新冠抗原自测产品线上预约
- html出现滚动条页面闪动,CSS3 calc实现滚动条出现页面不跳动闪动
- 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形
- 不小心删除数据--利用MySQL的binlog恢复数据
- 电位器/电阻器型号命名方法
- 名编辑电子杂志大师教程 | 文本复制按钮
- JAVA解析JSON格式的数据
- 学习和温习sqlserver
- 使用OpenCV编写图像窗宽窗位动态调节程序
- 《关键对话》:高效沟通与数据分析的意义不言而喻
- mac下hadoop环境的搭建以及碰到的坑点
- Android 软件安装方法介绍
- 一、CC2530开发环境搭建
- HTTP 404错误你知道是什么意思吗
- mysql 生成随机数 —— 数字、字符串、手机号、日期、姓名、一段中文汉字