C语言 排序学生成绩

合集下载

C语言学生成绩管理系统(输入输出删除插入查找排序)

C语言学生成绩管理系统(输入输出删除插入查找排序)
printf("按照学号排序:\n");
if (count==0 || count==1)
{
return;
}
list *p, *temp;
while(i > 0)
{p=head;
for(j=0; j<i-1; j++)
{
if(p->next->num > p->next->next->num)
/*
p=(list *)malloc(sizeof(list));
p->next=Null;
*/
r=head;
printf("请输入学生人数.\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(list *)malloc(sizeof(list));
scanf("%d",&k);
while (p && p->num!=k)
p=p->next;
if(p)
{
printf("学号\t姓名\t性别\t语文成绩\t数学成绩\t英语成绩\t计算机成绩\t平均成绩\t总成绩\n");
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d%5.1f\t%5.1f\n",p->num,p->name,p->sex,p->chinese,p->math,p->english,p->computer,p->ave,p->sum);

c语言课程设计成绩排序

c语言课程设计成绩排序

c语言课程设计成绩排序一、教学目标本节课的教学目标是让学生掌握C语言中成绩排序的功能实现。

具体包括:1.知识目标:使学生了解排序算法的原理,掌握常用的排序方法,如冒泡排序、选择排序和插入排序等。

2.技能目标:培养学生运用C语言实现成绩排序功能,提高编程能力。

3.情感态度价值观目标:培养学生独立思考、合作交流的学习态度,激发他们对计算机科学的兴趣。

二、教学内容本节课的教学内容主要包括:1.排序算法的原理及分类。

2.C语言中成绩排序的实现方法,包括冒泡排序、选择排序和插入排序等。

3.结合实际案例,让学生动手实践,掌握排序算法的应用。

三、教学方法为了达到本节课的教学目标,将采用以下教学方法:1.讲授法:讲解排序算法的原理和分类,让学生了解各种排序方法的基本思想。

2.案例分析法:分析实际案例,让学生掌握排序算法的应用。

3.实验法:让学生动手实践,编写C语言程序实现成绩排序功能,提高编程能力。

4.讨论法:在课堂上学生进行小组讨论,培养学生的合作交流能力。

四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论知识的学习。

2.参考书:提供额外的学习资料,帮助学生深入了解排序算法。

3.多媒体资料:制作PPT等教学课件,直观展示排序算法的原理和实现过程。

4.实验设备:为学生提供编程实践的环境,如计算机、编程软件等。

五、教学评估本节课的教学评估将采用多元化评价方式,全面反映学生的学习成果。

具体包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以体现学生的学习态度。

2.作业:布置与课程内容相关的编程作业,评估学生对知识的掌握程度。

3.考试:安排一次课程结束后的考试,测试学生对排序算法的理解和应用能力。

评估方式要求客观、公正,确保评价结果能够真实反映学生的学习情况。

六、教学安排本节课的教学安排如下:1.进度:按照教材的章节顺序,依次讲解排序算法的原理、分类和实现方法。

学生成绩管理系统C语言源程序

学生成绩管理系统C语言源程序
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
char xueqi[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];

C语言课程设计—学生成绩管理系统

C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。

h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。

C语言排序学生成绩资料

C语言排序学生成绩资料

任务1 输入/输出多个学生一门 课程的成绩
4.1.1 一维数组
以下对一维整型数组a的正确定义的是: A、int a(10) B、int n=10, a[n] C、int n; int a[n]; D、#define SIZE 10
scanf(“%d”,%n); int a[SIZE];
任务1 输入/输出多个学生一门 课程的成绩
数据类型 数组名[常量表达式];
数组元素
的数据类型
遵循C语言
标识符规则
例如:int a[5];
数组长度 几个数组元素
任务1 输入/输出多个学生一门 课程的成绩
4.1.1 一维数组
说明: 常量表达式表示元素的个数,即数组
长度。 常量表达式中可以包括常量和符合常
量,不能包含变量。
int i=5;
int a[i]; /*数组长度为变量*/
{ printf("%d ",i+1);break; }
}}
任务1 输入/输出多个学生一门 课程的成绩
4.1.3 一维数组
练习:一个班50位同学参加了一次C语言 程序设计考试,现要输入全班同学的成 绩,并按逆序输出。
任务2 排序学生成绩
任务1中已经输入了50个同学的成 绩到数组中,现在需要确定如何对学 生成绩从低到高进行排序。
{ scanf("%d",&mathScore[i]); }
for(i=0;i<5;i++)
{ sum=sum+mathScore[i]; }
average=sum/5.0;
printf("%f ",average);
}

C语言课程设计报告---根据条件进行学生成绩排序

C语言课程设计报告---根据条件进行学生成绩排序

课程设计报告课程设计题目:根据条件进行学生成绩排序学号:姓名:专业:班级:指导教师:2012年6月24日目录(一)实验题目 (3)(二)实验目的 (3)(三)实验要求 (3)(四)实验思路 (3)(五)实验过程 (5)(六)实验调试与结果 (8)(七)实验小结 (8)一.实验题目根据条件进行学生成绩排序(1)定义数组用以存放学生的成绩;(2)在函数中进行5个学生成绩从高到低排序 sort1(int a[5]);(3)改进第一步的函数为sort2(int a[],int n),进行n个学生成绩从高到低排序;(4)改进第二步的函数为sort3(int a[],int n, char style), 将n个学生成绩排序,排名方式根据style参数进行,如style为‘a’按升序排,style 为’d’按降序排;(5)将以上每一步骤的结果均输出,验证程序是否实现题目要求。

二.实验目的本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关内容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。

三.实验要求1.要求我们独立完成课程设计的主要内容;2. 按照实验课表安排进行,不得无故旷课;3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据个人兴趣选做其它题目;4.严格按照报告格式撰写课程设计报告;5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。

四.实验思路1.整体思路2.程序流程图五.实验过程源程序清单#include<stdio.h>//sort1是进行5个学生成绩从高到低排序void sort1(int a[5]){int i,j,k,t;for(i=0;i<4;i++){ k=i;for(j=i+1;j<5;j++)if(a[j]>a[k]) k=j;t=a[k];a[k]=a[i];a[i]=t;}}//sort2是进行n个学生成绩从高到低排序void sort2(int b[],int n){int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(b[j]>b[k])k=j;t=b[i];b[i]=b[k];b[k]=t;}}//sort3是进行n个学生成绩排序,同时指定其style的类型void sort3(int c[],int n,char style){int i,j,k,t;if (style=='a') //学生成绩从低到高排序{for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(c[k]>c[j])k=j;t=c[i];c[i]=c[k];c[k]=t;}}else if(style=='d') //学生成绩从高到低排序{for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(c[j]>c[k])k=j;t=c[i];c[i]=c[k];c[k]=t;}}}//主函数void main(){int a[5],b[100],c[100],h,l,i,j,g;printf("排序方法:选择排序法\n******请输入5个学生的成绩******\n"); for(i=0;i<5;i++)scanf("%d",&a[i]); //输入5个学生的成绩sort1(a); //调用sort1函数printf("1.排序以后的成绩顺序:\n");for(i=0;i<5;i++)printf("%3d",a[i]);printf("\n\n");printf("************************************************************ *******************\n");printf("\n");printf("******g为学生人数******\n请输入g的值:\n");scanf("%d",&g);printf("\n");printf("请输入g个学生的成绩:\n");for(j=0;j<g;j++)scanf("%d",&b[j]); //输入g个学生的成绩sort2(b,g); //调用sort2函数printf("2.排序以后的成绩顺序:\n");for(j=0;j<g;j++)printf("%3d",b[j]);printf("\n\n");printf("************************************************************ *******************\n");printf("\n");printf("******h为学生人数******\n请输入h的值:\n");scanf("%d",&h);printf("请输入h个学生的成绩:\n");for(l=0;l<h;l++)scanf("%d",&c[l]); //输入h个学生的成绩sort3(c,h,'a'); //调用sort3函数 printf("3.升序排序以后的成绩顺序:\n");for(l=0;l<h;l++)printf("%3d",c[l]);printf("\n");printf("******h为学生人数******\n请输入h个学生的成绩:\n");for(l=0;l<h;l++)scanf("%d",&c[l]);sort3(c,h,'d'); //调用sort3函数 printf("3.降序排序以后的成绩顺序:\n");for(l=0;l<h;l++)printf("%3d",c[l]);printf("\n");}六、执行结果七、实验小结通过本次课程设计,增加我对C的认识,也更加了解C,但是还有很多不足,在处理字符串操作的实验中,字符串查找、字符串排序,还是不会,只能借鉴,自己还需加强,多操作、同时也让我了解C用处,自己要多看看书上机操作,同时也提高了自己的编程能力。

[考试]C语言代码-学生信息排序

[考试]C语言代码-学生信息排序

[考试]C语言代码-学生信息排序C语言代码-学生信息排序问题描述学生信息由学号,姓名,性别,语文成绩,数学成绩,英语成绩,平均分和总分构成。

学号、姓名长度不超过20,学生人数不超过100。

写一个处理学生信息的程序,要求有以下功能1)插入学生信息,命令格式如下:INSERT id name sex s1 s2 s3表示插入一个学生信息。

