设计报告
课程名称 C语言程序设计
题目名称根据条件进行学生成绩排名
学生学院
专业班级
学 号
学生姓名
指导教师
20##年4月18日
实训——根据条件进行学生成绩排名
一、实训的目的和要求
通过实践,了解学生成绩排名在C语言中的设计,并能成功设计出学生成绩的排序和统计不同成绩段中学生人数的代码。
二、实训的要求
1、 在项目报告中画出程序流程图,说明程序设计的算法,附上程序代码。
2、 在项目中说明知识点。
3、 在项目中报告中说明程序设计过程中的难点、解决办法及编程小结和体会。
三、实训的内容
1、 在函数中进行10个学生成绩从高到低排名sort(int a[10])。
2、 改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名。
3、 改进第二步的函数为sort(int a[],int n,char style),将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为’a’按升序排列,style为’d’按降序排列。
4、 分别统计不同成绩段中学生人数,A类90-100,B类80-89,C类70-79,D类60-69,E类为60分以下。
四、实训的过程
1、在函数中进行10个学生成绩从高到低排名sort(int a[10])。
(1)程序设计算法描述如下:
S1:输入10个学生的成绩
S2:i0
S3:把其中一个成绩分别与其他9-i个成绩比较大小,确定在这10个成绩中的位置
S4:i+1i
S5:当i<9时,转S3继续执行,否则输出排名后的10个成绩,算法停止。
(2)程序流程图如下:
(3)程序代码如下:
#include
void main()
{
int a[10],i;
int sort(int a[10]);
for(i=0;i<10;i++)
{
printf("请输入第%d个学生成绩是:",i+1); /*输入成绩*/
scanf("%d",&a[i]);
}
printf("==============================\n");
printf("这些学生的分数成绩排名是:\n");
sort(a);
}
int sort (int a[10])
{
int i=0,j=0,t; /*冒泡法排序*/
for(i=0;i<10;i++)
{
for(j=0;j<9;j++) /*进行9次循环,实现9趟比较*/
{
if(a[i]>a[j]) /*相邻两个数比较*/
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("第%d名的分数是: %d\n",i+1,a[i]); /*输出成绩*/
}
return 0;
}
2、改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名。
(1)程序设计算法描述如下:
S1:输入n个学生的成绩
S2:i0
S3:把其中一个成绩分别与其他n-1-i个成绩比较大小,确定在这n个成绩中的位置
S4:i+1i
S5:当i<n-1时,转S3继续执行,否则输出排名后的n个成绩,算法停止。
(2)程序流程图如下:
(3)程序代码如下:
#include
void main()
{
int *a,i,n;
a=new int;
printf("一共有学生n=");
scanf("%d",&n);
int sort(int a[],int n);
for(i=0;i
{
printf("输入第%d个学生成绩是:",i+1); /*输入成绩*/
scanf("%d",&a[i]);
}
printf("============================\n");
printf("这些学生的成绩排名是:\n");
sort(a,n);
}
int sort (int a[],int n)
{
int i=0,j=0,t; /*冒泡法排序*/
for(i=0;i
{
for(j=0;j
{
if(a[i]>a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i
{
printf("第%d名的分数是:%d\n ",i+1,a[i]); /*输出成绩*/
}
return 0;
}
3、改进第二步的函数为sort(int a[],int n,char style),将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为’a’按升序排列,style为’d’按降序排列。
(1)程序设计算法描述如下:
S1:输入n个学生成绩
S2:选择排列方式a or b,style为’a’按升序排列,style为’d’按降序排列
S3:把其中一个成绩分别与其他n-1-i个成绩比较大小,确定在这n个成绩中的位置
S4:i+1i
S5:当i<n-1时,转S3继续执行,否则输出排名后的n个成绩,算法停止。
(2)程序流程图如下:
(3)程序代码如下:
#include
#include
void main()
{
int *a,i,n;
a=new int;
char style;
int ascending(int a[],int n);
int descending(int a[],int n);
printf("一共有学生n=");
scanf("%d",&n);
int sort(int a[],int n,char style);
for(i=0;i
{
printf("输入第%d个学生成绩是:",i+1);
scanf("%d",&a[i]);
}
printf("============================\n");
printf("请输入排序的方式,a为升序,b为降序:");
style=getche();
printf("这些学生的成绩排名是:\n ");
sort(a,n,style);
for(i=0;i
{
printf("%d\n",a[i]);
}
}
int sort(int a[],int n,char style)
{int i=0,j=0,t;
if(style=='a')
for(i=0;i
{
for(j=0;j
{
if(a[i]
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
if(style=='b')
for(i=0;i
{
for(j=0;j
{
if(a[i]>a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
return 0;
}
4、分别统计不同成绩段中学生人数,A类90-100,B类80-89,C类70-79,D类60-69,E类为60分以下。
(1)程序设计算法描述如下:
S1:i0,A0,B0,C0,D0,E0
S2:输入学生人数n
S3:输入学生成绩
S4:若大于等于90,小于等于100,则A+1A,然后转到S10
S5:若大于等于80,小于等于89,则B+1B,然后转到S10
S6:若大于等于70,小于等于79,则C+1C,然后转到S9
S7:若大于等于60,小于等于69,则D+1D,然后转到S9
S8:若小于60,则E+1E,然后转到S9
S9:i+1i
S10:当i≤n时,转S5继续执行,否则输出A、B、C、D、E。
(2)程序流程图如下:
(3)程序代码如下:
#include
void main()
{
int *a,i,n;
a=new int;
int A=0;int B=0;int C=0;int D=0;int E=0;
printf("一共有学生n=");
scanf("%d",&n);
int sort(int a[],int n);
for(i=0;i
{
printf("输入第%d个学生成绩是:",i+1);
scanf("%d",&a[i]);
}
for(i=0;i
{
if(a[i]<=100&&a[i]>=90)
A=A+1;
if(a[i]<90&&a[i]>=80)
B=B+1;
if(a[i]<80&&a[i]>=70)
C=C+1;
if(a[i]<70&&a[i]>=60)
D=D+1;
if(a[i]<60&&a[i]>0)
E=E+1;
}
printf("得到A的同学人数为%d\n得到B的同学人数为%d\n得到C的同学人数为%d\n得到D的同学人数为%d\n得到E的同学人数为%d\n",A,B,C,D,E);
}
五、项目中的知识点
本实训的知识点主要有N-S流程图的制作,自定义函数,数组的应用,数组形式比较大少,for语句、if语句的运用,循环的嵌套,冒泡法排序等。
六、难点及解决办法
在画N-S流程图过程中,边框线条不知道用哪种文字环绕形式,但经过多次尝试,终于找到了“浮于文字上方”比较好处理;在写代码过程中,有些代码不熟悉,需要不断地翻看书本,也有一些地方不知道如编写代码,只好向同学或到网上去请教。
七、学习总结
通过这次C语言的实训(也即考试),我加深了对C语言的理解,同时,能更加灵活地编写代码。在学习C语言的过程中,我遇到了不少不懂的问题,此时唯有上网寻求资料和求助。在这几周的C语言课程中,我学习到了不少C语言的知识,同时对C语言的兴趣也提升了不少。虽然我现在学的只是C语言的一小部分,但我会在以后的生活中,继续通过各种途径学习C语言。
昆明理工大学程序设计基础课程综合设计实践教学课题报告课程名称C语言程序设计学号姓名学院专业班级指导教师昆明理工大学计算中心课题名称…
昆明理工大学程序设计基础课程综合设计实践教学课题报告课程名称课题名称C语言练习函数调用演示学号20xx10501133姓名李得菘学…
C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的…
3130111103福建工程学院C语言课程设计报告班级机械1301学号姓名指导教师日期20xx123020xx1331301111…
东华理工大学报告学院国际教育学院学院专业电子信息工程班级学号20xx20xx0638姓名钟天运一课程设计题目游戏20xx二课程设计…
XX大学课程设计报告课程设计名称C语言课程设计课程设计题目排班系统院系XX学院专业XX班级XX学号XXXXXXXXXXXXX姓名X…
C语言课程设计报告姓名张林班级计算111班学号11060101241A类基本题1围绕着山顶有10个圆形排列的洞狐狸要吃兔子兔子说可…
C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体…
C语言课程设计报告题目院系组别成员指导老师20xx年月日114目录一课程设计题目3二课程设计要求3三数据结构设计描述31问题描述3…
西安郵電大學C语言课程设计报告书学院名称:计算机学院学生姓名:专业名称:班级:学号:指导教师:时间:20XX年06月03日至20X…