C语言毕业课程设计报告完整版.docx
《C语言毕业课程设计报告完整版.docx》由会员分享,可在线阅读,更多相关《C语言毕业课程设计报告完整版.docx(34页珍藏版)》请在冰豆网上搜索。
C语言毕业课程设计报告完整版
(此文档为word格式,下载后您可任意编辑修改!
)
C语言课程设计报告
ExperimentDesigningreporter
课程名称:
C语言课程设计
英文名称:
CProgramExperimentDesigning
专业:
学号:
姓名:
指导教师:
日期:
2009年6月8日 至2009年6月20日
学院
《C语言课程设计》报告
CProgramExperimentDesigning
课程编号:
学时:
40学时
适用专业:
软件工程专业授课单位:
软件学院
一、C语言课程设计目的及要求
目的:
根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
要求:
1.熟悉TurboC的编程环境、主要菜单功能。
2.通过上机验证运算符、表达式、运算规则、函数使用。
3.熟练使用C语言的典型语句编写简单程序。
4.调试典型例题或习题。
5.提高上机编程能力
二、实验类型
设计类型
三、实验学时
40学时
四、实验设备
微型计算机、WINDOWSXP、TurboC2.0软件一套
五、C语言课程参考教材:
1.C语言程序设计清华大学出版社李瑞等主编
2.C语言课程设计电子工业出版社黄明等主编
课程设计(报告)任务书
任务及要求:
1.设计(研究)内容和要求。
研究内容:
1FIBONACCISL数列
2杨辉三角
3前n项阶乘和
4冒泡法排序
5学生成绩管理系统
任务和要求:
(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。
(2).对指导教师下达的题目进行系统分析。
(3).根据分析结果完成系统设计。
(4).编程:
在计算机上实现题目的代码实现。
(5).完成对该系统的测试和调试。
(6).提交课程设计报告。
(7).指标:
要求完成课程设计报告3千字以上(约二、三十页).
完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.
2.原始依据
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。
通过用C语言完成的题目,提高用C语言解决实际问题的能力。
3.参考文献
[1].C语言程序基础清华大学出版社李瑞等主编
[2].C语言课程设计电子工业出版社黄明等主编
2009年6月8日
目录
C语言课程设计报告1
1FIBONACCISL数列1
1.1系统分析1
1.2设计说明1
1.3程序运行截图1
1.4源程序代码1
2杨辉三角2
2.1系统分析2
2.2设计说明2
2.3程序运行截图3
2.4源程序代码3
3前n项阶乘和4
3.1系统分析4
3.2设计说明4
3.3源程序截图4
3.4源程序代码:
5
4.冒泡法排序5
4.1系统分析5
4.2设计说明5
4.3程序运行截图6
4.4源程序代码6
5学生成绩管理系统7
5.1系统分析7
5.2设计说明7
5.3程序运行截图7
5.4源程序代码8
1FIBONACCISL数列
1.1系统分析
查看Fibonacci数列。
1.2设计说明
主函数main()
Step1、定义f1,f2两个变量,f1,f2初值均为1。
Step2、在for循环中,不断用f1+f2覆盖新的f1,不断用刚才更新的f1加上原来的f2覆盖新的f2。
Step3、新的f1是每次循环求出的新的Fibonacci数列的第一个数;新的f2是每次循环求出的新的数列的第二个数。
Step4、输出数列查看。
程序运行截图
1.4源程序代码
#include"stdio.()
{inti;
intf[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{if(i%5==0)
printf("\n");
printf("%10d",f[i]);
}
getch();
}
2杨辉三角
2.1系统分析
输出杨辉三角前10行
2.2设计说明
1、N的定义:
#defineN10
2、主函数,判定是否j==0或者j==1
函数名:
main()
返回值:
j==0或j==1else,j==0||j==1:
a[i][j]=1,else:
a[i][j]=a[i-1][j]+a[i-1][j-1];
参数:
i,含义:
行的位置
参数:
j,含义:
列的位置
参数:
a[i][j],含义:
数的位置
处理流程:
Step1:
判别i,j的值,如果j==o,或j==i,则输出a[i][j]=1,否则转入Step2.
Step2:
输出a[i][j]=a[i-1][j]+a[i-1][j-1];
Step3:
输出整个杨辉三角前10行。
3、主函数main()
执行程序,则在屏幕上显示:
1
11
121
1331
14641
15101051
1615201561
172135352171
18285670562881
193684126126843691
2.3程序运行截图
2.4源程序代码
#include"stdio.()
{inti,j,a[N][N];
for(i=0;ifor(j=0;j<=i;j++)
if(j==0||j==i)
a[i][j]=1;
elsea[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)
{for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getch();
}
3前n项阶乘和
3.1系统分析
打出n,系统求出各个n!
,并求出其和。
3.2设计说明
1、子函数,计算一个数的阶乘。
函数名:
pow()
返回值:
n*pow(n-1)函数的递归调用。
参数:
intn,含义:
一个自然数。
处理流程:
Step1:
如果自然数是1,则返回本身;
Step2:
如果不是1,则利用函数的递归调用求阶乘,直到n再次等于1;
Step3:
返回最后结果。
2、主函数main()
给s赋初值0,输入所要求解自然数前n项阶乘的和,再用for循环求和,最后输出结果。
3.3源程序截图
3.4源程序代码:
#include"stdio.)
{if(n==1)return1;
elsereturnn*pow(n-1);
}
voidmain()
{inti,n;
longs=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+pow(i);
printf("\ns=%ld\n",s);
getch();
}
4.冒泡法排序
4.1系统分析
用冒泡法将一个数组中的N个整数从小到大排序并输出。
4.2设计说明
1、子函数,用选择法排成升序。
函数名sort()
处理流程:
Step1:
i=0开始,若i<9,执行循环,转Step2。
Step2:
比较两个数组元素,若排在前面的值大于排在后面的值,交换位置,否则转Step3;
Step3:
若前面的数小于后面的数,则不换位置输出。
2、主函数main()
从键盘上输入一个数组,然后调用子函数sort(),进行数组排序。
若数组中数字为无序或降序排列,则程序将用选择法将数组排成升序。
如:
(输入)12543768109
则在屏幕上显示:
4.3程序运行截图
4.4源程序代码
#include"stdio.()
{inti,j,a[N],t;
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{for(j=0;jif(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
for(i=0;iprintf("%4d",a[i]);
getch();
}
5学生成绩管理系统
5.1系统分析
创建学生成绩管理系统
5.2设计说明
1、M的定义:
#defineM1000
2、函数名:
shuruxianshichazhaopaixucharusavexiugaishanchuquit
3、参数:
intNM,含义:
输入成绩的学生个数、学生的学号。
4、处理流程:
Step1:
学生成绩管理系统主菜单
Step2:
选择要进行的内容,并输入序号
Step3:
若输入1则按要求输入学生成员的个数
Step4;输入学生的学号
Step5;输入学生的姓名
Step6;输入学生的6门成绩
Step7;进行保存,返回主菜单
5.3程序运行截图
5.4源程序代码
#include{
printf("\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\n");
textcolor(YELLOW);
textbackground(BLUE);
printf("welcometousethissystem!
!
!
!
\n");
sleep
(2);
load();
clrscr();
for(;;)
{switch(menu())
{case1:
shuru(stud);break;
case2:
xianshi(stud);break;
case3:
chazhao(stud);break;
case4:
paixu(stud);break;
case5:
charu(stud);break;
case6:
save(stud);break;
case7:
xiugai();break;
case8:
shanchu();break;
case9:
quit();
}
}
}
voidshuru(structstudentstud[])
{intn=0,i,j,k,c;
charb[4];
floatsum;
printf("Howmanystudent'srecorddoyouwanttoenter?
n=?
\b\b\b");
scanf("%d",&n);
for(i=0;i{sum=0;
printf("Inputthe%dthstudent'snumber",N+1);
scanf("%s",stud[N].number);
if(flag(stud))
{
printf("Therecord");
printf("Inputagain.");
getch();
}
else
{printf("Inputthe%dthstudent'sname",N+1);
scanf("%s",stud[N].name);
printf("1>yuwen2>shuxue3>yingyu4>");
for(j=0;j<6;j++)
{do
{
printf("Inputthe%dthstudent'sscore(%d)",N+1,j+1);
scanf("%s",b);
stud[N].score[j]=atof(b);
if(stud[N].score[j]<=0||stud[N].score[j]>100)
{
k=1;
printf("Errorinput!
!
!
\n");
printf("Inputagain...\n");
}
else
k=0;
}while(k);
sum+=stud[N].score[j];
}
stud[N].average=sum6;
printf("\nEntersuccess!
!
!
\n");
printf("\nPressanykeytoreturn.");
getch();
N++;
i++;
H=1;
}
clrscr();
}
clrscr();
}
voidxianshi(structstudentstud[])
{inti=0,k,max,maxb,n,flag='y';
charm[6];
if(N==0)
{
printf("Therearenotrecord.\n");
printf("Pressanykeytoreturn.");
getch();
}
else
while(flag!
='n')
{maxb=0;i=0;
do
{if(N%10!
=0)
{printf("\n\t\tThereare%dpagesinall.",N10+1);
printf("\n\t\tWhichpagedoyouwanttosee?
");
}
else
{printf("\n\t\tThereare%dpagesinall.",N11+1);
printf("\n\t\tWhichpagedoyouwanttosee?
");
}
scanf("%s",m);
k=atoi(m);
if(k)
{k=10*(k-1);
if(k>=N)
{printf("\n\t\tThepageisnotexist!
!
!
");
printf("\n\t\tInputagain.\n");
}
}
else
k=N+1;
}while(k>=N);
if((k+10)>N)
max=N;
else
max=k+10;
clrscr();
for(i=k;i{n=strlen(stud[i].name);
if(n>maxb)
maxb=n;
}
i=k;
if(maxb<8)
{while(i{
if(i%10==0)
{printf("\n\t\t\t\tPage:
%d",(k+10)10);
printf("\n1>yuwen2>shuxue3>yingyu4>");
printf("\n\t|---|||----|----|----|----|----|----|------|");
printf("\n\t|NO:
|number|name|
(1)|
(2)|(3)|(4)|(5)|(6)|junfen|\n");
}
printf("\t|---|||----|----|----|----|----|----|------|\n");
printf("\t|%-2d|%-6s|%-8s|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-6.2f|\n",i+1,stud[i].number,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],stud[i].score[5],stud[i].average);
i++;
}
printf("\t|---|||----|----|----|----|----|----|------|\n");
}
else
{while(i{
if(i%10==0)
{printf("\n\t\t\t\tPage:
%d",(k+10)10);
printf("\n\t\b\b|---||----|----|----|----|----|----|----|------|\n");
printf("\n\t\b\b|NO:
|number|name|
(1)|
(2)|(3)|(4)|(5)|(6)|junfen|\n");
printf("\t\b\b|---||----|----|----|----|----|----|----|------|\n");
}
printf("\t\b\b|%-2d|%-6s|%-16s|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-6.2f|\n",i+1,stud[i].number,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],stud[i].score[5],stud[i].average);
i++;
}
printf("\t\b\b|---||----|----|----|----|----|----|----|----|------|\n");
}
printf("\t\t\t\b\bDoyouwanttogoon?
yorn?
\b\b\b\b\b\b\b");
flag=getch();
clrscr();
}
}
voidchazhao(structstudentstud[])
{inti=0,n,j;
charnumber[8],flag='y';
clrscr();
while(flag!
='n')
{i=0;
printf("\n\t\t\t\t\b\b\b\bThenumber--namelist:
\n");
printf("----");
printf("----");
while(i{
if(strlen(stud[i].number)<4)
n=4;
else
n=strlen(stud[i].number);
if(n+strlen(stud[i].name)<15)
{if(n+strlen(stud[i].name)>6)
{printf("%-4s-",stud[i].number);
printf("%s\t",stud[i].name);
i++;
}
else
{printf("%-4s-",stud[i].number);
printf("%s\t\t",stud[i].name);
i++;
}
}
else
{printf("%-4s-",stud[i].number);
if(strlen(stud[i].number)>4)
j=(12-strlen(stud[i].number));
else
j=12-4;
for(n=0;nprintf("%c",stud[i].name[n]);
printf("..");
i++;
}
}
printf("\n---");
printf("-----");
printf("\n\t\t\bInputthestudent'snumberyouwanttosearch:
");
scanf("%s",number);
i=0;
while(i{if(strcmp(stud[i].number,number)==0)
{printf("\n1>yuwen2>shuxue3>yingyu4>");
if(strlen(stud[i].name)<8)
{printf("\n");
printf("\t|---|||----|----|----|----|----|----|------|\n");
printf("\t|NO:
|number|name|
(1)|
(2)|(3)|(4)|(5)|(6)|junfen|\n");
printf("\t|---|||----|----|----|----|----|----|------|\n");
printf("\t|%-2d|%-6s|%-8s|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-6.2f|\n",i+1,stud[i].number,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],stud[i].score[5],stud[i].score[6],stud[i].average);
printf("\t|---|||----|----|----|----|----|----|------|\n");
}
else
{printf("\n");
printf("\t|---||----|----|----|----|----|----|----|------|\n");
printf("\t|NO:
|number|name|
(1)|
(2)|(3)|(4)|(5)|(6)|junfen|\n");
printf("\t|---||----|----|----|----|----|----|----|------|\n");
printf("\t|%-2d|%-6s|%-16s|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-4.1f|%-6.2f|\n",i+1,stud[i].number,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],stud[i].score[5],stud[i].average);
printf("\t|---||----|----|----|----|----|----|----|------|\n");
}
flag=0;
i=N;
}
i++;
}
if(flag)
printf("\n\t\t\tYou