插入后显示插入的学生信息,格式如下:学号姓名性别语文成绩数学成绩英语成绩平均成绩总成绩中间有一个空格分开,所有成绩保留2位小数。

2)显示所有学生信息,命令格式如下:LIST按照学号从小到大的顺序显示所有学生信息。

每个学生信息一行,格式如下学号姓名性别语文成绩数学成绩英语成绩平均成绩总成绩中间有一个空格分开,所有成绩保留2位小数。

3)退出程序,命令格式如下:QUIT输出"Good bye!"后结束程序。

写一个程序完成上述功能。

输入的最后一条命令总是QUIT设计一个结构体表示学生信息。

分别设计两个函数,来处理学生信息的插入与输出。

设计一个函数对所有学生信息按学号进行排序。

再设计一个函数输出所有学生信息。

在主函数中调用插入学生信息与显示所有学生信息的函数。

输入输入有多行,每行一条命令,命令格式有:INSERT id name sex s1 s2 s3插入一条学生信息后并显示插入的学生信息。

LIST按照学号从小到大的顺序显示所有学生信息。

每个学生信息一行,QUIT退出程序输出输出有多行,每个输入命令都有对应的输出,格式分别如下:INSERT id name sex s1 s2 s3插入后显示插入的学生信息,格式如下:学号姓名性别语文成绩数学成绩英语成绩平均成绩总成绩中间有一个空格分开,所有成绩保留2位小数。

LIST按照学号从小到大的顺序显示所有学生信息,每个学生信息一行。

每行格式如下:学号姓名性别语文成绩数学成绩英语成绩平均成绩总成绩中间有一个空格分开,所有成绩保留2位小数。

c语言成绩排名编写

c语言成绩排名编写

以下是一个简单的C语言程序,用于对学生成绩进行排名:```c#include <stdio.h>int main() {int n, i, j;float scores[100], sum, avg, temp;printf("请输入学生人数:");scanf("%d", &n);for (i = 0; i < n; i++) {printf("请输入第%d个学生的成绩:", i+1);scanf("%f", &scores[i]);}// 计算总分和平均分sum = 0;for (i = 0; i < n; i++) {sum += scores[i];}avg = sum / n;// 按照成绩排名for (i = 0; i < n-1; i++) {for (j = i+1; j < n; j++) {if (scores[i] < scores[j]) {temp = scores[i];scores[i] = scores[j];scores[j] = temp;}}}// 输出排名结果和平均分printf("成绩排名如下:\n");for (i = 0; i < n; i++) {printf("%d. %f\n", i+1, scores[i]); }printf("平均分为:%f\n", avg);return 0;}```该程序首先要求用户输入学生人数,然后依次输入每个学生的成绩。

