10个学生5门课的成绩统计_C语言
C语言实验报告
C语言程序设计(B)(2010-2011-2)实验报告教学班级:学号:姓名:课程教师:王华金实验辅导教师:王华金P123--五、1、编写函数,找出5*5数组对角线上元素的最小值,并在主函数中调用它。
要求元素的值通过键盘输入。
实验前的源程序:#include<stdio.h>int func(int p[5][5]){int i,j,min;min=p[0][0];for(i=0;i<5;i++)for(j=0;j<5;j++)if(i==j)if(p[i][j]<min) min=p[i][j];return min;}void main(){int i,j,m,a[5][5];printf("请输入a[5][5]:\n");for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);printf("a[5][5]:\n");for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%4d",a[i][j]);printf("\n");}m=func(a);printf("主对角线上元素的最小值为:%d\n",m);}实验错误报告:[Error] C:\Users\陶鑫\Documents\C-Free\Temp\未命名4.cpp:13: error: `main' must return `int'[Warning] C:\Users\陶鑫\Documents\C-Free\Temp\未命名 4.cpp:27:2: warning: no newline at end of file构建中止未命名4: 1 个错误, 1 个警告实验后的源程序:#include<stdio.h>int func(int p[5][5]){int i,j,min;min=p[0][0];for(i=0;i<5;i++)for(j=0;j<5;j++)if(i==j)if(p[i][j]<min) min=p[i][j];return min;}main(){int i,j,m,a[5][5];printf("请输入a[5][5]:\n");for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);printf("a[5][5]:\n");for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%4d",a[i][j]);printf("\n");}m=func(a);printf("主对角线上元素的最小值为:%d\n",m);}P123--五、3、编写从整形数组中检索给定数值的函数,若找到则输出该数值在数组中的位置。
C语言课程设计---班级成绩管理系统
课程设计报告课程名称C语言程序设计课题名称班级成绩管理系统专业班级学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称C语言程序设计课题班级成绩管理系统专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日目录一、引言 (1)二、总体设计 (2)三、详细设计 (4)四、问题分析及总结 (13)五、参考文献 (15)六、附件 (15)一、设计内容与设计要求1. 设计内容:班级成绩管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。
2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)学生成绩显示:完成班级全部学生成绩的显示,显示时按表格的形式,且应有表头;(3)学生成绩追加:完成新增一个(或多个)学生的成绩记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算学生平均成绩并显示;(4)学生成绩修改:要求能按学号和按姓名两种定位方式,且可以按用户要求修改记录中除学号和姓名以外的指定内容,并重新计算学生的平均成绩;(5)学生成绩信息的查询;要示系统能按学号、按姓名查询以及能查总分在某一指定范围内的学生信息,且能显示符合条件的所的记录,若所需查询的信息不存在时应有相应的提示信息。
学生成绩查询c语言程序
填写说明:1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。
2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业。
3、法定假日不安排教学内容,其课次顺延安排.系统开发语言作业现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课.2、完成成绩排序:按单科成绩排序、按平均分排序;3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60—79分,80以上);4、用结构体完成学生姓名和成绩的输入:5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;.作业要求第1、2、3周、完成成绩录入、排序和统计第4、5、6周、完成菜单和函数编制第2、8、9周、完成成绩查询和统计第10、11周、完成查询输出第12、13周、讲程序进行函数化、模块化第14、15周、应用指针、指针函数以及函数指针等第16周,完善程序、验收。
最后打印出完整代码清单代码如下:#include<stdio.h〉struct student{float math;float Chinese;float English;float average;char name[5];};void inputgread(struct student stu)//输入成绩{int a=0;scanf(”%s”,);printf("按顺序输入数学成绩,语文成绩,英语成绩");scanf("%f%f%f”,&stu。
math,&stu.Chinese,&stu。
C语言试题和答案大全
模块1 C语言基础知识1. 选择题(1)C语言中运算对象必须是整型的运算符是(B )。
A. %=B. /C. =D. <=(2)以下所列的C语言常数中,错误的是(B )。
A. 0xFFB. 1.2E0.5C. 2LD. -.67(3)以下选项中能作为用户标识符的是( C )。
A. voidB. 7_9C. _3_D. Dr.Tom(4)以下所列的C语言字符常量中,合法的是( B )。
A. ”B”B. ’\n’C. ’中国’D. d(5)以下选项中正确的定义语句是( D )。
A. int a:b;B. int ,a,b;C. int a+b=6;D. int a=6,b;(6)以下关于long、int、short型数据占用内存大小的叙述中正确的是( D )。
A. 均占4个字节B. 根据数据的大小来决定所占内存的字节数C. 由用户自己定义D. 由C语言编译系统决定(7)若有定义语句:int x=10;,则表达式x-=x+x的值为( B )。
A. -20B. -10C. 0D. 10(8)表达式((a=3*5,a+4),a+5)的值是( A )。
A. 20B. 29C. 60D. 90(9)若有定义语句:int a=3,b=4,c=5;,则以下表达式中值为0的是( D )。
A. a&&bB. a<=bC. a||b+c&&b-cD. !((a<b)&&c||1)(10)设有以下定义:int i;char c;float f;,以下结果为整型的表达式是( B )。
A. i+fB. i*cC. c+fD. i+c+f2. 填空题(1)设有int n=12;,则表达式(n++*1/3)的值是 4 。
(2)定义以下变量:char c;int x;float y;double z;,则表达式c*x+y-z,所求得的数据类型为double 。
(3)设变量a和b已正确赋初值,请写出a/=a+b等价的赋值表达式a=a/(a+b) 。
C语言上机实验例题
实验一 C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、实验例题【例1】编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for.在Turbo C的集成环境下,键入如下源文件。
敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认noname.c文件名改为任意文件名。
程序example.c如下:main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}然后用Ctrl+F9执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。
按回车键重新返回Turbo C的编辑环境。
注意,在运行程序之前最好先存盘。
【例2】输入并运行程序,写出运行结果。
main(){int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}运行方法同上,最后结果为:sum is 579。
【例3】输入并运行程序,写出运行结果。
main(){int a,b,c;int max(int,int);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}这个程序的功能是对于任意输入的两个整数,输出较大的那个数。
C语言上机实验5-12
17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃,只剩一个桃子了。
求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容预习教材第5章。
17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容编程序并上机调试运行。
c语言学生成绩管理系统总结
C语言学生成绩管理系统总结简介学生成绩管理是学校管理系统中一个重要的模块,它负责对学生的各类成绩进行管理和统计。
C语言作为一门通用的编程语言,被广泛应用于学生成绩管理系统的开发中。
本文将对C语言学生成绩管理系统的开发和总结进行详细介绍。
开发目标C语言学生成绩管理系统的开发目标是实现学生的成绩管理和统计,通过该系统可以进行成绩录入、查询和统计等功能。
系统需要提供友好的用户界面,并能够有效地处理大量的学生数据。
主要功能C语言学生成绩管理系统主要包含以下功能:1.成绩录入:通过输入学生的基本信息和成绩,将其保存到系统数据库中。
2.成绩查询:根据学生的学号、姓名等关键信息进行查询,可以快速地找到所需的成绩记录。
3.成绩统计:对学生的成绩进行统计,包括总分、平均分、最高分、最低分等。
4.成绩排序:对学生的成绩进行排序,可以按照总分、班级排名等进行排序。
5.成绩报告:根据学生的成绩数据生成成绩报告,包括学生的基本信息和各科成绩。
6.数据备份:将学生的成绩数据进行备份,以防止数据丢失。
技术实现C语言学生成绩管理系统的开发需要借助以下技术:1.结构体:使用结构体来存储学生的基本信息和成绩数据,方便对学生数据进行管理和操作。
2.文件操作:通过文件操作实现学生信息和成绩的读写,将数据保存到文件中以便后续的查询和统计。
3.排序算法:使用排序算法对学生的成绩进行排序,常用的排序算法包括冒泡排序、插入排序、选择排序等。
4.统计函数:编写统计函数来计算学生成绩的总分、平均分、最高分、最低分等统计指标。
开发总结在开发C语言学生成绩管理系统的过程中,我获得了以下经验和总结:1.细化需求:在开始开发之前,需要先明确系统的需求,包括功能需求和性能需求等。
细化需求对于开发过程的顺利进行非常重要。
2.模块化设计:将系统划分为多个模块,每个模块负责一个具体的功能。
模块化设计可以提高代码的重用性和可维护性。
3.错误处理:在开发过程中要考虑各种可能出现的错误,并进行相应的错误处理。
学生成绩查询c语言程序
填写说明:1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。
2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业。
3、法定假日不安排教学内容,其课次顺延安排。
系统开发语言作业现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课。
2、完成成绩排序:按单科成绩排序、按平均分排序;3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上);4、用结构体完成学生姓名和成绩的输入:5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;.作业要求第1、2、3周、完成成绩录入、排序和统计第4、5、6周、完成菜单和函数编制第2、8、9周、完成成绩查询和统计第10、11周、完成查询输出第12、13周、讲程序进行函数化、模块化第14、15周、应用指针、指针函数以及函数指针等第16周,完善程序、验收。
最后打印出完整代码清单代码如下:#include<stdio.h>struct student{float math;float Chinese;float English;float average;char name[5];};void inputgread(struct student stu) //输入成绩{int a=0;scanf("%s",);printf("按顺序输入数学成绩,语文成绩,英语成绩");scanf("%f%f%f",&stu.math,&stu.Chinese,&stu.English); }void Chinesecompositor(struct student stu[]) //按语文排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].Chinese<stu[num+1].Chinese){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].Chinese); }}void mathcompositor(struct student stu[]) //按数学排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].math<stu[num+1].math){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].math);}}void Englishcompositor(struct student stu[]) //按英语排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].English<stu[num+1].English){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].English); }}void Average(struct student stu) //平均分{int num=0;stu.average=(stu.Chinese+stu.English+stu.math)/3; }void Averagecompositor(struct student stu[])//按平均分排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++){if(stu[num].average<stu[num+1].average){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].average);}}void namecheck(struct student stu[],char *na) //按姓名查询{int num=0;for(num;num<10;num++){if (na==stu[num].name){printf("姓名:%s 数学:%f 语文:%f 英语:%f",stu[num].name,stu[num].math,stu[num].English);}}}void scholarship(struct student stu[]) //奖学金{int num=0,count=0;printf("一等奖学金名单:\n");for(num;num<10;num++){if(stu[num].Chinese>=90&&stu[num].English>=90&&stu[n um].math>=90){printf("%s ",stu[num].name);count++;}}printf("\n二等奖学金名单:\n");for(num;num<10;num++){if(stu[num].Chinese>=80&&stu[num].English>=80&&stu[n um].math>=80){printf("%s ",stu[num].name);count++;}}printf("奖学金人数:%d",count);}void scorecut(struct student stu[],int n)//分数段{int num=0,count=0;switch(n){case 1:{printf("语文成绩分数段:\n");printf("90分以上:\n");for(num;num<10;num++){if(stu[num].Chinese>=90){printf("%s\n",stu[num].name);}}printf("80---90: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=80&&stu[num].Chinese<90) {printf("%s\n",stu[num].name);}}printf("70--80: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=70&&stu[num].Chinese<80) {printf("%s\n",stu[num].name);}}printf("60--70: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=60&&stu[num].Chinese<70) {printf("%s\n",stu[num].name);}}printf("不及格: \n");for(num=0;num<10;num++){if(stu[num].Chinese<60){printf("%s\n",stu[num].name);}}}case 2:{printf("平均分成绩分段:\n");printf("90分以上:\n");for(num;num<10;num++){if(stu[num].average>=90){printf("%s\n",stu[num].name);}}printf("80---90: \n");for(num=0;num<10;num++){if(stu[num].average>=80&&stu[num].average<90) {printf("%s\n",stu[num].name);}}printf("70--80: \n");for(num=0;num<10;num++){if(stu[num].average>=70&&stu[num].average<80) {printf("%s\n",stu[num].name);}}printf("60--70: \n");for(num=0;num<10;num++){if(stu[num].average>=60&&stu[num].average<70) {printf("%s\n",stu[num].name);}}printf("不及格: \n");for(num=0;num<10;num++){if(stu[num].average<60){printf("%s\n",stu[num].name);}}}}}void menu(){printf(" 1.成绩录入\n");printf(" 2.成绩查询\n");printf(" 3.分数段查询\n");printf(" 4.奖学金查询\n");printf(" 5.成绩排序\n");}main(){struct student stu[10];int num=0,n;char *na;while(1){menu();scanf("%d",&n);switch(n){case 1:for(num;num<10;num++){printf("输入第%d个学生姓名",num+1);inputgread(stu[num]);Average(stu[num]);}break;case 2:{printf(" 1.按姓名查询\n");printf(" 2.查询平均分\n");printf(" 3.退出查询\n");scanf("%d",&n);switch(n){case 1:{printf("输入学生姓名:");scanf("%s",&na);namecheck(stu,na);}case 2:{for(num=0;num<10;num++){printf("3科平均分:\n");printf("%c:%f\n",stu[num].name,stu[num].average);}}case 3: break;}}case 3:{}case 4:{printf(" 1.语文单科成绩分段\n");printf(" 2.平均分分段\n");scanf("%d",&n);switch(n){case 1:scorecut(stu,n);case 2:scorecut(stu,n);case 3:break;}}case 5:{printf("按数学成绩排序:\n");mathcompositor(stu);printf("按语文成绩排序: \n");Chinesecompositor(stu);printf("按英语成绩排序: \n");Englishcompositor(stu);printf("按平均分排序: \n");Averagecompositor(stu);}}}}。
学生成绩(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语言上机实验指导实验一熟悉C语言程序开发环境一.目的要求1.熟悉在所用的计算机系统上如何编辑、编译、连接和运行一个C语言程序。
2.掌握C语言的数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。
3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用。
4.通过运行简单的C语言程序,初步了解C语言程序的结构特点。
二.实验内容1.调用编辑程序,输入以下程序,并进行编译和运行。
熟悉所用的系统使用什么命令进行编译和连接运行的。
编译和连接后所得到的目标程序的后缀是什么形式?main( ){printf(“This is a c program.\n”);}2.从键盘依次输入两个整数,计算并输出这2个整数之差。
# include “stdio.h”main(){ float a,b,c;printf(“input a,,b,:\n”);scanf(“%d, %d,”,&a,&b);c=a-b;printf(“c=%d\n”,c);}具体要求:①在Turbo C或其他编译环境编辑窗口输入该程序,然后进行编译连接。
如果在编译过程中有错误发生,则仔细检查并修改程序,再进行编译连接,直到没有错误为止。
②运行时按程序中要求的格式依次输入下列2个数:212,843.输入并运行以下程序,分析结果,体会自增自减运算符的特点,上机验证;main( ){int i,j,m,n,u=0,v=0;i=8;j=10;m=++i;n=j++;u+=i--;n-=--j;pr intf(“i=%d,j=%d,m=%d,n=%d,u=%d,v=%d\n”,i,j,m,n,u,v);}4.输入并运行下面的程序。
main(){int m,n;m=120;n=112;printf(“%d\t%d\n”,m,n);}要求:①运行程序记下结果。
②在程序的最后增加一句:printf(“%c\t%c\n”,m,n);再运行程序,并分析结果。
输入10个学生5门课的成绩
答案:输入10个学生5门课的成绩,分别用函数实现下列功能:(1)编写函数计算每个学生的平均分;(2)编写函数计算每门课的平均分;(3)编写函数找出所有50个分数中最高的分数所对应的学生和课程;(4) 计算平均分方差。
可视化#include<stdio.h>#include<windows.h>main(){int i,j,li=0,lj=0;float score[10][5],average[10],a1,a2,a3,a4,a5,largest=0,fc=0,a=0;//score是50个学生的成绩,average是5门课的平均成绩,a1-a5分别是5门课的平均成绩,li是最高分的学生//lj是最高分的学科,largest是最高分,fc是平均分方差,a是50个成绩的平均分printf("请输入10个学生的成绩,按照语文、数学、英语、物理、化学的顺序依次输入:\n");for(i=0;i!=10;++i){printf("第%d个学生:\n",i+1);for(j=0;j!=5;++j){scanf("%f",&score[i][j]);if(largest<score[i][j]){largest=score[i][j];li=i+1;lj=j+1;}a=a+score[i][j];}average[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3]+score[i][4])/5; a1=a1+score[i][0];a2=a2+score[i][1];a3=a3+score[i][2];a4=a4+score[i][3];a5=a5+score[i][4];}a=a/50;for(i=0;i!=10;++i){for(j=0;j!=5;++j){fc=fc+(score[i][j]-a)*(score[i][j]-a);}}fc=fc/50;a1=a1/10;a2=a2/10;a3=a3/10;a4=a4/10;a5=a5/10;printf("50个学生的成绩如下:\n");printf("学生编号计算机高数C语言英语离散数学\n");for(i=0;i!=10;++i){printf("%8d ",i);for(j=0;j!=5;++j){printf("%2.2f ",score[i][j]);}printf("\n");}for(i=0;i!=10;++i)printf("第%d个学生的平均分为:%.2f\n",i+1,average[i]);printf("第1门课的平均分为:%.2f\n",a1);printf("第2门课的平均分为:%.2f\n",a2);printf("第3门课的平均分为:%.2f\n",a3);printf("第4门课的平均分为:%.2f\n",a4);printf("第5门课的平均分为:%.2f\n",a5);printf("50个分数中最高的分数是第%d个学生的第%d门课,分数为:%.2f\n",li,lj,largest);printf("平均分方差为:%.2f\n",fc);system("pause");}。
统计输入10个学生5门功课的成绩,求每个学生的平均分、每门课的平均分及最高分所对应的学生和功课
《C语言程序设计》课程设计说明书班级:08计算机应用技术<1>班学号:A083GZ*********姓名:陈****:***2009.12前言从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。
C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。
学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。
在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。
学习、掌握C语言是每一个计算机技术人员的基本功之。
在这次的课程设计中,我学到了很多东西,比如课堂上老师所教授的仅是基础的基础,是编程的前提,正所谓“师父领进门,修行靠个人”。
老师把我们带进C的世界,让我们不再“哇!”的羡慕别人的程序设计,这是信心与兴趣的培养。
学习任何程序设计语言,都要认识几件事情。
首先,要学的东西很多,但是掌握了它们之后,你会有极大的成就感。
其次,学习的过程很有趣,你将体会到这一点。
第三,你只有通过动手实践才能学会程序设计。
最后,学习程序设计语言比你想象的容易得多,所以你肯定能掌握它。
要理解在特定背景中的程序设计方法,需要理解应用独立语言元素的机理。
该程序应用了本书学习的知识。
书上的程序可帮助你获得开发程序的能力和信心,了解如何综合运用各种语言元素。
最重要的是,它们能让你了解设计真实程序时会遇到的问题以及如何管理实际的代码。
如果第一次读复杂的程序没有完全理解,不必担心。
第一次难免会觉得难以理解,因为它们通常都是把你所学的知识应用到了相当复杂的问题中。
如果你真的不能理解,书是非常有用的资源,那可得要多看书多请教老师咯,然后再回头研究这些程序。
这也是学习程序设计语言的一个重要部分。
尝试修改程序,看看还能让它们做什么,这是很有趣的。
不要害怕尝试,如果不明白某一点如何使用,输入几种变体,看看会出现哪些情况。
C语言排序学生成绩
以下对一维整型数组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 输入/输出多个学生一门 课程的成绩
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语言
【学生成绩管理系统】计算机程序编程课程设计实验报告实验地点:第一教学楼502室实验平台:Windows XP Microsoft Visual C++ 6.0实验用时:2013.8。
27——2013.8.30实验题目学生成绩管理系统一.实验目的使用标准C或C++实现一般管理系统的基本功能。
进一步巩固C语言的学习,培养一定的综合编程能力。
二.实验设计要求(一)需要处理的基础数据学生基本信息包括:➢学号(如2010级14班6号写作20101406)➢姓➢名➢性别➢出生年月日➢课程对应的考试成绩(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])➢平均成绩和总成绩(二)系统功能1.学生基本情况录入.要求对输入的性别、出生年月日的合理性进行判断(如0代表“女”,1代表“男",输入其他值非法,年龄不能为负,月份不能大于13等)。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。
5.基于姓名的查询。
如:姓张的所有同学。
6.基于各种基本数据的统计计算。
如:①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
②列出90分及以上、80分及以上、70分及以上、60分及以上、不及格学生清单(学号、姓名、不及格的课程和成绩)。
③统计并输出各门功课的平均成绩和总平均成绩。
④按班级统计并输出总成绩(需对学号进行解析).(三)数据结构说明typedef struct St1{ char IDNumber[16]; /*学号*/char FamilyName[16];/*姓*/char GivenName[16]; /*名*/int sex;/*性别(0代表“女”,1代表“男”)*/int BirthYear;/*出生年*/int BirthMonth;/*出生月*/int BirthDay;/*出生日*/float score[4]; /*成绩*/float sum; /*总分*/float average;/*平均分*/struct St1 *next;}StudentNode;(四)菜单的样板模式为:1。
C语言作业软件工程
{ int i,m,s[MAXN];
m=p(13,s);
for(i=0;i<m;i++)
printf(“%4d\t”,s[i]);
printf(“\n”) },
4、以下程序的输出结果是,函数s(int a[ ],int n)的功能是
# include <stdio.h>
void s(int a[ ],int n)
4、将一个数组中的数按逆序存放,如:1 6 5 9 2变成2 9 5 6 1
5、编写一个程序将两个字符串连接起来,不用strcat函数
6、输入一行字符串,统计该字符串中字符对ab个数,如:字符串:abcabacda,则个数为:2
7、把一个字符串头和尾部的“*”去除,如:***abc**def***,变为:abc**def
3、从键盘输入3个整数a,b,c,输出其中最大的数。
4、给出一个不多于5位的整数,求出它是几位数并打印出每一位数字?
5、输入一个由2个整数和一个算术运算符组成的表达式,根据运算符完成相应的运算,并将结果输出。例如:输入3 * 7,则输出为3*7=21,输入5 + 3,则输出为5+3=8
6、假设所有变量都已经正确定义,则程序段:
12、求3~150以内的所有素数之和。
13、百马百担问题,有100匹马,驮100担货,大马驮3
3担,中马驮2担,两匹小马驮一担,编程计算共有多少种驮法。
习题五数组编程题
1、用筛法求100之内的素数
2、用选择法和起泡法对10个整数排序
3、已有一个已经排好序的数组,输入一个数,要求按原来的排序规律将它插入到数组中
printf(“c1=%d,c2=%c”,c1,c2;
c语言实验报告
实验报告课程名称C语言程序设计教程实验项目名称实验七数组班级与班级代码信息管理与信息系统1班112511011 实验室名称(或课室) SS-304专业信息管理与信息系统任课教师张军学号:11251101113姓名:冯启珊实验日期:2011 年12 月16 日广东商学院教务处制姓名冯启珊实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。
正文实验报告要求与排版字号:1.实验报告按实验项目填写,每个学生做完实验必须填写2.实验报告可参照如下内容格式写作:实验目的、实验原理、实验设备、结果预测、实验步骤、实验结果、实验分析、结论。
3.实验报告排版打印统一用A4(21 X 29.7cm)格式。
4.标题用小二号黑体加粗,正文用四号宋体。
行距为固定值20磅。
5.页面上边距2.54cm,下边距2.54 cm,左边距3cm,右边距2.2mm;6.实验报告页码从正文页面起计算。
页码字号,选用小四号粗黑体并居中。
一、实验目的通过做关于数组的十一个实验,实现:1、熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。
2、熟练掌握字符数组和字符串函数的应用。
3、熟练掌握一维数组以及一维数组元素的存储关系。
4、熟练掌握一维数组和二维数组的使用以及在函数中的传递。
5、通过做试验实践掌握和数组有关的算法。
二、实验原理数组是指具有形同类型的数据组成的序列,为有序集合。
通过一维数组、二维数组、字符数组和字符串函数的应用,结合前面所学的循环语句等,可将以前复杂的程序简单化,简单而方便地设计程序完成相应的功能。
三、实验设备C++软件四、实验步骤第一题:输入并运行程序main(){int i,a[5],b[5],c[5]; /*变量说明,数组说明*/a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for (i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}运行结果为:c[0]=4C[1]=42C[2]=36C[3]=40C[4]=27第二题:输入并运行程序main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6}; /*数组元素初始化*/sum=0;for(i=0;i<=10;i++)sum+=a[i]; /*求数组元素之和*/printf("sum=%d\n",sum);}Sum=55第三题:程序实现:从键盘输入5个数,输出最大、最小元素的值以及它们的下标。
学生成绩管理系统c语言课程设计
学生成绩管理系统c语言课程设计一、引言学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩、课程和考试信息的软件。
本文将介绍一个基于C语言的学生成绩管理系统的设计过程。
二、需求分析在设计一个学生成绩管理系统之前,我们需要先进行需求分析。
以下是该系统需要满足的基本需求:1. 学生信息管理:包括添加、删除和修改学生信息,如姓名、性别、年龄等;2. 课程信息管理:包括添加、删除和修改课程信息,如课程名称、授课教师等;3. 成绩录入:可以录入每个学生在每门课程中的成绩;4. 成绩查询:可以查询某个学生在某门课程中的成绩以及某门课程所有学生的成绩排名等;5. 成绩统计:可以统计某个班级或某门课程所有学生的平均分、最高分和最低分等。
三、系统设计1. 数据结构设计为了实现上述需求,我们需要定义一些数据结构来存储相关信息。
以下是我们所定义的数据结构:(1)Student结构体:用于存储每个学生的基本信息,包括姓名、性别、年龄等。
typedef struct {char name[20];char sex[10];int age;} Student;(2)Course结构体:用于存储每门课程的基本信息,包括课程名称、授课教师等。
typedef struct {char name[20];char teacher[20];} Course;(3)Score结构体:用于存储每个学生在每门课程中的成绩。
typedef struct {int student_id;int course_id;float score;} Score;(4)Class结构体:用于存储某个班级的所有学生和所选的所有课程。
typedef struct {Student students[MAX_STUDENT_NUM];int student_num;Course courses[MAX_COURSE_NUM];int course_num;} Class;2. 功能实现在上述数据结构定义完成之后,我们可以开始实现各个功能模块。
c语言统计平均成绩
c语言统计平均成绩在学术环境中,统计平均成绩是一个常见的任务。
使用C语言编写一个程序,可以方便地输入学生的成绩,计算平均值,并提供一些基本的统计信息,对于学术管理和数据分析非常有用。
1. 问题定义首先,我们需要明确我们的问题。
我们想要编写一个程序,该程序可以:•接收用户输入的学生成绩。
•计算这些成绩的平均值。
•提供一些基本的统计信息,例如最高分和最低分。
2. 程序结构一个简单的C程序通常包括以下几个部分:#include <stdio.h>// 函数声明double calculateAverage(int[],int);int findMax(int[],int);int findMin(int[],int);int main(){// 变量声明int numStudents;// 获取学生数量printf("请输入学生数量: ");scanf("%d",&numStudents);// 创建存储成绩的数组int grades[numStudents];// 获取学生成绩for(int i =0;i <numStudents;i++){printf("请输入第%d 位学生的成绩: ",i +1);scanf("%d",&grades[i]);}// 计算平均成绩double average =calculateAverage(grades,numStudents);// 查找最高分和最低分int maxGrade =findMax(grades,numStudents);int minGrade =findMin(grades,numStudents);// 输出结果printf("平均成绩: %.2f\n",average);printf("最高分: %d\n",maxGrade);printf("最低分: %d\n",minGrade);return0;}// 函数定义double calculateAverage(int grades[],int numStudents){ // 计算平均成绩double sum =0;for(int i =0;i <numStudents;i++){sum +=grades[i];}return sum /numStudents;}int findMax(int grades[],int numStudents){// 查找最高分int max =grades[0];for(int i =1;i <numStudents;i++){if(grades[i]>max){max =grades[i];}}return max;}int findMin(int grades[],int numStudents){// 查找最低分int min =grades[0];for(int i =1;i <numStudents;i++){if(grades[i]<min){min =grades[i];}}return min;}3. 程序解释•calculateAverage 函数计算数组中元素的平均值。
C语言——求学生平均成绩和最高分对应学生及科目的程序
printf(“%0.1f\n”,(float)sum/5);
printf(“\n”);
}
}
voidaverageB(int a[10][5])
{
inti,j,sum;
for(j=0;j<5;j++)
{
sum=0;
printf(“第%d科目的平均分是:”,j+1);
for(i=0;i<10;i++)
sum+=a[i][j];
printf(“%0.1f\n”,(float)sum/10);
printf(“\n”);
}
}
void find(int a[10][5])
{
int i,j,max=0,s1,s2;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(max<a[i][j])
1、输入所有人、科目和分数
运行结果:
五、问题及解决办法
(1)书写标识符时,忽略了中英文的转换,像英文状态下的“,”或“;”总是写成中文状态下的“,”或“;”。
(2)忘加分号;分号是C语句中不可缺少的一部分,语句末尾必须有分号。
(3)少写花括号;花括号也是C语言中不可缺少的一部分,句子结束必须加花括号。
解决方法:在调试与测试后进行修改。
六、课外实践总结
通过这次实践报告,让我深深感觉到C语言的灵活性,在这次的实践中,不仅让我们加深了对C语言的理解,而且充分让我们感受到了亲自动手的能力,巩固和加深了我们对C语言的理解,提高了综合运用课本所学知识的能力。培养了我们动手,思考,查找资料,深入研究,分析问题、解决问题的能力。通过这次课程设计我们发现,我们对C语言基础掌握的还不够扎实,有很多地方还需要继续努力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题描述:
输入10个学生5门课的成绩,分别计算出每个学生的平均分,每门课的平均分,找出所有50个分数中最高的分数所对应的学生和课程以及计算平均分方差
#define M 3
#define N 3
#include<stdio.h>
void stu_aver(float r[][N],float s_aver[])
{
int i,j;
for(i=0;i<M;i++)
{
s_aver[i]=0;
for(j=0;j<N;j++) s_aver[i]+=r[i][j];
s_aver[i]/=N;
}
}
void cou_aver(float r[][N],float c_aver[])
{
int i,j;
for(j=0;j<N;j++)
{
c_aver[j]=0;
for(i=0;i<M;i++) c_aver[j]+=r[i][j];
c_aver[j]/=M;
}
}
void Hscore(float r[][N],int s[],int c[])
{
int i,j,k,l,w,n=0;
for(i=0;i<M*N;i++) s[i]=-1; /*为主函数循环条件做准备,此函数中用不到*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
for(k=0,w=1;k<M;k++)
{
for(l=0;l<N;l++) if(r[i][j]<r[k][l]) {w=0;break;}
if(w==0) break;
}/*该2重循环对分数逐一判断是否最大*/
if(w!=0) {s[n]=i;c[n]=j;n++;} /*w非0则记录下标,同时最高分个数增1*/
}
}
float D(float r[][N])
{
float a,b,d,s_aver[M];
int i;a=b=0;
stu_aver(r,s_aver);/*调用学生平均分函数*/
for(i=0;i<M;i++)
{
a+=s_aver[i]*s_aver[i];
b+=s_aver[i];
}
d=a/M-(b/M)*(b/M);
return d;
}
void main()
{
int i,j,s[M*N],c[M*N];/*n记录最高分个数,s,c记录姓名、课程编号*/
char stu[M][20],cou[N][50];/*定义数组分别存放姓名、课程*/
float r[M][N],s_aver[M],c_aver[N];
printf("Input courses:\n");
for(i=0;i<N;i++) gets(cou[i]);
printf("Input names:\n");
for(i=0;i<M;i++) gets(stu[i]);
printf("Enter results:\n");
for(i=0;i<M;i++) for(j=0;j<N;j++) scanf("%f",&r[i][j]);
stu_aver(r,s_aver);
for(i=0;i<M;i++)
{
printf("%s\t",stu[i]);
for(j=0;j<N;j++) printf("%8.2f",r[i][j]);/*输出某个学生各科成绩*/
printf("%8.2f\n",s_aver[i]);
}
printf("cou_aver");
cou_aver(r,c_aver);
for(j=0;j<N;j++) printf("%8.2f",c_aver[j]);
printf("\nHscore:");
Hscore(r,s,c);
for(i=0;s[i]>=0;i++)
printf("%8s%8s%8.2f",stu[s[i]],cou[c[i]],r[s[i]][c[i]]); printf("\n");
printf("Average variance:%8.2f\n",D(r));
}。