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

下载本文档

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

文档简介

1、?C语言课程设计?报告题目:成绩治理系统专业年级:自动化一班 学号:姓名: 指导教师:叶念渝2021年12月17日一 . 设计内容1输入功能:由键盘输入 20 个学生姓名的某门课程 的学习成绩 1099 分也可超过. 2运算功能:将分数由低到高排序用直接排序法和冒泡法 ,并 显示学生姓名和对应的分数.3检索功能:用线性搜索法检索某个学生的成绩输入姓名,显示成绩4查询功能:对分搜索法检索某个学生的成绩输入姓名,显示成绩.二. 设计要求1可以输入假设干名学生信息包括姓名 / 成绩等;2在源代码中将假设干名同学的信息输出;3在源代码中能够将假设干名同学的成绩排序升序 / 降序均可;4可以根据不同的查

2、询条件 线性 /对分搜索 来查询到相关学生的信息;三. 设计思路首先进入软件界面 ,以菜单为提示的成绩治理系统 . 分别建立输 入学生信息函数输入学生信息 , 建立排序函数实现排序功能 , 建立查 找函数实现查找功能 . 通过建立数组在函数运行中进行同步调换实现各信息间分联系,到达信息相对应的目的,在主函数中分别调用各功 能函数完成程序目的.四. 程序设计流程图1.学生信息输入函数2.直接排序法流程图请重新输输入完毕退出子重新输入N3.冒泡排序法流程图输入完毕退出子名字分数同步进行交换scor出姓名和成绩交换完毕退出子<>4.Y6.主程序主程序入口<-进入相应的分函数界输入完

3、毕退出五. 设计及调剂的过程中遇到的问题和解决方法(1).输入人的姓名时为什么要用二维数组?由于输入了多个人的名字所以我 们要建立一个名字的二维数组.2. 在输入函数中我开始用的是 if 语句定义输入范围结果只提示一次错误. 后来我加了一个 do-while 循环,就可以一直执行下去了.3. 在冒泡排序法中没有理解 strcpy 函数的用法把字符串复制到字符串中去 了,真正用法是将字符串复制的字符数组中去.4. 将直接排序法和冒泡排序法弄混了,平时直接习惯有冒泡法,后来只有 从书上一步一步的分析其数值的变化. 终于本质上的理解了两种排序的作用是如 何实现的.冒泡法是每比拟一轮产生一个最小大的数

4、放在第一个位置,而直 接排序法是找出数值最小大的小标与第一个调换.5. 在设计主函数时我用的是 switch 函数调用分函数, 在进行搜索时我没加循 环结果只能查找一个人的不能进行查多个人和判断是否能查到此人. 后来我在搜 索法中加了个 while 循环问题就解决了.6. 在调试过程中我遇到的主要问题是输出姓名时第一个人的名字输出不出 来,后来我一句句的看源程序, 也不知道为什么. 我问班上同学才知道我用的是 getsnamei ;输入字符串占用了一个字符所以输出第一姓名时名字数输不出 来,我把它改成 scanf"%s",&namei; 就可以输出了.从这件事中我明

5、白了 要学会多思考即使你是参考书上的也要每一步弄懂, 不然一个小的细节就会导致 程序出问题,我还是对这两种输入字符串函数没有本质的了解.7.程序有许多小问题都是在自己一遍遍调试下更正了, 比方程序差东西、 有 问题等,做好一个程序编程还是要自己慢慢探索,理解每一个函数语句.六心得体会与感受C 语言课程设计总有两周时间,在第一次上课老师交给我们任务不知从何 下手到最后将整套学生治理系统的程序准确无误的编出来, 对我来说无疑又是一 大进步,在这段时间里我遇到了不少的问题. 产生了许多的疑问, 但是随着自己 的追随问题的根源, 不断的温习书本上的知识, 反复进行上机的操作, 思路一步 一步的清楚起来

6、了, 所遇到的一些问题也逐渐得到就解决, 本不是那么情愿做的 程序到由于解决了一些问题所产生的成就感反到激起了我兴趣. 于是借着心中的 那一股劲, 反复的程序进行摸索, 把以前很多没学好的地方都捡了起来, 还学会 了很多新的知识. 这一切都源于老师对我们的严格要求, 还有自己的刻苦专研才 有了这样的成果. 如果老师要求没有那么严格, 或者是自己不去努力是做不出来 学生治理系统的.在设计的过程中,在我印象中最深刻的挺多的. 冒泡和直接排序法的比拟, 在二维数组的比拟时也遇到了一些问题, 主要是对二维数组的概念不清楚, 性质 不了解,所以在运用时就有一些错误. 当然在设计过程中由于输入法的错误、

