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语言中,可以使用冒泡排序、选择排序、插入排序、快速排序等算法对一组学生成绩进行排序。

以下是使用冒泡排序算法对一组学生成绩进行排序的示例代码:```cinclude <>define MAX_SIZE 100 // 定义数组最大长度int main() {int scores[MAX_SIZE]; // 定义成绩数组int n, i, j, temp; // n为成绩数量,i、j为循环计数器,temp为交换值printf("请输入学生成绩数量:");scanf("%d", &n);printf("请输入%d个学生成绩:\n", n);for (i = 0; i < n; i++) {scanf("%d", &scores[i]);}// 冒泡排序for (i = 0; i < n-1; i++) {for (j = 0; j < n-i-1; j++) {if (scores[j] > scores[j+1]) { temp = scores[j];scores[j] = scores[j+1]; scores[j+1] = temp;}}}// 输出排序后的成绩printf("学生成绩排序结果为:\n"); for (i = 0; i < n; i++) {printf("%d ", scores[i]);}printf("\n");return 0;}```该程序首先定义了一个整型数组`scores`,用于存储学生成绩。

然后通过循环输入学生成绩,并使用冒泡排序算法对成绩进行排序。

最后输出排序后的成绩。

C语言成绩的等级判别

C语言成绩的等级判别

C语⾔成绩的等级判别例9:C语⾔实现按照考试成绩的等级输出百分制分数段,A等为85-100分,B等为70-84分,C等为60-69分,D等为60分以下。

解题思路:这是⼀个多分⽀选择问题,根据百分制分数将学⽣成绩分为4个等级,如果⽤if语句来处理⾄少需要3层嵌套的if,进⾏3次检查判断。

⽤switch语句,进⾏⼀次检查即可得到结果。

源代码演⽰:#include<stdio.h>//头⽂件int main()//主函数{char grade; //定义成绩级别字符变量printf("输⼊成绩级别:");//提⽰语句scanf("%c",&grade); //键盘输⼊printf("成绩段:");//提⽰语句switch(grade) //switch多分⽀{case'A':printf("85-100\n");break;//输出A的成绩分布case'B':printf("70-84\n");break;//输出B的成绩分布case'C':printf("60-69\n");break;//输出C的成绩分布case'D':printf("不及格⼩于60\n");break;//输出D的成绩分布default:printf("输⼊成绩等级有误\n");//输出成绩级别有误}return0;//函数返回值为0}编译结果:输⼊成绩级别:D成绩段:不及格⼩于60--------------------------------Process exited after 1.931 seconds with return value 0请按任意键继续. . .读者需要注意的⼀点是:switch后⾯括号内的“表达式”,其值的类型应为整数类型(包括字符型),switch语句的作⽤是根据表达式的值,使流程跳转到不同的语句。

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语言编写的学生成绩管理系统的简单代码,可以用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。

[考试]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语言学生成绩评级方面,通常会根据学生的得分来进行评定。

评级的标准可以根据学校或教育机构的要求而有所不同,但一
般会考虑以下几个方面:
1. 百分制评级,这是最常见的评级方式,根据学生的得分百分
比来划分等级。

例如,90%以上的得分可能被评为A级,80-89%的得
分为B级,70-79%的得分为C级,60-69%的得分为D级,60%以下的
得分为F级。

2. 等级制评级,有些学校或教育机构使用等级制评级,例如优、良、中、及格、不及格等等。

这种评级方式更加简单明了,不过可
能会缺乏细致的区分。

3. GPA评级,GPA(Grade Point Average)是一种综合评价学
生学业成绩的方法。

每个成绩对应一个绩点,绩点的大小与成绩的
优劣相关。

一般来说,4.0的绩点对应A级,3.0对应B级,2.0对
应C级,1.0对应D级,0对应F级。

通过计算所有课程的绩点平均值,可以得到学生的GPA评级。

