C语言课程设计报告类型3.docx
- 文档编号:6029898
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:47
- 大小:224.26KB
C语言课程设计报告类型3.docx
《C语言课程设计报告类型3.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告类型3.docx(47页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告类型3
C语言课程设计报告
ExperimentDesigningreporter
课程名称:
C语言课程设计
英文名称:
CProgramExperimentDesigning
专业:
学号:
姓名:
指导教师:
日期:
2010年7月12日 至2010年7月23日
学院
《C语言课程设计》报告
CProgramExperimentDesigning
课程编号:
01200308005学时:
40学时
适用专业:
软件工程专业授课单位:
软件学院
一、C语言课程设计目的及要求
目的:
根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
要求:
1.熟悉TurboC的编程环境、主要菜单功能。
2.通过上机验证运算符、表达式、运算规则、函数使用。
3.熟练使用C语言的典型语句编写简单程序。
4.调试典型例题或习题。
5.提高上机编程能力
二、实验类型
设计类型
三、实验学时
40学时
四、实验设备
微型计算机、WINDOWSXP以上版本的操作系统、TurboC2.0软件一套
五、C语言课程参考教材:
[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006
[2]李瑞等.C程序设计基础,清华大学出版社,2008
[3]谭浩强.C语言程序设计(第二版).北京:
高等教育出版社,2002
课程设计(报告)任务书
任务及要求:
1.设计(研究)内容和要求
研究内容:
1、输入实型数a、b、c,要求按由大到小的顺序输出(函数参数要用指针)。
2、编写一个通用的子函数,将一个一维数组进行逆序存储(第一个元素与最后一个元素值互换,依次类推.....)。
3、编写一个通用的求n×n阶矩阵的对角线元素之和。
4、编写程序,输入10个员工的编号、姓名、基本工资、职务工资,求出“基本工资+职务工资”最少的职工(要求用子函数完成),并输出该职工记录。
5、有5个学生4门课,编写程序算出4门课的总成绩,并按总成绩进行排序,然后打印出成绩表。
6、用户由键盘输入一个文件名,然后输出一串字符(用#结束输入),存放到此文件并将字符的个数写到文件尾部。
7、有5个学生,每个学生有三门课的成绩。
从键盘输入以上数据(包括学生号、姓名号、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存在磁盘文件stud中。
8、学生成绩管理系统。
任务和要求:
(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。
(2).对指导教师下达的题目进行系统分析。
(3).根据分析结果完成系统设计。
(4).编程:
在计算机上实现题目的代码实现。
(5).完成对该系统的测试和调试。
(6).提交课程设计报告。
(7).指标:
要求完成课程设计报告3千字以上(约二、三十页).
完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.
2.原始依据
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。
通过用C语言完成的题目,提高用C语言解决实际问题的能力。
3.参考文献
[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006
[2]马靖善等.C语言程序设计.清华大学出版社,2005
[3]谭浩强.C语言程序设计(第二版).北京:
高等教育出版社,2002
2010年7月12日
[说明:
学生打印稿不能出现,字体要求等说明文字]
1按大小排序输出
1.1系统分析
输入实型数a、b、c,要求按由大到小的顺序输出(函数参数要用指针)。
1.2设计说明
1、子函数,交换两个地址的数值
函数名:
swap()
返回值:
无
参数:
float*x、float*y,含义:
指针(指向数值)
处理流程:
Step1:
定义变量z,作为交换时的暂存变量。
Step2:
将数值*x赋给z
Step3:
将数值*y赋给*x
Step4:
将数值z赋给*y
2、主函数main():
从键盘上输入a、b、c三个数,然后进行判断三个变量中数值的大小关系。
调用子函数swap()交换,使最终结果为a>b>c。
最后输出a、b、c。
1.3程序运行截图
1.4源程序代码
#include"stdio.h"
voidswap(float*x,float*y)
{
floatz;
z=*x;
*x=*y;
*y=z;
}
voidmain()
{
floata,b,c;
scanf("%f%f%f",&a,&b,&c);
if(a
swap(&a,&b);
if(a swap(&a,&c); if(b swap(&b,&c); printf("Afterswap: a=%f,b=%f,c=%f\n",a,b,c); } 2逆序存储 2.1功能说明 编写一个通用的子函数,将一个一维数组进行逆序存储(第一个元素与最后一个元素值互换,依次类推.....)。 2.2设计说明 1、子函数: (1)子函数1,交换x[i]与x[n-i-1]的数值 函数名: afterward() 返回值: 无 参数: float*x,,含义: 数组首地址;intn,含义: 数组元素个数。 处理流程: Step1: 定义变量z,作为交换时的暂存变量;定义变量i,循环时使用。 Step2: 在for循环时交换x[i]与x[n-i-1]的数值。 (2)子函数2,输出数值 函数名: printarray() 返回值: 无 参数: float*x,,含义: 数组首地址;intn,含义: 数组元素个数 处理流程: Step1: 定义变量i,循环时使用。 Step2: 在循环时输出数值。 2、主函数main() 从键盘上输入10个数,给一维数组x[n]赋初值。 调用afterward()交换x[i]与x[n-i-1]的数值。 再调用printarray(),输出交换后数值。 2.3程序运行截图 2.4源程序代码 #include"stdio.h" voidafterward(float*x,intn) { floatz; inti; for(i=0;i { z=*(x+i); *(x+i)=*(x+n-1-i); *(x+n-1-i)=z; } } voidprintarray(float*x,intn) { inti; for(i=0;i { printf("%f",x[i]); } printf("\n"); } main() { floata[10]={1.,2.,3.,4.,5.,6.,7.,8.,9.,10.}; afterward(a,10); printarray(a,10); } 3n×n阶矩阵的对角线元素之和 3.1功能说明 编写一个通用的求n×n阶矩阵的对角线元素之和。 3.2设计说明 1、N的定义: #defineN4 2、子函数,将对角线上的数值相加。 函数名: corner() 返回值: sum,对角线上数值之和。 参数: int*x,含义: 数组首地址;intn,含义: 数组行列数。 处理流程: Step1: 定义变量sun,存放对角线上数值之和的数值;定义变量i,循环时使用。 Step2: 在for循环时将行列数相等的数组数值加到变量sun中。 Step3: 判断另一条对角线上的数是否加重复,即是否为奇数矩阵的对角线中心。 Step4: 若为奇数矩阵的对角线中心数,则不加入sun,若不是奇数矩阵的对角线中心数,则加入sun中。 3、主函数main() 定义二维数组a[N],给二维数组a[N]赋初值1~16(如下图)。 定义sum,再调用corner()计算对角线上的数值,将值赋给sum,输出数值sum。 3.3程序运行截图 3.4源程序代码 #defineN4 #include"stdio.h" intcorner(int*x,intn) { inti,sum=0; for(i=0;i { sum=sum+*(x+i); if(x+i! =x+n-1-i) { sum+=*(x+n-i-1); } x=x+n; } returnsum; } voidmain() { inta[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; intsum; sum=corner(*a,4); printf("%d\n",sum); } 4职工信息管理 4.1系统分析 编写程序,输入10个员工的编号、姓名、基本工资、职务工资,求出“基本工资+职务工资”最少的职工(要求用子函数完成),并输出该职工记录。 4.2设计说明 1、结构体employee的定义: intnum,员工编号 charname[20],员工姓名 floatjbgz,员工基本工资 floatzwgz,员工职务工资 floatsum,工资总和=基本工资+职务工资 2、子函数: 子函数 (1): 函数名: sum() 返回值: 无 参数: structemployee*p,含义: 员工信息;intn,含义: 数组元素个数。 处理流程: Step1: 定义i,循环时使用。 Step2: 在for循环的同时,将jbgz与zwgz的和赋值给sum。 子函数 (2): 函数名: find() 返回值: 无 参数: structemployee*p,含义: 员工信息;intn,含义: 数组元素个数。 处理流程: Step1: 定义i,循环时使用。 Step2: 在for循环的同时,判断选出sum最小的员工。 Step3: 输出员工的基本信息。 3、主函数main() 首先进行函数的声明,定义员工的基本信息(举例为五个员工,信息如下图),调用函数sum()和find(),输出结果。 4.3程序运行截图 4.4源程序代码 #include"stdio.h" structemployee { intnum; charname[20]; floatjbgz; floatzwgz; floatsum; }; voidmain() { voidsum(structemployee*,int); voidfind(structemployee*,int); structemployeea[10]={11,"wangLi",660.,760.,0., 13,"wangLin",690.,740.,0., 16,"LiuHua",860.,760.,0., 14,"ZhangJun",660.,660.,0., 22,"XuXia",650.,760.,0.}; sum(a,5); find(a,5); } voidsum(structemployee*p,intn) { inti; for(i=0;i { p->sum=p->jbgz+p->zwgz; p++; } } voidfind(structemployee*p,intn) { structemployee*pmax=p; inti; for(i=1;i if((p+i)->sum>pmax->sum)pmax=p+i; printf("Theperson'sinformation: \nnumber=%d,\nname=%s,\nbasicsalary=%.2f,\njobsalary=%.2f,\ntotal=%.2f\n",pmax->num,pmax->name,pmax->jbgz,pmax->zwgz,pmax->sum); } 5学生成绩处理 5.1系统分析 有5个学生4门课,编写程序算出4门课的总成绩,并按总成绩进行排序,然后打印出成绩表。 5.2设计说明 1、结构体student的定义: intnum,学生学号 charname[20],学生姓名 charsex,学生性别 floats[4],学生四门课的成绩 floatsum,学生成绩总和 2、子函数: 子函数 (1): 函数名: sum() 返回值: 无 参数: structstudent*p,含义: 学生信息;intn,含义: 结构体个数。 处理流程: Step1: 定义i、j,循环时使用。 定义变量d。 Step2: 在for循环的同时,将各成绩之和的和赋值给d,在将d的数值赋给sum。 子函数 (2): 函数名: sort() 返回值: 无 参数: structstudent*p,含义: 学生信息;intn,含义: 结构体个数。 处理流程: Step1: 定义i、j,循环时使用。 定义变量k。 Step2: 在for循环的同时,按sum数值由小到大排列学生信息。 子函数(3): 函数名: print() 返回值: 无 参数: structstudent*p,含义: 学生信息;intn,含义: 结构体个数。 处理流程: Step1: 定义i,循环时使用。 Step2: 在for循环的同时,将排列好的学生信息输出。 3、主函数main() 首先进行函数的声明,定义学生的基本信息(举例为五个学生,信息如下图),调用函数sum()、sort()和print(),输出结果。 5.3程序运行截图 5.4源程序代码 #include"stdio.h" structstudent { intnum; charname[20]; charsex; floats[4]; floatsum; }; voidmain() { voidsum(structstudent*,int); voidsort(structstudent*,int); voidprint(structstudent*,int); structstudenta[5]={11,"wangli",'f',66.,76.,83.,61.,0.,13,"wanglin",'m',69.,74.,63.,91.,0.,16,"liuhua",'m',86.,76.,93.,61.,0.,14,"zhangjun",'m',66.,66.,83.,61.,0.,22,"xuxia",'f',65.,76.,93.,68.,0.,}; sum(a,5); sort(a,5); print(a,5); } voidsum(structstudent*p,intn) { inti,j; floatd; for(i=0;i { d=0.0; for(j=0;j<4;j++) d+=p->s[j]; p->sum=d; p++; } } voidsort(structstudent*p,intn) { structstudentt; inti,j,k; for(i=0;i { k=i; for(j=i+1;j if((p+k)->sum<(p+j)->sum)k=j; if(k! =i) {t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;} } } voidprint(structstudent*p,intn) { inti; for(i=0;i {printf("%-10d%-10s%5c%10.1f%5.1f%5.1f%5.1f%10.1f\n",p->num,p->name,p->sex,p->s[0],p->s[1],p->s[2],p->s[3],p->sum); p++; } } 6文件处理 6.1系统分析 用户由键盘输入一个文件名,然后输出一串字符(用#结束输入),存放到此文件并将字符的个数写到文件尾部。 6.2设计说明 1、主函数main() 定义文件fp,字符(串)变量ch,fname[32],定义整型变量count。 输入文件名(若不存在,则退出程序),输入字符串(以‘#’结束)。 程序将文件中的字符数统计后写入文件尾部。 6.3程序运行截图 6.4源程序代码 #include"stdio.h" main() { FILE*fp; charch,fname[32]; intcount=0; printf("Inputthefilename: "); scanf("%s",fname); if((fp=fopen(fname,"w+"))==NULL) { printf("Can'topenfile: %s\n",fname); exit(0); } printf("Enterdata: \n"); while((ch=getchar())! ='#') { fputc(ch,fp); count++; } fprintf(fp,"\n%d\n",count); fclose(fp); } 7成绩存储 7.1系统分析 有5个学生,每个学生有三门课的成绩。 从键盘输入以上数据(包括学生号、姓名号、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存在磁盘文件stud中。 7.2设计说明 1、结构体student的定义: charname[10];学生姓名 ints[3];三门课的成绩 floatave;各科平均分 2、主函数main() 定义文件fp,结构体studentst[5],变量i,打开文件stud(若不存在,则退出程序),输入学生信息,并计算平均分。 然后将原有数据和计算出的平均分数存在磁盘文件stud中。 7.3程序运行截图 7.4源程序代码 #include"stdio.h" structstudent { charname[10]; ints[3]; floatave; }; main() { FILE*fp; inti; structstudentst[5]; if((fp=fopen("stud","w"))==NULL) { printf("cannotopenfile\n"); exit(0); } for(i=0;i<5;i++) { printf("number%dinputnameand3scores: \n",i+1); scanf("%s%d%d%d",&st[i].name,&st[i].s[0],&st[i].s[1],&st[i].s[2]); st[i].ave=(st[i].s[0]+st[i].s[1]+st[i].s[2])/3.0; fprintf(fp,"%s%d%d%d\n", st[i].name,st[i].s[0],st[i].s[1],st[i].s[2]); } fclose(fp); } 8图书馆借阅管理系统 8.1系统分析 建立图书馆借阅管理系统,采用计算机对图书馆进行图书管理、会员管理、工作人员信息查询和图书馆反馈信息的查询。 8.2设计说明 1.进入系统(如图1) 2.功能说明: 1)图书管理功能 (1)增加图书: 将新进的图书添加到图书库中,便于管理! 通过bookadd函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Add选项,按回车键进入图书添加功能,窗口中会显示Pleaseinputthebooknum的提示话语,用户输入书号即可;(如图2、图3) (2)删除图书: 删除丢失或废弃的图书。 通过bookdel函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Del选项,按回车键进入图书删除功能,窗口中会显示Pleaseinputthebookname的提示话语,输入书名,点击回车,所要删除的图书即可删除;(如图4) (3)查询图书: 对已经加入到图书库中的图书进行查询(书号,书名,书的价钱等), 通过bookconsult函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Consult选项,按回车键进入图书查询功能,窗口中会显示Pleaseinputthebookname的提示话语,用户输入书名,系统会显示图书的编号,书名,价钱及借阅情况等;(如图4) (4)图书的借阅: 对于借阅的图书进行记录,便于管理,通过bookborrow函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Borrow选项,按回车键进入图书借阅功能,窗口中会显示Pleaseinputthemembername的提示话语,输入会员名即可,若是非会员,窗口则显示Youarenotmember,pleaseregister! 的提示话语;(如图5) (5)图书的归还: 对于借出图书后的归还进行记录,并将图书返回书库。 通过Bookreturn函数实现;用户需按ALT+B组合键,选择Book功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Return选项,按回车键进入图书归还功能,窗口中会显示Pleaseinputthebookname的提示话语,输入书名即可,若是非书库中的书,窗口会显示ReturnFail! 的提示话语。 (如图6) 2)会员管理功能 (1)添加会员: 添加已经办理好会员手续的人资料,便于管理! 通过memberadd函数实现;用户需按ALT+M组合键,选择Member功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Add选项,按回车键进入会员添加功能,窗口中会显示Pleaseinputnewmembername的提示话语,输入姓名即可,然后用户输入会员的性别和年龄,按回车键添加成功;(如图7) (2)删除会员: 对退出会员的人进行删除。 通过memberdel函数实现;用户需按ALT+M组合键,选择Member功能菜单,待下拉菜单弹出之后,用户调整方向键,选择Del选项,按回车键进入会员删除功能,窗口中会显示P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 类型