7、函 数层次不清楚变量名重复定义, 也花了很多时间去解决. 所以在这次编程过程中, 不仅仅只是完成作业而已, 更多的是要用一种肯专研的学习态度, 养成一个良好 学习习惯. 作为一个合格的编程人员不仅仅要有专业知识, 还要有一个良好的编 程习惯和一颗仔细的心,更需要一种负责认真编程态度.七源程序#include <stdio.h>#include <string.h> #define N 5/1. 输入函数 / 学生信息输入函数 void input1(char nameN8,int score)int i;for(i=0;i<N;i+)printf ("n

8、请输入第c个学生姓名:",i+1);循环字符输入函数scanf("%s",&namei);printf ("n请输入第c个学生成绩:",i+1);scanf("%d",&scorei);do/do-whilewhile(scorei<1|scorei>100)printf(" 输入有误 !n");printf(" 请重新输入成绩 :");scanf("%d",&scorei);while(scorei<1|scorei>

9、;100);getchar();/2. 成绩排序输出直接排序法void sort1(char nameN8,int score)int i,j,max,temp1;char temp2100;for(i=0;i<N-1;i+)max=i;for (j=i+1;j<N;j+)if(scoremax<scorej) max=j;temp1=scorei;scorei=scoremax;scoremax=temp1;字符串复制函数strcpy(temp2,namei); /strcpy()strcpy(namei,namemax);strcpy(namemax,temp2);pri

10、ntf("The sorted result:n");for(i=0;i<N;i+)printf(" 姓名: %10s 成绩: %3dn",namei,scorei); /3. 成绩排序输出 ( 冒泡法)void sort2(char nameN8,int score) int i,j,t;char h100;for(j=0;j<N;j+)for(i=0;i<N-j;i+)if(scorei>scorei+1)t=scorei;scorei=scorei+1;scorei+1=t;strcpy(h,namei);strcpy(na

11、mei,namei+1); strcpy(namei+1,h);printf("The sorted result:n");for(i=0;i<N;i+)printf(" 姓名: %10s 成绩: %3dn",namei,scorei); /4. 线性搜索法检索学生的成绩定义线性void search1(char nameN8,int score)/搜索法函数getchar();int a,i;char b;char str8;while(1)printf" 请输入学生的姓名 :"gets(str); / 输入一段 字符串for

12、(i=0;i<N;i+)a=strcmp(str,namei); /strcmp 函数 (字符串比拟函数)if(a=0)break;if(a!=0)printf("查无此人 !");else if(a=0)printf(" 姓名 :%10s 成绩: %3dn",namei,scorei);getchar();printf(" 继续查询吗 Y/N:");b=getchar();getchar();if(b='y')|(b='Y')continue;elsebreak;/5. 对分搜索法检索学生的成绩

13、void search2(int score,char nameN8)int a,b,c,i;char d;while(1)a=0;b=N-1;printf(" 请输入学生成绩 :");scanf("%d",&c);getchar();while(a<=b)i=(a+b)/2;if(scorei=c)break;if(scorei<c)a=i+1;if(scorei>c)b=i-1;if(scorei!=c)printf(" 无此成绩 n");elseprintf(" 姓名 :%10s 成绩:%3d

14、n",namei,scorei);printf(" 继续查询吗 Y/N:");d=getchar();if(d='y')|(d='Y')continue;elsebreak;void main()int scoreN;char nameN8;int a,b;printf(" *学生成绩治理系统 *n");printf(" * 1.输入学 生 信息*n");printf(" * 2.直接排序法*n");printf(" * 3.冒泡排序法*、Hprintf(&quo

15、t; 直 接 排 序 法 n ");*n");printf("*5.对分搜索法*n");b=1;循环while(b=1) /while printf(" 请输入序号 :");scanf("%d",&a);printf("n");语句实现多switch(a) /switch分支选择结构case 1:printf(" 输入学生信息 n ");input1(name,score);break;case 2:sort1(name,score);break;case 3:pri

16、ntf(" 冒 泡 排 序 法 n ");sort2(name,score);break;case 4:printf(" 线 性 搜 索 法 n ");search1(name,score);break;case 5:printf(" 对 分 搜 索 法 n ");search2(score,name);break;case 6:while(0);break;default:prin tf("errorn");printf"1继续程序,2结束程序n"sea nf"%d",&b;运行

温馨提示

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

评论

0/150

提交评论