接下来,程序计算总分和平均分,并按照成绩从高到低进行排序。

最后,程序输出排名结果和平均分。

学生成绩管理系统c语言代码(供参考)

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include"stdlib.h"#include"string.h"typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p->next=NULL;p->date.number=0;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head->next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p->);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q->date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head->next;break;}else{q=q->next;if(q==NULL) n=1;}}}p->date.number=m;printf("=>请输入性别!\n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p->date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);q=head->next;head->next=p;p->next=q;head->date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head->next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p->,N)==0){q->next=p->next;head->date.number--;printf("=>删除%s成功!\n",p->);free(p);break;}else{p=p->next;q=q->next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head->next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("********************************************************* *********************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);p=head->next;printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);p=p->next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head->next;while(p){if(strcmp(p->,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head->next;while(p){if(p->date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("********************************************************* **********************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head->next;while(q->next){if((q->date.average)<(q->next->date.average)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head->next;while(q->next){if((q->date.number)>(q->next->date.number)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;}while(p){fwrite(&(p->date),sizeof(student),1,fp);p=p->next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>开辟空间失败!");exit(1);}else{head->next=NULL;head->date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q->date),sizeof(student),1,fp);for(i=0;i<head->date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>读值失败!");exit(1);}fread(&(p->date),sizeof(student),1,fp);p->next=q->next;q->next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("************************************************************* *******************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:吹吹风\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();else if(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。

c语言学生成绩排序

c语言学生成绩排序

50 学生‎成绩排序‎成绩: ‎10 / ‎折扣: 0‎.8‎‎大家参加了‎期末考试,‎成绩出来后‎老师要对‎n个学生‎进行成绩汇‎总和排序。

‎要求程序按‎成绩降序进‎行排序。

在‎排序过程中‎对于成绩相‎同的学生,‎要按照输入‎数据的顺序‎进行排列。

‎例如:有5‎名学生的成‎绩:zh‎a ng1,‎90zh‎a ng2,‎91zh‎a ng3,‎99zh‎a ng4,‎91zh‎a ng5,‎98‎则排序结果‎应该为:‎z hang‎3,99‎z hang‎5,98‎z hang‎2,91‎z hang‎4,91‎z hang‎1,90‎请注意‎例题中“z‎h ang2‎”和“zh‎a ng4”‎的排列顺序‎。

输‎入:‎第一行‎为将要输入‎的学生数量‎n‎从第二行‎起后面连续‎n 行数‎据,每行为‎一名学生的‎姓名(长度‎不超过20‎个字符,不‎包括空格)‎,考试成绩‎(int)‎输出‎:‎排序后的‎结果。

每行‎为一名学生‎的姓名和成‎绩。

‎‎测试输入‎期待的‎输出时‎间限制‎内存限制‎额外进程‎测‎试用例 1‎以文本‎方式显示‎1.5?‎2.zha‎n g1,9‎0?3.‎z hang‎2,91?‎4.zh‎a ng3,‎99?5‎.zhan‎g4,91‎? 6.z‎h ang5‎,98?‎以文本‎方式显示‎1.zha‎n g3,9‎9?2.‎z hang‎5,98?‎3.zh‎a ng2,‎91?4‎.zhan‎g4,91‎? 5.z‎h ang1‎,90?‎1秒‎64M‎0 ‎测‎试用例 2‎以文本‎方式显示‎1.5?‎2.zha‎n g31,‎90? 3‎.zhan‎g51,9‎0?4.‎z hang‎2,90?‎5.zh‎a ng42‎,90? ‎6.zha‎n g1,9‎0?‎以文本方式‎显示1.‎z hang‎31,90‎?2.z‎h ang5‎1,90?‎3.zh‎a ng2,‎90?4‎.zhan‎g42,9‎0?5.‎z hang‎1,90?‎1秒‎64‎M0‎‎测试用例‎3以文‎本方式显示‎1.1?‎2.wa‎n g,10‎0?‎以文本方式‎显示1.‎w ang,‎100?‎1秒‎64M‎0 ‎‎开启时间‎201‎2年05月‎21日‎星期一 1‎2:00 ‎折扣‎时间2‎012年0‎5月 30‎日星期三‎23:5‎5‎关闭时间‎2012‎年06月3‎日星期日‎23:5‎5‎允许迟交:‎是‎#‎i nclu‎d e<st‎d io.h‎>#in‎c lude‎<stri‎n g.h>‎#inc‎l ude<‎m ath.‎h>ty‎p edef‎stru‎c t st‎u dent‎{in‎t sco‎r e;c‎h ar n‎a me[2‎0];}‎s tude‎n t;v‎o id s‎w ap(s‎t uden‎t * s‎1,stu‎d ent ‎* s2)‎{ch‎a r na‎m etem‎p[20]‎;str‎c py(n‎a mete‎m p,s1‎->nam‎e);s‎t rcpy‎(s1->‎n ame,‎s2->n‎a me);‎strc‎p y(s2‎->nam‎e,nam‎e temp‎);in‎t tem‎p;te‎m p=s1‎->sco‎r e;s‎1->sc‎o re=s‎2->sc‎o re;‎s2->s‎c ore=‎t emp;‎}vo‎i d so‎r t(st‎u dent‎stu[‎],int‎n){‎int ‎i,j;‎f or(i‎=0;i<‎n;i++‎)for‎(j=0;‎j<n-1‎;j++)‎{if‎(stu[‎j].sc‎o re<s‎t u[j+‎1].sc‎o re)‎{swa‎p(&st‎u[j],‎&stu[‎j+1])‎;}e‎l se i‎f(stu‎[j].s‎c ore=‎=stu[‎j+1].‎s core‎) {i‎f(str‎c mp(s‎t u[j]‎.name‎,stu[‎j+1].‎n ame)‎>0) {‎swap‎(&stu‎[j],&‎s tu[j‎+1]);‎}}‎}}v‎o id i‎n put(‎s tude‎n t * ‎s){‎c har ‎s trin‎g[30]‎;get‎s(str‎i ng);‎int ‎n,i,j‎;n=s‎t rlen‎(stri‎n g);‎f or(i‎=0;i<‎n;i++‎){i‎f(str‎i ng[i‎]==',‎'){s-‎>name‎[i]='‎\0';b‎r eak;‎}s->‎n ame[‎i]=st‎r ing[‎i];}‎s->s‎c ore=‎0;in‎t tem‎p;j=‎n-(i+‎1)-1;‎for(‎i++;i‎<n;i+‎+,j--‎){t‎e mp=(‎i nt)s‎t ring‎[i]-4‎8;s-‎>scor‎e= s-‎>scor‎e+ te‎m p *(‎i nt)p‎o w(10‎.0,j)‎; }}‎void‎main‎(){‎i nt n‎,i;s‎t uden‎t stu‎[20];‎scan‎f("%d‎\n",&‎n);f‎o r(i=‎0;i<n‎;i++)‎{in‎p ut(&‎s tu[i‎]);}‎sort‎(stu,‎n);f‎o r(i=‎0;i<n‎;i++)‎{pr‎i ntf(‎"%s,%‎d\n",‎s tu[i‎].nam‎e,stu‎[i].s‎c ore)‎; }‎}‎。