4. 考试排名评级,有些学校或教育机构会根据学生在班级或整个年级中的排名来进行评级。

例如,前10%的学生可以评为A级,接下来的10%为B级,以此类推。

除了以上常见的评级方式,还可以根据具体情况进行个性化评级。

例如,可以根据学生在课堂中的表现、作业质量、参与度等因素进行综合评估。

需要注意的是,评级只是对学生学业成绩的一种概括和总结,并不能完全反映学生的能力和潜力。

评级应该被视为一种参考,而不是唯一的衡量标准。

此外,评级应该公正、客观,并且要根据学生的实际水平来进行,以激励学生的学习动力和提供针对性的教育帮助。

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语言程序——学生成绩成绩表
{
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语言程序)

/*1、一个班级有M=5个学生,每个学生有N=3门成绩,一个学号Num。

均由键盘输入。

a) 每个学生的平均成绩,连同学号,输出。

要求每行输出一个同学,其格式为:学号,平均成绩b) 按照学生平均成绩从高到低排序后,连同学号,输出。

要求每行输出一个同学,其格式为:学号,平均成绩c) 全班每门课程的平均成绩,输出。

要求每行输出一门平均成绩,保留小数点后两位,比如:输出:第一门课程的平均成绩:90.35第二门课程的平均成绩:89.86第三门课程的平均成绩:77.682、输入一个长度不超过32的字符串,判断它是否回文。

如:ab22ba,level 均为回文。

3、编一个程序,将两个字符串连接起来,作为另外一个字符串输出。

不要用strcat 函数。

(例:输入china 和pliceman 两个字符串,结果应为chinapliceman 字符串)4、用选择法对7个字符串排序,并输出。

7个字符串用gets函数输入。

*/#include<stdio.h>#include<string.h>#define NUM 5int main(){struct student{int ID;int score1;int score2;int score3;double ave;}stu[5],t;int a,b,c;double p1,p2,p3;for(a=0;a<NUM;a++){printf("请输入第%d位同学的三门课程成绩:\n",a+1);scanf("%d %d %d",&stu[a].score1,&stu[a].score2,&stu[a].score3);printf(" 学号第一门成绩第二门成绩第三门成绩平均分\n");stu[a].ave=(stu[a].score1+stu[a].score2+stu[a].score3)/3;stu[a].ID=a+1;printf("%5d %5d %5d %5d %-8.1f\n",stu[a].ID,stu[a].score1,stu[a].score2,s tu[a].score3,stu[a].ave);}p1=(stu[0].score1+stu[1].score1+stu[2].score1+stu[3].score1+stu[4].score1)/3;p2=(stu[0].score2+stu[1].score2+stu[2].score2+stu[3].score2+stu[4].score2)/3;p3=(stu[0].score3+stu[1].score3+stu[2].score3+stu[3].score3+stu[4].score3)/3;for(c=0;c<NUM;c++){for(b=0;b<NUM-c-1;b++){if(stu[b].ave>stu[b+1].ave){t=stu[b];stu[b]=stu[b+1];stu[b+1]=t;}}}printf("第一门课程全班平均分%.2lf\n",p1);printf("第二门课程全班平均分%.2lf\n",p2);printf("第三门课程全班平均分%.2lf\n",p3);printf("");return 0;}。

C语言排序学生成绩

