c语言例题 选择法对平均成绩排序
C语言数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插入法排序、折半法排序
C语⾔数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插⼊法排序、折半法排序⽂章⽬录1、选择法排序选择法排序是指每次选择索要排序的数组中的最⼩值(这⾥是由⼩到⼤排序,如果是由⼤到⼩排序则需要选择最⼤值)的数组元素,将这些数组元素的值与前⾯没有进⾏排序的数组元素值进⾏互换代码实现需要注意的是:声明⼀个数组和两个整形变量,数组⽤于存储输⼊的数字,⽽整形变量⽤于存储最⼩的数组元素的数值与该元素的位置,在我的代码中实现为a[] temp position。
代码具体如下#include<stdio.h>int main(){int m,n,k;printf("please input the length of the array:");scanf("%d",&k);int a[k];int temp;int position;printf("please input the number of the array:\n");for(m=0;m<k;m++){printf("a[%d]=",m+1);scanf("%d",&a[m]);}/*从⼩到⼤排序*/for(m=0;m<k-1;m++){temp=a[m]; //设置当前的值为最⼩值position=m; //记录当前的位置for(n=m+1;n<k;n++){if(a[n]<temp){temp=a[n]; //如果找到⽐当前的还要⼩的数值,则更换最⼩的数值与位置position=n;}}a[position]=a[m];a[m]=temp;}for(m=0;m<k;m++){printf("%d\t",a[m]);}return 0;}结果如下2、冒泡法排序冒泡法排序就是值在排序时,每次⽐较数组中相邻的两个数组元素的值,将⽐较⼩的(从⼩到⼤排序算法,如果是从⼤到⼩排序算法就是将较⼤的数排在较⼩的数前⾯)排在⽐较⼤的前⾯在代码实现的过程中:声明⼀个数组与⼀个整型变量,数组⽤于存放数据元素,整型变量⽤于交换时作为中间变量。
C语言课程设计---班级成绩管理系统
课程设计报告课程名称C语言程序设计课题名称班级成绩管理系统专业班级学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称C语言程序设计课题班级成绩管理系统专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日目录一、引言 (1)二、总体设计 (2)三、详细设计 (4)四、问题分析及总结 (13)五、参考文献 (15)六、附件 (15)一、设计内容与设计要求1. 设计内容:班级成绩管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。
2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)学生成绩显示:完成班级全部学生成绩的显示,显示时按表格的形式,且应有表头;(3)学生成绩追加:完成新增一个(或多个)学生的成绩记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算学生平均成绩并显示;(4)学生成绩修改:要求能按学号和按姓名两种定位方式,且可以按用户要求修改记录中除学号和姓名以外的指定内容,并重新计算学生的平均成绩;(5)学生成绩信息的查询;要示系统能按学号、按姓名查询以及能查总分在某一指定范围内的学生信息,且能显示符合条件的所的记录,若所需查询的信息不存在时应有相应的提示信息。
c语言输入10个同学的成绩总分和平均值
c语言输入10个同学的成绩总分和平均值C语言输入10个同学的成绩总分和平均值一、前言在学习编程语言的过程中,C语言是一个非常基础且重要的语言。
在C 语言中,输入输出是非常基础的内容之一,学会如何输入和处理数据是我们学习编程的第一步。
本文将以输入10个同学的成绩总分和平均值为题,深入探讨C语言中的输入输出操作,并共享我对这个主题的个人理解。
二、基本概念在C语言中,我们可以通过scanf()函数来实现数据的输入。
scanf()函数是一个输入函数,可以将用户输入的数据存储到指定的变量中。
在本题中,我们需要输入10个同学的成绩,分别存储到不同的变量中。
三、具体操作在C语言中,我们可以使用循环来反复输入数据,以实现输入10个同学的成绩。
我们需要定义一个数组来存储这10个同学的成绩,然后通过循环依次输入每个同学的成绩。
我们可以使用循环再次遍历数组,求得这10个同学的成绩总和。
通过平均值公式,我们可以求得这10个同学的成绩平均值。
四、代码示例```c#include <stdio.h>int main() {int scores[10];int sum = 0;double average = 0.0;// 输入10个同学的成绩for (int i = 0; i < 10; i++) {printf("请输入第%d个同学的成绩:", i + 1);scanf("%d", &scores[i]);}// 计算成绩总和for (int i = 0; i < 10; i++) {sum += scores[i];}// 计算平均值average = (double) sum / 10;// 输出成绩总和和平均值printf("这10个同学的成绩总和为:%d\n", sum);printf("这10个同学的成绩平均值为:%.2f\n", average);return 0;}```五、总结回顾通过以上的代码示例,我们了解了如何在C语言中输入10个同学的成绩总分和平均值。
选择排序法与冒泡排序法——C语言
2、冒泡排序法 #include<stdio.h> void main(void)/*冒泡排序法*/ /*从键盘上输入10个学生的成绩,用冒泡排序法输出成绩*/ { int d[9]; int z,t,i,j; z=1; while(z) { printf("输入10个学生的成绩以逗号隔开:\n");
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&d[0],&d[1],&d[2],&d[3],&d[4],&d[5],&d[6],&d[7],&d[8],&d[
for(i=0;i<9;i++) for(j=i+1;j<=9;j++) if(d[i]<d[j]) { t=d[i]; d[i]=d[j]; d[j]=t;
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&d[0],&d[1],&d[2],&d[3],&d[4],&d[5],&d[6],&d[7],&d[ 8],&d[9]); for(i=1;i<10;i++) for(j=0;j<=9-i;j++) if(d[j]<d[j+1]) { t=d[j]; d[j]=d[j+1]; d[j+1]=t; } printf("学生成绩由大到小: \n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8],d[9]); printf("\n输入1继续此程序,输入0结束此程序"); scanf("%d",&z); }
C语言经典例题以及答案
作业一一、求一个任意边长的矩形面积。
#include<stdio.h>voidmain(){intw,h,sum;scanf("%d%d",&w,&h);sum=w*h;printf("area=%d\n",sum);}二、求一个任意半径的圆的面积及周长。
#definePI#include<stdio.h>voidmain(){floatr,area,c;scanf("%f",&r);area=PI*r*r;c=2*PI*r;printf("area=%f\ncircle=%f\n",area,c);}三、已知:w=5,y=4,z=2, 求表达式:w*y/z的值,并输出。
##include<stdio.h>voidmain(){intw,y,z,r;w=5;y=4;z=2;r=w*y/z;printf("%5d",r);}作业二一、从键盘上输入三个数,求出其中的最大值,并输出。
#include<stdio.h>voidmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("max=%d\n",max);}二、求sin300。
+sin600+cos300+cos600之和。
(注意:)#include<stdio.h>#definePI#include<math.h>voidmain(){floata,b,sum;a=30*PI/180;b=60*PI/180;sum=sin(a)+sin(b)+cos(a)+cos(60);printf("total=%f\n",sum);}三、比较两个数的大小。
简单选择排序C语言
算法原理:通过相邻元素比较和交换,将较大的元素逐渐往后移动 时间复杂度:O(n^2),其中n为元素数量 空间复杂度:O(1),即算法只需要常数级别的额外空间 适用场景:适用于小规模数据的排序,但对于大规模数据排序效率较低
时间复杂度:简单选 择排序的时间复杂度 为O(n^2),与其他排 序算法相比可能较慢
快速排序算法的时间复杂度为O(nlogn),在平均情况下比简单选择排序和冒泡排序更高效。
快速排序算法的空间复杂度为O(logn),需要额外的空间来存储递归调用的函数栈。
快速排序算法在处理大数据集时表现优秀,但在最坏情况下(输入数据已经有序或接近有序)的时间复杂度会退 化到O(n^2)。
空间复杂度:O(1),因为算法只需 要常数级别的额外空间。
添加标题
添加标题
添加标题
添加标题
时间复杂度:最好、最坏和平均情 况下为O(n^2),其中n是数组长度。
适用场景:对于小规模数据的排序, 插入排序相对简单且易于实现。
快速排序算法的基本思想是采用分治法,将数组分成两个子数组,分别对子数组进行排序,然后合并成一个有序 数组。
代码示例:下面是一个简单的C语言实现简单选择排序的代码示例,可以帮助理解算法的实现过程。
注意事项:在实现简单选择排序时需要注意数组越界的问题,以及在处理大数据量时需要考虑算法的时间 复杂度和空间复杂度。
数组元素必须为整数 数组元素必须为正整数 数组元素必须按升序排列 数组元素不能重复
减少比较次数
限制:对于大型数据集,简单选择排序算法的性能较差,有更高效的排序算法可供选择,如快速排序、归并排序 等。
场景:简单选择排序算法适用于对稳定性要求不高的场景,如对少量数据进行快速排序、对小型数据集进行初步 排序等。
C语言程序设计实验指导书答案
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境Visual C++或者Dev C++或者Turbo /。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”6.输入并编辑本章中给出的C程序例子,在自己用的环境中形成一个C语言源程序文件;对这个源程序进行加工,得到对应的可执行程序,看一看它的效果。
实验结果:1.#include <>#include <>main( ){ int i,j,k;printf("input i,j,k:");#include <>#include <>main( ){ int i,j;printf("input i,j(not 0):");#include <>#include <>main( ){ int i,j,k;printf("input i,j,k:");#include <>#include <>#define pimain( ){ float r;printf("input r:");scanf("%f",&r);#include <>#include <>#define pimain( ){printf("hello world!");system("Pause");}6.略实验二(第3章实验一)实验目的:理解C语言的类型系统。
(完整)《C语言程序设计课程设计》题目——软件工程2班
1 一元稀疏多项式的运算问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理.实现要求:⑴输入并建立多项式;⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。
序列按指数降序排列;⑶多项式A和B相加,建立多项式A+B,输出相加的多项式;⑷多项式A和B相减,建立多项式A-B,输出相减的多项式;⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式;⑹设计一个菜单,至少具有上述操作要求的基本功能。
测试数据:(1) (2x+5x8-3.1x11)+(7—5x8+11x9)(2) (6x-3—x+4。
4x2-1。
2x9)-(-6x-3+5.4x2+7。
8x15)(3)(x+x2+x3)+0(4)(x+x3)—(-x—x-3)2 成绩排序假设某年级有4个班,每班有45名同学。
本学期有5门课程考试,每门课程成绩是百分制。
假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求:⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩;⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中;⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表;⑹设计一个菜单,至少具有上述操作要求的基本功能。
(本题⑸由2人完成)3 迷宫问题问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
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语言学生成绩排序
50 学生成绩排序成绩: 10 / 折扣: 0.8大家参加了期末考试,成绩出来后老师要对n个学生进行成绩汇总和排序。
要求程序按成绩降序进行排序。
在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。
例如:有5名学生的成绩:zha ng1,90zha ng2,91zha ng3,99zha ng4,91zha ng5,98则排序结果应该为:z hang3,99z hang5,98z hang2,91z hang4,91z hang1,90请注意例题中“zh ang2”和“zha ng4”的排列顺序。
输入:第一行为将要输入的学生数量n从第二行起后面连续n 行数据,每行为一名学生的姓名(长度不超过20个字符,不包括空格),考试成绩(int)输出:排序后的结果。
每行为一名学生的姓名和成绩。
测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1.5?2.zhan g1,90?3.z hang2,91?4.zha ng3,99?5.zhang4,91? 6.zh ang5,98?以文本方式显示1.zhan g3,99?2.z hang5,98?3.zha ng2,91?4.zhang4,91? 5.zh ang1,90?1秒64M0 测试用例 2以文本方式显示1.5?2.zhan g31,90? 3.zhang51,90?4.z hang2,90?5.zha ng42,90? 6.zhan g1,90?以文本方式显示1.z hang31,90?2.zh ang51,90?3.zha ng2,90?4.zhang42,90?5.z hang1,90?1秒64M0测试用例3以文本方式显示1.1?2.wan g,100?以文本方式显示1.w ang,100?1秒64M0 开启时间2012年05月21日星期一 12:00 折扣时间2012年05月 30日星期三23:55关闭时间2012年06月3日星期日23:55允许迟交:是#i nclud e<std io.h>#inc lude<strin g.h>#incl ude<m ath.h>typ edefstruc t stu dent{int scor e;ch ar na me[20];}s tuden t;vo id sw ap(st udent * s1,stud ent * s2){cha r nam etemp[20];strc py(na metem p,s1->name);st rcpy(s1->n ame,s2->na me);strcp y(s2->name,name temp);int temp;tem p=s1->scor e;s1->sco re=s2->sco re;s2->sc ore=t emp;}voi d sor t(stu dentstu[],intn){int i,j;f or(i=0;i<n;i++)for(j=0;j<n-1;j++){if(stu[j].sco re<st u[j+1].sco re){swap(&stu[j],&stu[j+1]);}el se if(stu[j].sc ore==stu[j+1].s core) {if(strc mp(st u[j].name,stu[j+1].n ame)>0) {swap(&stu[j],&s tu[j+1]);}}}}vo id in put(s tuden t * s){c har s tring[30];gets(stri ng);int n,i,j;n=st rlen(strin g);f or(i=0;i<n;i++){if(stri ng[i]==','){s->name[i]='\0';br eak;}s->n ame[i]=str ing[i];}s->sc ore=0;int temp;j=n-(i+1)-1;for(i++;i<n;i++,j--){te mp=(i nt)st ring[i]-48;s->score= s->score+ tem p *(i nt)po w(10.0,j); }}voidmain(){i nt n,i;st udent stu[20];scanf("%d\n",&n);fo r(i=0;i<n;i++){inp ut(&s tu[i]);}sort(stu,n);fo r(i=0;i<n;i++){pri ntf("%s,%d\n",s tu[i].name,stu[i].sc ore); }}。
C语言习题:顺序、选择、循环
2.3顺序结构程序设计2.3.1 要点导读1.printf() 与scanf()语句。
printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。
它们位于stdio.h库文件中。
2.字符数据的输入输出。
最简单的字符输入输出函数是getchar()和putchar()。
两者分别从键盘读一个字符或向显示屏写一个字符。
2.3.2 经典例题分析1.下列程序运行后输出的结果是。
#include <stdio.h>void main(){int a=0,b=0;a=10;b=20;printf(“a+b=%d”,a+b);}分析:printf( )是输出函数,它的括号内由两部分组成:1)控制字符串,是用双引号括起来的字符串,它包括两种信息:(1) 格式说明。
由”%”和格式字符组成,如:%d、%f、%c等。
它的作用是将输出的数据转换成指定的格式输出。
(2) 普通字符。
需要原样输出的字符。
2)”输出表列”是需要输出的一些数据,可以是表达式。
题目中a的值是10,b的值是20,在printf(“a+b=%d”,a+b);格式说明输出表列中,”a+b= “是普通字符,需原样输出。
输出表列是一个表达式,它的结果以整型输出。
答案:a+b=30。
2.下列程序运行后输出的结果是。
#include <stdio.h>void main(){int a=732;printf(“%d\n”,a);printf(“%2d\n”,a);printf(“%10d\n”,a);printf(“%-10d\n”,a);}分析:d格式符,用来输出十进制整数。
其中%d,按整型数据的实际长度输出。
%md,m为指定的输出字段的宽度。
如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
printf(“%d\n”,a);把a的值按原样输出:732。
C语言程序设计(第2版)-- 课后题答案
《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。
#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
C语言排序学生成绩
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;
C语言 学生成绩分等级及分组汇总
①for语句中的各表达式都可省略,但分号间隔符不能少。 如:for(;表达式;表达式)省去了表达式1。 for(表达式;;表达式)省去了表达式2。 for(表达式;表达式;)省去了表达式3。 for(;;)省去了全部表达式。 ②在循环变量已赋初值时,可省去表达式1,如例3.11 即属于这种情形。 ③如省去表达式2或表达式3则将造成无限循环, 这时应 在循环体内设法结束循环
任务2 将学生成绩分等级
3.2.3 switch语句使用注意事项
(1) 在每个case后的各常量表达式的值应互不能相同,否则会出现错误。
(2) 在每个case后允许有多个语句,可以不用{ }括起来。 (3) 许多个case共用一个语句序列。
(4) 如果每个case中都有break语句,那么case和default出现的次序不会影
练习
1、编程:用户输入运算数和四则运算符,输出计 算结果。
2、本任务对某位同学的一次考试成绩进行百分 制评分,共分A、B、C、D、E五个等级,90分以 上为‘A‟,80~89分为‘B‟,70~79分为‘C‟、 60~69分为‘D‟,60分以下为‘E‟。
任务3 统计一组学生的总分及平均分
数学期末考试成绩出来了,一个小组有 成员10人,要求计算这一组的成绩总分与 平均分,并按要求输出。
任务1 寻找最大值与最小值
3.1.4 条件运算符和条件表达式
条件运算符: ? : 三目运算符 条件表达式:由条件运算符组成条件表达式 表达式1 ?表达式2 : 表达式3 条件运算符不能分开单独使用,?:配套使用 例如:if(a>b) max=a; else max=b; 可用条件表达式写为 max=(a>b)?a:b; max=a>b?a:b;
选择法排序c语言代码
选择法排序c语言代码
选择法排序(Selection sort)是一种简单的排序算法。
具体实现思路如下:
1.首先在未排序的序列中找到最小(或最大)元素,存放到排序序列的起始
位置;
2.接着,从剩余未排序的元素中继续寻找最小(或最大)元素,然后放到已
排序序列的末尾;
3.重复第二步,直到所有元素均排序完毕。
以下是C语言实现选择法排序的代码示例:
void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n - 1; i++) {
minIndex = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
以上代码中,arr为待排序的数组,n为数组长度。
selectionSort函数实现了选择法排序的过程,其中两个嵌套循环用于查找最小值和交换元素位置。
时间复杂度为O(n2)O(n2),是比较低效的排序方式,但对于小规模的数据集来说,还是非常有效的。
c语言中选择法排序
c语言中选择法排序介绍选择法排序是 C 语言中排序的一种方法。
是通过不断选择最小的值进行排序,逐步将无序序列变为有序序列的过程。
这种排序方式简单直观,适用于小数据集的排序,但其实际用途并不广泛。
实现原理选择法排序不同于冒泡排序,它并不一定需要进行数据交换。
选择法排序的实现思路如下:1. 在无序的数据集中,找到最小值。
2. 将最小值与第一个元素交换位置,这样第一个元素就是最小的值。
3. 在剩下的数据集中,找到最小值,放到第二个位置。
4. 不断重复上述过程,直到数据集中的元素都被排序完成。
下面就是一个简单的选择法排序的 C 代码实现:```c void SelectionSort(int arr[], int n){ int i, j, min_idx; for (i = 0; i < n-1; i++) { min_idx = i; for (j =i+1; j < n; j++) if (arr[j] <arr[min_idx]) min_idx = j; swap(&arr[min_idx], &arr[i]); } } ```算法优化选择法排序在每次迭代中都会找到最小值,有些情况下会浪费掉一些运算的次数。
比如我们可以通过对数据的对半减少搜索来优化算法。
下面是代码实现:```c void SelectionSort(int arr[], int n){ int left = 0, right = n - 1; while (left < right) { int min = arr[left], max =arr[left]; int min_pos = left, max_pos = left; for (int i = left; i <= right; i++) { if (arr[i] < min){ min = arr[i];min_pos = i; } if (arr[i] > max) { max = arr[i]; max_pos = i; } } if (min_pos != left) { swap(&arr[min_pos], &arr[left]); } if (max_pos == left) { max_pos = min_pos; }if (max_pos != right){ swap(&arr[max_pos],&arr[right]); } left++;right--; } } ```总结选择法排序是 C 语言中用于排序的简单,直观的方式。
C++输入函数和成绩显示函数,并计算每位同学的总分和平均分,对成绩排名输出
《C++程序设计》测试题Luozhengchun编写C++程序完成某班学生考试成绩的统计管理,包括成绩的输入函数和成绩显示函数,并计算每位同学的总分和平均分,对成绩排名输出。
#include <stdio.h> /*标准输入、输出函数库*/#include <string.h> /*字符串处理函数库*/#include <stdlib.h> /*整数和字符串的转换函数*/#define N 10 /*宏定义,设定班里学生的个数*/void main_mun(); /*输入学生的成绩*/void input(); /*显示学生的成绩*/void output(); /*计算学生的平均成绩*/void average(); /*计算学生的总成绩*/void sum_score(); /*对学生的成绩进行排名*/void sort();char student[N+1][12]={"王非","李丽","刘红","张伟","陈雷","赵丹","罗冰","钱惠云","孙杨","周正","差无此人"}; /*用来记录学生的姓名*/float score[N][4]; /*用来记录学生的各门成绩(数学、语文、英语、政治)*/float aver[N]; /*用来记录学生的平均成绩*/float sum_sc[N]; /*用来记录学生的总成绩*/int sor[N]; /*用来记录每个学生排名情况*/int main(){int in; /*输入的选择转换成整数*/int i,j; /*程序循环所用变量*/char select[6]; /*用于主菜单选择的字符*/for (i=0; i<N; i++) /*对学生成绩进行初始化*/for (j=0; j<4; j++)score[i][j]=0.00;printf("学生考试成绩的统计管理\n");main_mun();gets(select);while ((strcmp(select,"q")!=0)&&(strcmp(select,"Q")!=0)){in=atoi(select); /*将输入的字符串转换成整数*/if( in != 0){switch (in){case 1:{input();break;}case 2:{output();break;}case 3:{average();break;}case 4:{sum_score();break;}case 5:{sort();break;}default:printf("输入的选择有错,请重输!\n"); }main_mun();}gets(select);}printf("管理系统结束!!\n");return 0;}/*学生考试成绩的统计管理主菜单*/ void main_mun(){printf("1: 输入学生的成绩\n");printf("2: 显示学生的成绩\n");printf("3: 计算学生的平均成绩\n"); printf("4: 计算学生的总成绩\n");printf("5: 根据学生成绩排名次\n");printf("请输入你的选择:(q(Q)退出)\n");}/*输入学生的成绩*/void input(){float sc[4]; /*输入成绩的中间变量*/int number; /*表示学号*/int flag=0; /*输入成绩是否有误的标志*/int i;printf("输入学号:\n"); /*循环控制变量*/ printf("输入学生的成绩:\n");scanf("%d",&number);while((number<0)||(number>N)){printf("输入学号有误!!!.\n");return;}printf("输入学生%s的成绩\n",student[number]);printf("数学、语文、英语、政治\n");scanf("%f%f%f%f",&sc[0],&sc[1],&sc[2],&sc[3]);getchar();/*判断成绩输入是否越界*/for (i=0; i<4; i++)if ((sc[i]>100.00)||(sc[i]<0.00)){flag=1;printf("输入成绩有误!!\n");return;}/*成绩未越界后,进行赋值*/for (i=0; i<4; i++)score[number][i]=sc[i];}/*显示学生的成绩*/void output(){int i; /*循环控制变量*/for(i=0;i<N;i++){printf("输出%s各门成绩:\n数学、语文、英语、政治\n",student[i]);printf("%.2f %.2f %.2f %.2f\n\n",score[i][0],score[i][1],score[i][2],score[i][3]); }}/*计算学生的平均成绩*/void average(){float sc=0.00; /*中间变量*/int i,j; /*循环控制变量*/for (j=0; j<N; j++){sc=0.0;for (i=0; i<4; i++)sc+=score[j][i];aver[j]=sc/4;printf("学生%s的平均成绩是:%.2f\n",student[j],aver[j]);}}/*计算学生的总成绩*/void sum_score(){int i,j; /*循环控制变量*/printf("输出学生的总成绩:\n");for (j=0; j<N; j++){sum_sc[j]=0;for (i=0; i<4; i++)sum_sc[j]+=score[j][i];printf("学生%s的总成绩是:%.2f\n",student[j],sum_sc[j]);}}/*对学生的成绩进行排名,以平均成绩为例*/void sort(){int i,j,temp,location; /*循环控制变量*/float max,sc; /*比较用中间变量*/float aver[N];int flag; /*排序是否交换的标志*/int sor[N]; /*记录排序的位置*/for (j=0; j<N; j++){sor[j]=j;sc=0.0;for (i=0; i<4; i++)sc+=score[j][i];aver[j]=sc/4;}for (i=0; i<N; i++) /*对学生平均成绩进行排序*/ {flag=0;max=aver[i];location=i;for (j=i+1; j<N; j++){if (aver[j]>max){max=aver[j];flag=1;location=j;}}if(flag==1){aver[location]=aver[i];aver[i]=max;temp=sor[i];sor[i]=sor[location];sor[location]=temp;}}printf("排序后的结果是:\n");for(i=0;i<N;i++){printf("第%d名学号%d 姓名%s",(i+1),sor[i],student[sor[i]]);printf("%f\n",aver[i]);}}结果如下:例如、输入学号为1的学生:显示成绩:平均成绩:总成绩:成绩排名:其他的结果按照相关提示操作可得出相应的结果,在此不再列出。
C语言学生成绩查询系统
.实训目的能力目标全面熟悉、掌握C语言基本知识,掌握C程序设计中数组、函数、指针的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
实训要求:(1)掌握C语言中的基本数据输入、输出;(2)熟练使用C语言中的数组;(3)熟练使用C语言中的函数;(4)熟练使用C语言中的指针;(5)熟练使用C语言中的结构体。
实训内容(过程及步骤)设计题目:学生成绩查询系统1、基本思路:以数组为基础,加以函数和结构体。
然后程序分由“输入学生成绩”,“输出学生成绩”,“查询学生成绩”,“修改学生成绩”,“查看成绩排序”,“查看成绩统计保存数据”,“读取数据”等等这几大部分组成。
这五部分各自用一个程序列出,然后在用其他函数将他们连接起来。
2、程序:#include<stdafx.h>..#includ e <stdlib.h > #includ e <stdio.h> #includ e <string.h > #includ e <conio.h>#defineN10 /***** 定义结构体*****/typedef struc t students /*标记为students*/ { char num[10]; /* 学生学号*/ cha r name[10]; /* 学生姓名*/int age ; /*年龄*/ cha r sex[10]; /* 性别*/ float cyy; /*C 语言成绩*/ flo at compute r; /* 计算机成绩*/ flo at english ; /* 英语成绩*/ float pj; /* 平均成绩*/ }STU; STUtemp;voidsort(STUstudents[], int n); //排序 voidsave(STUstudents[], int n ); //导出 int L ocate(STUstudents[], int n ); //查询/*-------------- 显示菜单--------------------*/chardisplaymenu() {char k; system( "cls" );printf( "学生成绩管理\n");printf("----------------------------------- 应用菜单-------------------------------------\n" );printf( "1输入学生成绩\n\n"); printf( " 2输出学生成绩\n\n");printf( "3 查询学生成绩\n\n"); printf( " 4修改学生成绩\n\n");printf( "5查看成绩排序\n\n");printf( "6查看成绩统计\n\n");printf( " 7 保存数据\n\n");printf( " 8 读取数据\n\n");printf( " 9 退出系统\n\n");printf( " 请选择你想进行的操作:");k=getchar();..return k;}/***** 定义输出函数*****/voidprintheader() /*格式化输出表头*/{printf( "\n\n************************ 学生成绩管理系统****************************\n\n\n" );printf( "| 学号| 姓名| 年龄| 性别|C语言成绩|计算机成绩| 英语成绩| 平均成绩|\n" ); }voidprintdata(STUpp) /*格式化输出表中数据*/{STU*p;p=&pp;printf( "|%-5s|%-5s|%-4d|%-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n" ,p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);}/***** 添加学生信息*****/int a dd(STUstudents[], int *n){int i=0;system( "cls" );printf( "\n" );printf( " 请输入学生信息\n" );printf( "退出请在学生号处输入:0\n" );printf( "请输入学生学号:\n" );scanf( "%s",students[i].num);while(strcmp(students[i].num, "0"))//当输入的学号为时结束输入{printf( "请输入学生姓名:\n" );scanf( "%s",students[i].name);printf( "****************\n\n\n" );printf( "请输入学生年龄:\n" );scanf( "%d",&students[i].age);printf( "****************\n\n\n" );printf( "请输入学生性别:\n" );scanf( "%s",students[i].sex);printf( "****************\n\n\n" );printf( "请输入C语言成绩:\n" );scanf( "%f",&students[i].cyy);printf( "****************\n\n\n" ); printf( "请输入计算机成绩:\n" ); scanf( "%f",&students[i].computer);..print f( "****************\n\n\n" );print f( "请输入英语成绩:\n");scanf ( "%f",&students[i].eng lish);print f( "****************\n\n\n" );students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;printf( "学生平均成绩:%-8.0f\n" ,students[i].pj);i++;printf( "****************\n\n\n" );printf( "请输入学生学号:\n" );scanf( "%s",students[i].num);}*n=i;save(students,i);return i;}/***** 查询学生信息函数*****/int L ocate(STUstudents[], int n){int k,m=-1;charnum[10],name[20];int i=0;system("cls" );printf( "退出请输入:0\n" );printf( "请选择以什么方式查询:1). 按学生学号查询2). 按学生姓名查询\n" );scanf( "%d",&k);if(k==1){printf( "请输入你要查询的学生学号:\n" );scanf( "%s",num);while(i<n){if(strcmp(students[i].num,num)==0) /*若找到学号*/{printf( ">>学生学号:%s\n*学生姓名:%s\n*学生年龄:%d\n*学生性别:%s\n>C语言成绩:%-8.0f\n> 计算机成绩:%-8.0f\n>> 英语成绩:%-8.0f\n>> 平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,st udents[i].pj);m=i;getchar();break;}i++;}if(i>=n)..printf( "没有所找学生信息 \n");getchar();}else if(k==2){printf( "请输入你要查询的学生姓名:\n" );scanf( "%s",name);while(i<n){if(strcmp(students[i].name,name)==0) /*若找到姓名*/{printf( "学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-8.0f\n 计算机成绩:%-8.0f\n 英语成绩:%-8.0f\n 平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);m=i;getchar();break;}i++;}if(i>=n)printf( "没有所找学生信息 \n");}return m;/*返回一个根m便于修改学生信息*/getchar();}/***** 显示函数*****/voidinput(STUstudents[], int n){int i;system("cls" ); //清屏if(n==0) /*表示没有学生信息记录*/{printf( "\n没有学生记录!\n" );}printf( "\n\n" );printheader(); /*输出表格头部*/i=0;while(i<n) /*逐条输出数组中存储的学生信息*/ {printdata(students[i]);i++;}getchar();..} /***** 修改子程序*****/ voi d Modify(STUstuden ts[], intn){int i;if(n<=0){ system ( "cl s" ); prin tf( "\n 退出请输入:0\n");printf ( "\n----------notfound!----------\n" ); getchar();return;} system ( "cls " ); print f( "修改学生信息"); input(students,n);i=Locate(students,n ); /*查询到该数组元素,并返回下标值*/ if(i!=-1) /*若i!=-,表明已经找到该数组元素 */ { printf ( "请输入新的学生信息:\n" ); printf ( " 学号:" );scanf( "%s",students[i].num); printf ( " 姓名:" );scanf( "%s",students[i].name); printf ( " 年龄:" );scanf( "%d",&students[i].age); printf ( " 性别:" );scanf( "%s",students[i].sex); printf ( "C 语言:"); scanf( "%f",&students[i].cyy); printf ( " 英语:" );scanf( "%f",&students[i].english);printf( " 计算机:" ) ;scanf("%f",&students[i].computer);students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;printf( "平均成绩:%-9.0f\n" ,students[i].pj);save(students,n);printf( "\n------------- 修改成功!-------------\n" );}elseprintf( "notfound!\n" );..getchar();}/***** 学生成绩排序子程序 *****/voidsort(STUstudents[], int n){int i,j,a,b,c,d,e,f,k;float p;printf( "\n 退出请输入:0\n" );printf( "成绩排序方式选择:1. 按C语言 2. 按英语 3. 按平均\n" ); scanf( "%d",&k);if(k==1) /*用选择法对C语言排序*/{for(i=0;i<n;i++)for(j=0;j<n-1;j++){if(students[i].english<students[j+1].english){temp=students[i];students[i]=students[j+1];students[j+1]=temp;}}}else if(k==2)/*英语用冒泡法*/{for(a=0;a<n-1;a++){c=a;for(b=a+1;b<n;b++)if(students[b].cyy>students[c].cyy)c=b;if (c!=a){temp=students[a];students[a]=students[c];students[c]=temp;}}}..if(k==3)/*平均成绩用插入法*/{for(d=1;d<n;d++) {p=students[d].pj;for(e=0;e<d;e++) if(students[e].pj<p) break; if(e==d) continue; for(f=d;f>e;f--) students[f]=students[f-1]; students[e]=temp; }} input(students,n); /*显示排序后的所有记录 */save(students,n);printf( "\n 排序完成!\n" ); }/***** 统计学生分数在各等级的人数子程序 *****/ voi d Tongji(STUstudents[], intn) {int count6085=0,count85=0,count60=0; int i=0; system("cl s" ); prin tf( "\n 退出请输入:0\n"); input(students,n); i=0; while(i<n) {if (students[i].pj>85) {count85++;i=i+1;continue;}/*平均成绩=>85*/if (students[i].pj>=60&&students[i].pj<=85){count6085++;i=i+1; continue;} /*60<平均成绩<85*/if (students[i].pj<60) {count60++;i=i+1;continue;}/*平均成绩<60*/ }print "\n************统计结果************\n\n");f(print f("平均成绩高于分的人数:%d\n" ,count85);printf(" \n"); printf("平均成绩在分和分之间的人数:%d\n",count6085);printf(" \n" );print f("平均成绩低于分的人数:%d\n" ,count60);printf(" \n"); ..printf( "\n\n********** 统计结束**********" );getchar();}/***** 导出或保存数据*****/voidsave(STUstudents[], int n){FILE*fp;int i=0;fp=fopen( "students" ,"wb+");/*以读写方式打开创建一个二进制文件*/if(fp==NULL) /*打开文件失败*/{printf( "\n******* 打开文件错误!*******\n" );return ;}for(i=0;i<n;i++){if(fwrite(&students[i], sizeof (STU),1,fp)==1) /*每次写一条记录或一个结构数组元素至文件*/{continue;}else{break;}}if(i>0){getchar();printf( "\n\n* 共导出%d个学生信息*\n" ,i);getchar();}else{system( "cls" );printf( "**没有信息导出*\n");getchar();}fclose(fp); /*关闭此文件*/}/***** 导入数据*****/voidRead(STUstudents[], int *n) {FILE*fp;int i=0;..fp=fopen( "students" ,"rb");/*以只读方式打开一个已有的二进制文件*/if(fp==NULL) /*打开文件失败*/{printf( "\n******** 打开文件错误!********\n" );exit(0);}for(i=0;i<N;i++){if(fread(&students[i],sizeof(STU),1,fp)==1)/*每次读一条记录或一个结构数组元素至文件*/continue;elsebreak;}*n=i;if(i>0){printf("\n\n************共导入:%d个学生信息************\n",i);getchar();}else{system( "cls" );printf( "************ 没有信息导入!************\n" );getchar();}getchar();fclose(fp); /*关闭此文件*/}/***** 主函数*****/void m ain(){STU students[ N];int n;cha r s1[3],s2[3]={"1"};int i,k;prin tf("\n\n" );prin tf("******************************************************\n" );printf("^ <欢迎使用本软件> ^\n\n" );printf("^ < 版本: 修改版> ^\n\n\n" ) ;prin tf("^<姓名>:邢曾智< 班级>:09511002< 学号>:0951100201^\n" );..printf("^^\n");printf( "******************************************************\n" ); printf("\n\n");for(i=0;i<3;i++) {printf( "\n 请输入密码:"); gets(s1);if(strcmp(s1,s2)==0) break; elseprintf( "\n>密码错误,请重新输入"); } if(i>2) {printf( "\n 您已连续次输错,系统将退出 !\n" );exit(0); } else {while(1) {k=displaymenu(); switch(k){case '1' :add(students,&n ); break;case '2' :Read(students,&n);input(studen ts,n);break; case '3' :Read(students,&n);Locate(stude nts,n);break; case '4' :Read(students,&n);Modify(stude nts,n);;break; case '5' :Read(students,&n);sort(student s,n);break; case '6' :Read(students,&n);Tongji(stude nts,n);break; case '7' :save(students,n ); break;case '8' :Read(students,&n); break;case '9' :system( "cls " );printf ( "\n**********谢谢您的使用**********\n");exit(0); break;default : printf( "\n\n输入错误,输入必须是~9之间的一个数字!请重新输入\n");getchar();getchar();}}}}3、运行结果(截图):第一步:输入本软件的使用密码。
用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指标.
用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指标.用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指标.#include<stdio.h>void main(){int a[10],i,max,min,sum=0;for(i=0;i<10;i++){printf("\n请输入学生成绩:");scanf("%d",&a[i]);}max=min=a[0];for(i=0;i<10;i++){ if(a[i]>max)max=a[i];else if(a[i]<min)min=a[i];sum+=a[i];}printf("\n最高分=%d最低分=%d平均分=%.2f\n",max,min,sum/10.0);}用VB程式设计输入10名学生某一门课的成绩,求出其中的最高分,最低分和所有学生的平均分.Option Base 1Dim score(10) As IntegerDim max As Integer, min As Integer, average As SinglePrivate Sub Form_Load()For i = 1 To 10score(i) = Val(InputBox("请输入第 " & Str(i) & "个学生的成绩","成绩统计", ""))Text1.Text = Text1.Text & Str(score(i))Next is = 0: max = score(1): min = score(1)For i = 1 To 10If score(i) > max Then max = score(i)If score(i) < min Then min = score(i)s = s + score(i)Next iaverage = s / 10Text2.Text = maxText3.Text = Format(average, "0.00")Text4.Text = minEnd Sub通过键盘输入10名学生的c语言成绩,输出最高分与最低分#include <stdio.h>#define N 10int main(){ int i, j, tmp, a[N]= {0}; printf("请输入10名学生C语言成绩(空格隔开):\n");for(i = 0 ; i < N; i++) scanf("%d", &a[i]); for(i = 0 ; i < N-1;i++) { for(j = 0; j < N-i-1; j++) { if(a[j] < a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } printf("%d %d\n", a[0], a[9]); return 0;}定义一个包含10个元素的整型阵列存10名学生的成绩从键盘输入阵列元素显示其中的最低分最高分及平均分并输#include <stdio.h>int main(){int value[10],*p,high=0,low=0,average=0,i;p = value;for(i=0; i<10; i++){scanf("%d",&value[i]);if(i==0)high=low=value[i];else{if(value[i] > high)high = value[i];if(value[i] < low)low = value[i];}average+=value[i];p++;}average/=10;printf("high:%d low:%d average:%d\n",high,low,average);}VB程式设计求100个学生的平均成绩,最高分,最低分X = Val(InputBox("输入学生成绩"))Max = XMin = XS = XFor i = 2 To 100X = Val(InputBox("输入学生成绩"))If Max < X Then Max = XIf Min > X Then Min = XS = S + XNextPrint "平均成绩"; S / 100Print "最高分"; MaxPrint "最低分"; Min输入10个同学的成绩输出其中的最高分和最低分(用C语言)这个很容易的啊,我很久没写C的了,只能告诉你流程定义一个数组,长度10,然后输入分数,对阵列进行排序,阵列第一个和最后一个就是你要的结果了使用一维阵列,输入10名学生的成绩,找出最高分和最低分#include<stdio.h>int max(int stu[10]) {int tem = 0;int i = 0;for(i = 0; i < 10; i++) {if(stu[i] >= stu[i+1])tem = stu[i];}return tem;}int min(int stu[10]) {int tem = 0;int i = 0;for(i = 0; i < 10; i++) {if(stu[i] < stu[i+1])tem = stu[i];}return tem;}int main() {int maxs,mins = 0;int stu[10] = {10,22,33,44,55,66,77,88,99,100}; 初始化之际弄maxs = max(stu);mins = min(stu);printf("max:%d min:%d\n",maxs,mins);return 0;}c语言——利用指标法,输入10个学生每人5门课的成绩,利用函式找到每门课的最高分和最低分# include <stdio.h># include <stdlib.h>float maxMark(float *q){float max;int i;max=q[0];for(i=1;i<5;i++){if (q[i]>max) max=q[i];}return max;}float minMark(float *q)float min;int i;min=q[0];for(i=1;i<5;i++){if (q[i]<min) min=q[i];}return min;}void main(){int i,j;float *q;float a[10][5],max,min,Mark[5][10]; for(i=0;i<10;i++){printf("第%d个学生\n",i+1);for(j=0;j<5;j++){printf("第%d门成绩:",j+1); scanf("%f",&a[i][j]);}}for(j=0;j<10;j++)for(i=0;i<5;i++){Mark[i][j]=a[j][i];}for(i=0;i<5;i++)q=Mark[i];max=maxMark(q);printf("第%d门成绩的最大值为:%0.2f\n",i+1,max);}for(i=0;i<5;i++){q=Mark[i];min=minMark(q);printf("第%d门成绩的最小值为:%0.2f\n",i+1,min);}}这次修改的完全正确了python完成程式输入m个成绩,输出最高分最低分平均成绩python完成程式输入m个成绩,输出最高分最低分平均成绩grades = []min_grade = Nonemax_grade = Nonesum_grade = 0.0m = int(raw_input("Input m: "))for i in range(m):grade = float(raw_input("Input grade %s: " % i))grades.append(grade)sum_grade += gradeif not min_grade or grade < min_grade:min_grade = gradeif not max_grade or grade > max_grade:max_grade = gradeave_grade = sum_grade / mprint "Max grade:", max_gradeprint "Min grade:", min_gradeprint "Average grade:", ave_gradeC语言设计一个班级20名学生姓名及成绩的输入输出,计算平均成绩,求最高分,最低分#include "stdio.h"main(){float student[20],ave,sum=0,max=0,min=100;int i;for(i=0;i<20;i++){printf("input %dth score:",i+1);scanf("%f",&student[i]);if(student[i]>max)max=student[i];if(student[i]<min)min=student[i];sum+=student[i];}ave=sum/20;printf("ave=%f,max=%f,min=%f\n",ave,max,min);}。