学生成绩排名(用C编写)

学生成绩排名(用C编写)

学生成绩排名一直想用C语言做一个简单的学生成绩排名的程序,但碍于水平有限,看了很久的书,参考了很多资料,用了很长时间才写出这么一个程序.现在我把做这个程序的过程写出来,都是些很基本的东西,希望对刚接触C语言的人有一点点的帮助.我要实现的功能:我有两组成绩,分别是数学和英语,我要按照分数的高低从高到低排列分数;并且后面要跟上学号,也就是说学号跟成绩是搭配在一起排序的.我的设想:做成一个有下拉的菜单但水平不够,暂时只能做个文字提示性的菜单,形如:Press 1 for MathPress 2 for EnglishOther numbers for Exit我按1,排列数学成绩并显示出来,我按2排列英语成绩并显示出来,按其他数字退出运行.我先试验了一下,用了三个数充当学生成绩,程序如下:#include <stdio.h>void main(){int n;int t;int a;int b;int c;while(1){printf("Press 1 for Math\nPress 2 for English\nOther numbers for Exit\n Your choice:");scanf("%d",&n);if(n==1){printf("input:\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=c;c=a;a=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);}else if(n==2){printf("Input:\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=c;c=a;a=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);}elsebreak;}}运行结果符合我的预想(我用TC2.01英文版,输入成绩时以下面这种方式,如:2 6 3 8,不要2,6,3,8,否则出错),然后我就开始在此基础上改进这个程序,把学生成绩增加到10个,用数组存储这些成绩,排名时把学号也带上一起排,排序方法用冒泡排序法.程序代码如下:#include <stdio.h>void main(){int n,t,k,i,j;int M[10];int E[10];int Num[10];while(1){printf("Press 1 for Math\nPress 2 for English\nOther numbers for Exit\n\nYour choice:");/*打印出1 for Math 2 for English*/scanf("%d",&n); /*接收输入的数字*/if(n==1){printf("Input students' scores:\n"); /*输入各个学生分数*/for(k=0;k<10;k++)scanf("%d",&M[k]);printf("Input students' numbers:\n"); /*输入对应的学生学号*/for(k=0;k<10;k++)scanf("%d",&Num[k]);printf("\n");for(i=0;i<9;i++) /*按分数高到低排序,冒泡排序法*/{for(j=0;j<9-i;j++){if(M[j]<M[j+1]) /*没有写成绩相等时的情况,相等时不做处理,按输入时的顺序输出*/{t=M[j];M[j]=M[j+1];M[j+1]=t;t=Num[j]; /*分数排序的同时把学号也调换*/Num[j]=Num[j+1];Num[j+1]=t;}}}printf("Score Number\n");for(k=0;k<10;k++){printf("%d %d\n",M[k],Num[k]);}printf("\n");}else if(n==2){printf("Input students' scores:\n");for(k=0;k<10;k++)scanf("%d",&E[k]);printf("Input students' numbers:\n");for(k=0;k<10;k++)scanf("%d",&Num[k]);printf("\n");for(i=0;i<9;i++){for(j=0;j<9-i;j++){if(E[j]<E[j+1]){t=E[j];E[j]=E[j+1];E[j+1]=t;t=Num[j];Num[j]=Num[j+1];Num[j+1]=t;}}}printf("Score Number\n");for(k=0;k<10;k++){printf("%d %d\n",E[k],Num[k]);}printf("\n");}else /*按其他数字退出程序运行*/break;}}运行后达到了我想要的效果,只是菜单有点不太满意,我会改进这个版本的.我说过我是一个初学者,如果您也是一个初学者,欢迎跟我交流.。

C语言利用结构体数组实现学生成绩管理系统

C语言利用结构体数组实现学生成绩管理系统

C语⾔利⽤结构体数组实现学⽣成绩管理系统要求:某班有最多不超过30⼈(具体⼈数由键盘输⼊)参加期末考试,最多不超过6门(具体门数由键盘输⼊)。