C语言排序学生成绩
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];
•C语言排序学生成绩
任务1 输入/输出多个学生一门 课程的成绩
4.1.2 一维数组的引用
C语言规定只能逐个引用数组元素而不能一次引 用整个数组。
数组名[下标表达式];
Example
int n=5,a[20];
若一个数组长度为n,其 下标值范围是0~(n-1)
a[1] a[n] a[3*n]
表示引用数组a中的第2个元素 表示引用数组a中的第6个元素 •C语表言排示序引学用生成数绩组a中的第16个元素
•C语言排序学生成绩
任务2 排序学生成绩
任务1中已经输入了50个同学的成 绩到数组中,现在需要确定如何对学 生成绩从低到高进行排序。
•C语言排序学生成绩
任务2 排序学生成绩
711111
155533
5 6
_
6 7
_
6 3
_
3 6
_
5 6
_
5 5
937776
两层循环结构
外层循环每次
399999
把操作范围内
设 系统为其余元素赋0
•C语言排序学生成绩
任务1 输入/输出多个学生一门 课程的成绩
4.1.3 一维数组的初始化
(3)当初值的个数多于数组元素的个数时, 编译出错
Example
int a[5]={1,2,3,4,5,6,7};
•C语言排序学生成绩
任务1 输入/输出多个学生一门 课程的成绩

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语言程序设计项目四学生成绩的排序
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]

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语言 学生成绩排序

课程设计报告学生姓名:专业:班级:学号:指导教师: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个学生的成绩。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
s->score= s->score+ temp *(int)pow(10.0,j);
}
}
void main()
{
int n,i;
student stu[20];
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
input(&stu[i]);
}
sort(stu,n);
zhang4,91
zhang5,98
则排序结果应该为:
zhang3,99
zhang5,98
zhang2,91
zhang4,91
zhang1,90
请注意例题中“zhang2”和“zhang4”的排列顺序。
输入:
第一行为将要输入的学生数量n
从第二行起后面连续 n 行数据,每行为一名学生的姓名(长度不超过20个字符,不包括空格),考试成绩(int)
for(i=0;i<n;i++)
{
printf("%s,%d\n",stu[i].name,stu[i].score);
}
}
{
char nametemp[20];
strcpy(nametemp,s1->name);
strcpy(s1->name,s2->name);
strcpy(s2->name,nametemp);
int temp;
temp=s1->score;
s1->score=s2->score;
s2->score=temp;
}
void sort(student stuபைடு நூலகம்],int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
{
if(stu[j].score<stu[j+1].score)
{
swap(&stu[j],&stu[j+1]);
}
else if(stu[j].score==stu[j+1].score)
50 学生成绩排序
成绩: 10 / 折扣: 0.8
大家参加了期末考试,成绩出来后老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。例如:有5名学生的成绩:
zhang1,90
zhang2,91
zhang3,99
5.zhang42,90?
6.zhang1,90?
以文本方式显示
1.zhang31,90?
2.zhang51,90?
3.zhang2,90?
4.zhang42,90?
5.zhang1,90?
1秒
64M
0
测试用例 3
以文本方式显示
1.1?
2.wang,100?
输出:
排序后的结果。每行为一名学生的姓名和成绩。
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
以文本方式显示
1.5?
2.zhang1,90?
3.zhang2,91?
4.zhang3,99?
5.zhang4,91?
6.zhang5,98?
{
if(strcmp(stu[j].name,stu[j+1].name)>0)
{
swap(&stu[j],&stu[j+1]);
}
}
}
}
void input(student * s)
{
char string[30];
gets(string);
int n,i,j;
n=strlen(string);
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct student
{
int score;
char name[20];
}student;
void swap(student * s1,student * s2)
以文本方式显示
1.wang,100?
1秒
64M
0
开启时间
2012年05月 21日 星期一 12:00
折扣时间
2012年05月 30日 星期三 23:55
关闭时间
2012年06月3日 星期日 23:55
允许迟交: 是
以文本方式显示
1.zhang3,99?
2.zhang5,98?
3.zhang2,91?
4.zhang4,91?
5.zhang1,90?
1秒
64M
0
测试用例 2
以文本方式显示
1.5?
2.zhang31,90?
3.zhang51,90?
4.zhang2,90?
for(i=0;i<n;i++)
{
if(string[i]==','){s->name[i]='\0';break;}
s->name[i]=string[i];
}
s->score=0;
int temp;
j=n-(i+1)-1;
for(i++;i<n;i++,j--)
{
temp=(int)string[i]-48;
相关文档
最新文档