C语言设计报告_第1页
C语言设计报告_第2页
C语言设计报告_第3页
C语言设计报告_第4页
C语言设计报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计报告课程名称C语言程序设计题目名称根据条件进行学生成绩排名学生学院专业班级学号学生姓名指导教师2010年4月18日实训——根据条件进行学生成绩排名实训的目的和要求通过实践,了解学生成绩排名在C语言中的设计,并能成功设计出学生成绩的排序和统计不同成绩段中学生人数的代码。实训的要求在项目报告中画出程序流程图,说明程序设计的算法,附上程序代码。在项目中说明知识点。在项目中报告中说明程序设计过程中的难点、解决办法及编程小结和体会。实训的内容在函数中进行10个学生成绩从高到低排名sort(inta[10])。改进第一步的函数为sort(inta[],intn),进行n个学生成绩从高到低排名。改进第二步的函数为sort(inta[],intn,charstyle),将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为’a’按升序排列,style为’d’按降序排列。分别统计不同成绩段中学生人数,A类90-100,B类80-89,C类70-79,D类60-69,E类为60分以下。实训的过程1、在函数中进行10个学生成绩从高到低排名sort(inta[10])。(1)程序设计算法描述如下:S1:输入10个学生的成绩S2:i0S3:把其中一个成绩分别与其他9-i个成绩比较大小,确定在这10个成绩中的位置S4:i+1iS5:当i<9时,转S3继续执行,否则输出排名后的10个成绩,算法停止。(2)程序流程图如下:输入10个学生的成绩给a[0]到a[9]j由0变到8共执行9次循环进行9-j次比较真a[i]>a[j]假a[i]a[j]输出a[0]到a[9](3)程序代码如下:#include<stdio.h>voidmain(){inta[10],i; intsort(inta[10]);for(i=0;i<10;i++) { printf("请输入第%d个学生成绩是:",i+1);/*输入成绩*/ scanf("%d",&a[i]); } printf("==============================\n"); printf("这些学生的分数成绩排名是:\n"); sort(a);}intsort(inta[10]){inti=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]);/*输出成绩*/ }return0;}2、改进第一步的函数为sort(inta[],intn),进行n个学生成绩从高到低排名。(1)程序设计算法描述如下:S1:输入n个学生的成绩S2:i0S3:把其中一个成绩分别与其他n-1-i个成绩比较大小,确定在这n个成绩中的位置S4:i+1iS5:当i<n-1时,转S3继续执行,否则输出排名后的n个成绩,算法停止。(2)程序流程图如下:输入n个学生的成绩给a[0]到a[n-1]j由0变到n-2共执行n-1次循环进行n-1-j次比较真a[i]>a[j]假a[i]a[j]输出a[0]到a[n-1](3)程序代码如下:#include<stdio.h>voidmain(){int*a,i,n;a=newint; printf("一共有学生n="); scanf("%d",&n); intsort(inta[],intn);for(i=0;i<n;i++) { printf("输入第%d个学生成绩是:",i+1);/*输入成绩*/ scanf("%d",&a[i]); } printf("============================\n"); printf("这些学生的成绩排名是:\n"); sort(a,n);}intsort(inta[],intn){inti=0,j=0,t;/*冒泡法排序*/for(i=0;i<n;i++){for(j=0;j<n-1;j++)/*进行n-1次循环,实现n-1趟比较*/{if(a[i]>a[j]){t=a[j];a[j]=a[i];a[i]=t;}}}for(i=0;i<n;i++){printf("第%d名的分数是:%d\n",i+1,a[i]);/*输出成绩*/}return0;}3、改进第二步的函数为sort(inta[],intn,charstyle),将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为’a’按升序排列,style为’d’按降序排列。(1)程序设计算法描述如下:S1:输入n个学生成绩S2:选择排列方式aorb,style为’a’按升序排列,style为’d’按降序排列S3:把其中一个成绩分别与其他n-1-i个成绩比较大小,确定在这n个成绩中的位置S4:i+1iS5:当i<n-1时,转S3继续执行,否则输出排名后的n个成绩,算法停止。(2)程序流程图如下:输入n个学生的成绩给a[0]到a[n-1]选择排列方式aorbastylebj由0变到n-2共执行n-1次循环进行n-1-j次比较真a[i]<a[j]假真a[i]>a[j]假a[i]a[j]a[i]a[j]输出a[0]到a[n-1](3)程序代码如下:#include<stdio.h>#include<conio.h>voidmain(){int*a,i,n;a=newint; charstyle; intascending(inta[],intn);intdescending(inta[],intn); printf("一共有学生n="); scanf("%d",&n); intsort(inta[],intn,charstyle);for(i=0;i<n;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<n;i++) {printf("%d\n",a[i]); }}intsort(inta[],intn,charstyle){inti=0,j=0,t; if(style=='a') for(i=0;i<n;i++) {for(j=0;j<n-1;j++) {if(a[i]<a[j]) {t=a[j];a[j]=a[i];a[i]=t; } } } if(style=='b') for(i=0;i<n;i++) {for(j=0;j<n-1;j++) {if(a[i]>a[j]) {t=a[j];a[j]=a[i];a[i]=t; } } } return0;}4、分别统计不同成绩段中学生人数,A类90-100,B类80-89,C类70-79,D类60-69,E类为60分以下。(1)程序设计算法描述如下:S1:i0,A0,B0,C0,D0,E0S2:输入学生人数nS3:输入学生成绩S4:若大于等于90,小于等于100,则A+1A,然后转到S10S5:若大于等于80,小于等于89,则B+1B,然后转到S10S6:若大于等于70,小于等于79,则C+1C,然后转到S9S7:若大于等于60,小于等于69,则D+1D,然后转到S9S8:若小于60,则E+1E,然后转到S9S9:i+1iS10:当i≤n时,转S5继续执行,否则输出A、B、C、D、E。(2)程序流程图如下:开始开始i=0输入人数n输入成绩9090≤a[i+1]≤100A+1AB+1BC+1CD+1DE+1E70≤a[i+1]≤7960≤a[i+1]≤6980≤a[i+1]≤89a[i+1]<60i+1ii≤n输出A、B、C、D、E结束(3)程序代码如下:#include<stdio.h>voidmain(){int*a,i,n; a=newint; intA=0;intB=0;intC=0;intD=0;intE=0; printf("一共有学生n="); scanf("%d",&n); intsort(inta[],intn);for(i=0;i<n;i++) { printf("输入第%d个学生成绩是:",i+1); scanf("%d",&a[i]); } for(i=0;i<n;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流程图过程中,边框线条不知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论