定义结构体类型描述学⽣信息,每个学⽣信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。

⽤结构体数组作为函数参数,编程实现如下菜单驱动的学⽣成绩管理系统。

(1)录⼊每个学⽣的学号、姓名和各科考试成绩。

(2)计算每门课程的总分和平均分。

(3)计算每个学⽣的总分和平均分。

(4)按每个学⽣的总分由⾼到低排出名次表。

(5)按学号由⼩到⼤排出成绩表。

(6)按姓名的字典顺序排出成绩表。

(7)按学号查询学⽣排名极其考试成绩。

(8)按姓名查询学⽣排名极其考试成绩。

(9)按优秀(90~100)、良好(80~90)、中等(70~80)、及格(60~70)、不及格(0~59)5个类别,对每门课程分别统计每个类别的⼈数以及所占的百分⽐。

(10)输出每个学⽣的学号、姓名、各科考试成绩以及每门课程的总分和平均分。

代码:#include<stdio.h>#include<Windows.h>#include<conio.h>#define SN 30 //学⽣⼈数#define CN 6 //科⽬数#define NL 20 //名字字节长度typedef struct student{long int num;char name[NL];float score[CN];float sum;float aver;}STU;STU s[SN];int itemSelected=-1;int n=0;//学⽣数int m=0;//课程数int Menu();//菜单void chose(int itemSelected);//选择void inputScore();//输⼊分数void AverofC();//计算每门课程平均数void AverofS();//每名学⽣总分和平均分void sortByNum();//学⽣总分排⾏void sortByGrade();void sortByName();void findByNum();void findByName();void statisticsAnalysis();void printScore();void main(){printf("请输⼊学⽣总数(n<%d):\n",SN);scanf("%d",&n);printf("请输⼊课程总数(m<%d):\n",CN);scanf("%d",&m);while(1){itemSelected=Menu();chose(itemSelected);itemSelected=-1;}}int Menu(){int itemSelected;system("cls");printf("\n ==============学⽣成绩管理系统===============\n");printf("\t 1.输⼊学号、姓名及各科成绩\n");printf("\t 2.计算每门课程总分和平均分\n");printf("\t 3.计算每个学⽣总分和平局分\n");printf("\t 4.按每个学⽣总分⾼低排出名次表\n");printf("\t 5.按学号从⼩到⼤排出成绩表\n");printf("\t 6.按学⽣字典顺序排出成绩表\n");printf("\t 7.按学号查询学⽣排名和考试成绩\n");printf("\t 8.按姓名查询学⽣排名和成绩\n");printf("\t 9.结果分析\n");printf("\t 10.输出信息\n");printf("\t 0.退出\n");printf("===============================================\n"); printf("请选择选项:");scanf("%d",&itemSelected);return itemSelected;}void chose(int itemSelected){switch(itemSelected){case 1: inputScore(); break;case 2: AverofC();break;case 3: AverofS();break;case 4: sortByGrade();break;case 5: sortByNum();break;case 6: sortByName();break;case 7: findByNum();break;case 8: findByName();break;case 9: statisticsAnalysis();break;case 10: printScore();break;case 0: exit(0);printf("即将退出程序");break;default: printf("输⼊错误!");break;}}void inputScore(){printf("\n===============================================\n"); printf("请输⼊学⽣学号、姓名及各科信息(输⼊0停⽌信息输⼊)\n");for(int i=0;i<n;i++){printf("学号(8位)");scanf("%ld",&s[i].num);if(s[i].num==0) break;getchar();//吸收多余换⾏符printf("姓名");gets(s[i].name);printf("请输⼊各科成绩");s[i].sum=0;for(int j =0;j<m;j++){scanf("%f",&s[i].score[j]);s[i].sum +=s[i].score[j];}}}void AverofC(){float sum[CN]={0};float average[CN]={0};for(int i=0;i<m;i++){for(int j=0;j<n;j++){sum[i]+=s[j].score[i];}average[i]=sum[i]/n;printf("第%d门课程的总分为:%.2f,平均分为%.2f\n",i+1,sum[i],average[i]); }getch();}void AverofS(){float sum[SN]={0};float average[SN]={0};for (int i=0;i<n;i++){for(int j=0;j<m;j++){sum[i]+=s[i].score[j];}average[i]=sum[i]/m;printf("第%d个学⽣的总分为:%.2f,平均分为%.2f\n",i+1,sum[i],average[i]);}getch();}void sortByNum(){//按学号从⼩到⼤排序STU temp1={0};for(int i=0;i<n-1;i++){if(s[i].num>s[i+1].num){temp1=s[i];s[i]=s[i+1];s[i+1]=temp1;}}printf("\n==============按学号从⼩到排序===============\n"); for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("\n");}getch();}void sortByGrade(){//按总分从⾼到低排序STU temp1={0};for(int i=0;i<n-1;i++){if(s[i].sum<s[i+1].sum){temp1=s[i];s[i]=s[i+1];s[i+1]=temp1;}}printf("\n============按总成绩从⾼到低排序===========\n");for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("该学⽣的总成绩为:%.2f",s[j].sum);printf("\n");}getch();}void sortByName(){//按姓名⾸字母字典顺序排序STU temp1={0};for(int i=0;i<n-1;i++){if(((int)(s[i].name[0])>(int)(s[i+1].name[0]))){//将名字⾸字母转成成ASCII码从⽽⽐较⼤⼩排序temp1=s[i];s[i]=s[i+1];s[i+1]=temp1;}}printf("\n==============按学号从⼩到排序===============\n"); for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("该学⽣的总成绩为:%.2f",s[j].sum);printf("\n");}getch();}void findByNum() {int find=-1;//记录需要查找的学号,并作为查找成功与否的标识符printf("请输⼊要查找的学号:");scanf("%d",&find);for(int i=0;i<n;i++){if(s[i].num==find){printf("\n查找成功\n");printf("该学⽣的学号为%d\n",s[i].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[i].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[i].score[c]);}printf("该学⽣的总成绩为:%.2f",s[i].sum);printf("\n");find=-2;}}if(find!=-2){printf("查⽆此⼈\n");printf("按任意键继续");}getch();}void findByName(){int is_find=0;char find[SN];printf("请输⼊要查找的姓名:");getchar();gets(find);for(int i=0;i<n;i++){if(strcmp(s[i].name,find)==0){printf("\n查找成功\n");printf("该学⽣的学号为%d\n",s[i].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[i].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[i].score[c]);}printf("该学⽣的总成绩为:%.2f",s[i].sum);printf("\n");is_find=1;}}if(is_find!=1){printf("查⽆此⼈\n");printf("按任意键继续");}getch();}void statisticsAnalysis(){printf("输出每门课程优秀、良好、中等、及格、不及格⼈数所占的百分⽐\n"); int a1[CN]={0},a2[CN]={0},a3[CN]={0},a4[CN]={0},a5[CN]={0};for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i].score[j]>=90 && s[i].score[j]<=100){a1[j]++;}else if (s[i].score[j]>=80 && s[i].score[j]<90){a2[j]++;}else if (s[i].score[j]>=70 && s[i].score[j]<80){a3[j]++;}else if (s[i].score[j]>=60 && s[i].score[j]<70){a4[j]++;}else if (s[i].score[j]<60){a5[j]++;}}}printf("\n====================各们课程概况==================\n");for(int k=0;k<m;k++){printf("第%d门课的优秀⼈数占%.2f%%,",k+1,(a1[k]/(n*1.0))*100);printf("良好⼈数占%.2f%%,",(a2[k]/(n*1.0))*100);printf("中等⼈数占%.2f%%,",(a3[k]/(n*1.0))*100);printf("及格⼈数占%.2f%%,",(a4[k]/(n*1.0))*100);printf("不及格⼈数占%.2f%%,",(a5[k]/(n*1.0))*100);printf("\n");}getch();}void printScore(){printf("==============以下为学⽣信息==============");for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("该学⽣的总成绩为:%.2f",s[j].sum);printf("\n");}getch();}更多学习资料请关注专题《》。

c语言程序——学生成绩成绩表

c语言程序——学生成绩成绩表
{
printf("position:\t No\t mt\t wl\t sum\n");
printf("%8d\t%4ld\t%4d\t%4d\t%5d\t",pos+1,num[pos],score[pos][0],score[pos][1],sum[pos]);
}
else
printf("not found!\n");
这个应该可以了,这个我试过了,很成功,不过还有缺点,那就是没用“结构”你再看看,不行这里有个用结构的,不过我不会改,要是这个不行就把那个原版的给你弄过去,你自己看看能改不……明白??
#include<stdio.h>
#define stu 50
#define course 2
void input(long num[],int score[][course],int n);
input(num,score,n);
getsum(score,n,sum);
print(num,score,n,sum);
sort(num,score,n,sum);
printf("按总分排名:\n");
print(num,score,n,sum);
gcj(num,score,n,sum,0);
printf("按数学成绩排名:\n");
}
void input(long num[],int score[][course],int n)
{
int i,j;
for(i=0;i<n;i++)
{
scanf("%ld",&num[i]);

C语言 学生成绩排序

C语言 学生成绩排序

课程设计报告学生姓名:专业:班级:学号:指导教师:2012年06月23 日目录课程设计目的与要求 (3)程序设计题目 (4)调试与测试 (5)实验思路 (6)源程序清单 (7)执行结果........................................ .11 实验小结. (12)课程设计目的与要求一. 课程设计目的:本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体和文件等相关内容的综合应用,使同学们能进一步熟悉掌握C语言的基本语法,进一步提升自己的编程能力并逐步培养编程思维,进而不断提高同学们解决问题的能力,并为以后的语言学习打下良好的基础。

二. 课程设计要求:1. 学生独立完成课程设计的主要内容;2. 按照实验课表安排进行,不得无故旷课;3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据个人兴趣选做其它题目;4.严格按照报告格式撰写课程设计报告;5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。

程序设计题目1.学生成绩排序(1)定义一个数组a[11],用以存放学生的成绩,从键盘输入10个学生成绩;(2)采用冒泡法,将学生成绩按照从高到低进行排序并输出(3)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组,输出结果;(4)将排好序的成绩单进行反序存放并输出,即原来是从高到低,现改为从低到高排列;调试与测试在设计时,没打出一个模块都进行调试与测试,如果错误或不能达到预期效果,就检查。

调试过程中总是会出现数组名和变量名不一样的问题。

检查时,通过查资料、问同学老师解决。

实验思路开始Stdio函数,main函数I循环,依次输入10个学生成绩J循环,用冒泡法进行排序并输出结果在定义一个数组A【I】,并用冒泡法进行排序,并将其插入之前数组中。

把已经用冒泡法排序好的成绩进行倒序输出。

结束源程序清单#include "stdio.h"void main(){int i,j;float a[11],t;for(i=0;i<10;i++){printf("第%d个学生的成绩:\n",i+1);scanf("%f",&a[i]);依次输入10个学生的成绩。

C语言排序学生成绩

C语言排序学生成绩
Example
char str[10];
一维字符数组str
char s1[3][5]; 二维字符数组s1
任务4 输入/输出学生
4.4.1 字符数组
1 一维字符数组的初始化
(1)用字符常数初始化
Example
char c[ ]={‘C’,’h’,’i’,’n’,’a’,’\0’}; 初始化后:
C h i n a \0
Байду номын сангаас
任务4 输入/输出学生
4.4.1 字符数组
1 一维字符数组的初始化
(2)直接用字符串常量初始化
Example
char c[ ]={“China”}; char c[ ]=“China”; 初始化后:
C h i n a \0
任务4 输入/输出学生
4.4.1 字符数组
2 二维字符数组的初始化
(1)用字符常数初始化
}
int a[ ][2]={1,2,3,4,5,6,7,8};
任务4 输入/输出学生
一个班上50位学生参与考试,需要 输入/输出学生的姓名信息。这个任 务需要解决多个字符的存放问题。
任务4 输入/输出学生
4.4.1 字符数组
一维字符数组 1 char 数组名[常量表达式];
二维字符数组 2
char 数组名[常量表达式1][常量表达式2];
任务1 输入/输出多个学生一门
课程的成绩
4.1.2 一维数组的引用
输入5个学生的数学成绩,计算平均分,将平均分
输出到屏幕上。
数组元素的地址也
void main()
是通过“&”运算符
{
得到的。
int i,mathScore[5],sum=0;float average;

PTA(C语言)学生成绩排序

PTA(C语言)学生成绩排序

PTA(C语⾔)学⽣成绩排序假设学⽣的基本信息包括学号、姓名、三门课程成绩以及个⼈平均成绩,定义⼀个能够表⽰学⽣信息的结构类型。

输⼊n(n<50)个学⽣的成绩信息,按照学⽣的个⼈平均分从⾼到低输出他们的信息。

如果平均分相同,按输⼊的先后顺序排列。

输⼊格式:输⼊⼀个正整数n(n<50),下⾯n⾏输⼊n个学⽣的信息,包括:学号、姓名、三门课程成绩(整数)。

输出格式:输出从⾼到低排序后的学⽣信息,包括:学号、姓名、平均分(保留两位⼩数)。

输⼊样例:3101 Zhang 78 87 85102 Wang 91 88 90103 Li 75 90 84输出样例:102,Wang,89.67101,Zhang,83.33103,Li,83.00#include <stdio.h>#define N 51struct st{long num;char name[10];int yw; //三门成绩int sx;int yy;double average;}ST[N];int main(){int i,n;int j,k;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d %s %d %d %d",&ST[i].num,ST[i].name,&ST[i].yw,&ST[i].sx,&ST[i].yy);ST[i].average=(((double)ST[i].yw+ST[i].sx+ST[i].yy)/3);}for(j=0;j<N-1;j++){for(k=j+1;k<N-1;k++)if(ST[j].average<ST[k].average) //⽐较⼤⼩{ST[50]=ST[j];ST[j]=ST[k];ST[k]=ST[50];}}for(i=0;i<n;i++){printf("%d,%s,%.2lf\n",ST[i].num,ST[i].name,ST[i].average); //输出成绩}}。

c语言学生成绩计数排序的系统实现

c语言学生成绩计数排序的系统实现

c语言学生成绩计数排序的系统实现下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!C语言学生成绩计数排序的系统实现一、引言在学生成绩管理中,对成绩进行排序是一个重要的需求。

C语言程序设计项目四学生成绩的排序

C语言程序设计项目四学生成绩的排序
printf(" 请组输。入本班同学的成绩:");
for(i=0;i<N;i++)
scanf("%d",&score[i]);
printf(" 按逆序输出本班同学的成绩:");
for(i=N-1;i>=0;i--)
printf("%3d",score[i]); }
注:为了程序运行方便,假设只有10人
三、相关知识
【例4-11】输入10 个数存入一维数组,然后再按逆序重新存放后输出。
分析:定义一个一维数组int a[10],用一个循环将10个数输 入。然后a[0]与a[9]交换,a[1] 与a[8],a[2]与a[7],a[3]与a[6], a[4]与a[5],即a[i]与a[9-i]交换 (i=0到(10-1)/2),最后输出a[0] 至a[9]即可。
【例4-9】以下程序运行后的输出结果是 ______ 。 #include "stdio.h" main() { int p[7]={11,13,14,15,16,17,18}; int i=0,j=0; while(i<7 && p[i]%2==1 )j+=p[i++]; printf("%d\n",j);}
分析:int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}是定义了一个整型数组a,一共有12个元素, 其下标的范围是0-11,即a[0]、a[1]…a[11],所以B是正确的。 答案为:B
三、相关知识
【例4-7】若有以下说明,则数值为4的表达式是( )。 INT A[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; CHAR C=’A’, D, G ; A. A[G-C] B. A[4] C. A['D'-'C'] D. A['D'-C]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1.3 一维数组
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
练习:一个班50位同学参加了一次C语言 程序设计考试,现要输入全班同学的成 绩,并按逆序输出。
任务2 任务 排序学生成绩
任务1中已经输入了50个同学的成 任务1中已经输入了50个同学的成 50 绩到数组中,现在需要确定如何对学 绩到数组中, 生成绩从低到高进行排序。 生成绩从低到高进行排序。
初始化后: 1 4 2 5 3 6
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
(2)按数组排列的顺序初始化
Example
int a[2][3]={1,2,3,4,5,6};
初始化后: 1 4 2 5 3 6
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
0 1 2
1 2 3
2 3 4
3 4 5
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
二维数组的输入输出
Example
int b[3][4], i, j ; for ( i =0 ; i<3 ; i++) for ( j =0 ; j<4 ; j++) scanf(“%d”, &b[i][j]) ; for ( i =0 ; i<3 ; i++) for ( j =0 ; j<4 ; j++) printf(“%5d”, b[i][j] ) ;
数组名[常量表达式];
数组元素 的数据类型
遵循C语言 标识符规则
例如: a[5]; 例如:int a[5]
数组长度 几个数组元素
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.1 一维数组 说明: 常量表达式表示元素的个数,即数组 长度。 常量表达式中可以包括常量和符合常 量,不能包含变量。
int i=5; int a[i]; /*数组长度为变量*/
4.1.1 一维数组
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
以下对一维整型数组a的正确定义的是: A、int a(10) B、int n=10, a[n] C、int n; int a[n]; D、#define SIZE 10 scanf(“%d”,%n); int a[SIZE];
任务3 任务 处理多位学生多门课程的成绩
一个班上50位学生参与考试, 一个班上50位学生参与考试,考 50位学生参与考试 门课程, 了3门课程,现要求按总成绩的高低 输出成绩单。 输出成绩单。 如果仅仅使用一维数组进行上述 处理,是很困难的,此时需要使用二 处理,是很困难的,此时需要使用二 维数组。 维数组。
任务2 任务 排序学生成绩
7 1 5 6 9 3 7 1 5 6 9 3 1 5 6 7 3 9 1 7 5 6 9 3 1 5 6 3 7 9 1 5 7 6 9 3 1 5 3 6 7 9 1 5 6 7 9 3 1 3 5 6 7 9 1 5 6 7 9 3 1 3 5 5 6 9 1 5 6 7 3 9
(3)对全部数组元素初始化
Example
int a[ ][3]={1,2,3,4,5,6};
初始化后: 1 4 2 5 3 6
省略行号
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
二维数组的赋值 用二层循环语句处理数组, 通常外循环控制行, 内循环控制列。
Example
for(i=0;i<3;i++) ( ; ) for(j=0;j<4;j++) ( ; ) a[i][j]=i+j; ;
引导问题
1、课程的成绩如何存储 、 2、学生信息如何存储 、 3、如何对成绩进行排序? 、如何对成绩进行排序?
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
计算50个学生成绩的平均分 main() { int i, x, s=0; for( i=0; i<50; i++) {scanf(“%d”,&x); s+=x; } printf(“%f\n”, s/50.0); } 只用了三个变量就 解决了问题,但数 如果需要把成绩按 据没有保存。
设 计
语 言 程 序
任务1 输入/输出多个学生一门 任务 输入 输出多数组的初始化
(2)在定义数组时,对部分数组元素赋初值
Example
C C C C
int a[5]={1,2,3}; 系统为其余元素赋0 系统为其余元素赋
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
任务3 任务 处理多位学生多门课程的成绩
4.3.1 二维数组
二维数组的定义
数据类型
数组名[常量表达式1][常量表达式2];

Example

float x[2][3];
int x[0][1] x[0][2] ; x[0][0]a[3,4], b(3,4); x[1][0] x[1][1] x[1][2] int c[ ][ ], d(3)(4);
4.1.2 一维数组的引用
数组的赋值只能逐个对数组元素赋值,不能直接对数组名赋值。 因数组在内存占一片连续的存储空间,可用循环语句处理数组。
Example
Example
for(i=0;i<5;i++) ( ; ; ) a[i]=(i+1)*100; + ;
for(i=0;i<100;i++) ( ; ; ) a[i]=i+1; + ;
练习
下列程序有哪些错误?请解释错误原因。 下列程序有哪些错误?请解释错误原因。 (2) ) main( ) { int i, j, a[4][ ]=1,2,3,4,5,6,7,8; ; for( i=0;i<4;i++ ) ; ; for( j=0;j<2;j++ ) ; ; printf(“%d”,a[i][j]); ; } int a[ ][2]={1,2,3,4,5,6,7,8};
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.2 一维数组的引用
C语言规定只能逐个引用数组元素而不能一次引 用整个数组。
数组名[下标表达式];
Example
int n=5,a[20]; a[1] a[n] a[3*n]
若一个数组长度为n 若一个数组长度为n,其 下标值范围是0 (n下标值范围是0~(n-1)
4.1.2 一维数组
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
1、上例中,语句 average=sum/5.0; 修改为 average=sum/5; 结果如何? 2、练习:从键盘输入5个学生的成绩,求出并 输出分数最高的学生序号及最高成绩。 。
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
任务3 任务 处理多位学生多门课程的成绩
4.3.2 二维数组的引用 引用:
Example
数组名[行下标][列下标]
int a[3][4]; a[0][0]=3; a[0][1]=a[0][0]+10;
a[3][4]=3; /* 下标越界 */ a[1,2]=1; /* a[1][2]=1; */
任务3 任务 处理多位学生多门课程的成绩
表示引用数组a中的第2个元素 表示引用数组a中的第6个元素 表示引用数组a中的第16个元素
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.2 一维数组的引用
输入5个学生的数学成绩,计算平均分,将平均分 输出到屏幕上。 数组元素的地址也 void main() 是通过“&”运算符 得到的。 { int i,mathScore[5],sum=0;float average; for(i=0;i<5;i++) { scanf("%d",&mathScore[i]); } for(i=0;i<5;i++) { sum=sum+mathScore[i]; } average=sum/5.0; printf("%f ",average); }
设 计
项目四 语 言 程 序 C C C C
项目要点: 项目要点:
数组的定义和使用 数组的存储结构 数组的输入输出 字符串处理函数
学习目标: 学习目标:
使用数组处理同一类型的大批数据 使用字符数组处理字符串 使用二维数组处理字符串
工作任务导入
工作任务
一个班上50位学生参与考试, 一个班上 位学生参与考试,考了 位学生参与考试 3门课程,现要求按总成绩的高低输出 门课程, 门课程 成绩单
从高到低的顺序全部打 印出来,怎么办?
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
数 组
相同类型数据的 集合。 让一组同一类型 的数据共用一个变 量名,而不需要为 每一个数据都定义 一个名字。
4.1.1 一维数组 一维数组的定义
数据类型
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
{ printf(“the sorted nembers:\n”); t=x[j]; for( i=0; i<6; i++) x[j]=x[j+1]; printf(“%5d\n”, x[i]); x[j+1]=t; } }
任务2 任务 排序学生成绩
相关文档
最新文档