c语言课程设计报告.docx
- 文档编号:4034653
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:29
- 大小:342.62KB
c语言课程设计报告.docx
《c语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
c语言课程设计报告
《C程序设计》课程设计
学院:
***
专业:
***
班级:
***
学号:
***
姓名:
***
指导教师:
***
2016年9月
第1章分支与循环
1.2设计任务
1.王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问他:
“煎饼不许离开砧板,切100刀最多能分成多少块?
”
2.若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。
3.输入年月日,求它是该年的第几天。
注:
闰年的2月有29天,平年的2月有28天。
4.简单计算器。
请编写一个程序计算表达式:
data1opdata2的值。
其中op为运算符+、-、*、/,data1和data2是数据。
5.猜数游戏。
由计算机“想”一个数请人猜,如果猜对了,则游戏结束,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到猜对为止。
计算机记录人猜的次数,以此可以反映出猜数者“猜”的水平。
6.一辆肇事汽车的号码是4位十进制数。
目击者向交警描述这个车号:
这是一个完全平方数;这4个数字从左至右一个比一个小。
请帮助交警寻找肇事者,将车号算出来。
1.3实现过程
1.3.1设计任务1的实现过程
【任务描述】
1.王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问他:
“煎饼不许离开砧板,切100刀最多能分成多少块?
”
【算法分析】(用文字或流程图进行描述)
用到数学中的逆推公式。
s=1+n*(n+1)/2
【源程序代码】
#include
main()
{intn,s;
for(n=1;n<=100;n++)
{
s=1+n*(n+1)/2;
}
printf("%d\n",s);
}
【编译示图】(示图中要有0error,0warning的提示)
【运行结果示图】
1.3.2设计任务2的实现过程
【任务描述】
6.一辆肇事汽车的号码是4位十进制数。
目击者向交警描述这个车号:
这是一个完全平方数;这4个数字从左至右一个比一个小。
请帮助交警寻找肇事者,将车号算出来。
【算法分析】(用文字或流程图进行描述)
找出这个四位数的个、十、百、千位数,利用题目条件运用两个for循环最后求出结果。
【源程序代码】
#include
main()
{ints,a,b,c,d,e;
for(s=1000;s<10000;s++)
{
a=s%10;//gewei
b=s/10%10;//shiwei
c=s/100%10;//baiwei
d=s/1000;//qianwei
for(e=30;e<100;e++)
{
if(a>b&&b>c&&c>d&&e*e==s)
printf("%d\n",s);
}
}
}
【编译示图】(示图中要有0error,0warning的提示)
【运行结果示图】
1.3.3设计任务3实现过程
【任务描述】
2.若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。
【算法分析】(用文字或流程图进行描述)
用三个for循环嵌套,再以一个if条件语句就可以输出最后结果。
【源程序代码】
#include
main()
{intx,y,z;
for(x=0;x<4;x++)
for(y=0;y<4;y++)
for(z=0;z<7;z++)
if(x+y+z==8)
printf("%d红%d白%d黑\n",x,y,z);
}
【编译示图】(示图中要有0error,0warning的提示)
【运行结果示图】
1.3.4设计任务4实现过程
【任务描述】
3.输入年月日,求它是该年的第几天。
注:
闰年的2月有29天,平年的2月有28天。
【算法分析】(用文字或流程图进行描述)
先用if语句判断出平年和闰年,再用for循环输出最后结果。
【源程序代码】
#include
voidmain()
{
intyear,moth,day;
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年2月28天365天
intb[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年2月29天366天
inti,j,num=0;
intx;
printf("请输入年月日,\n");
scanf("%d,%d,%d",&year,&moth,&day);
if((year%4==0)&&(year%100!
=0)||(year%4==0)&&(year%400==0))
{x=1;}
else
{x=0;}
if(x)
{for(i=0;i num+=b[i]; num+=day; } else { for(j=0;j num+=a[j]; num+=day; } printf("今天是第%d年的第%d天\n",year,num); } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 1.3.5设计任务5实现过程 【任务描述】 4.简单计算器。 请编写一个程序计算表达式: data1opdata2的值。 其中op为运算符+、-、*、/,data1和data2是数据。 【算法分析】(用文字或流程图进行描述) 先输出所需数据和运算符,然后用switch语句进行判断,最后输出结果。 【源程序代码】 #include voidmain() { floata,b; charc; printf("请输入数字a,运算符c,数字b: \n"); scanf("%f%c%f",&a,&c,&b); //charc; //printf("请输入运算符: \n"); //scanf("%c",&c); switch(c) { case'+': printf("%f\n",a+b);break; case'-': printf("%f\n",a-b);break; case'*': printf("%f\n",a*b);break; case'/': printf("%f\n",a/b);break; default: printf("inputerror\n"); } } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 第2章数组与函数 2.2设计任务 1.有一个一维数组score[],内存放10个学生的成绩,要求编写三个函数分别求学生的平均成绩,求10个学生的最高分,求10个学生的最低分。 2.编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。 3.输入10个学生姓名,按字典顺序将排在最前面的学生姓名输出。 即在字符数组中求最小字符串。 4.用函数求N*N的对角线的和。 其中的N是用户通过键盘输入的任意值。 5.“数学黑洞”: 任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差任为一个自然数。 重复进行上述运算,会发现一个神秘的数。 6.输入n值,打印边长为n的空心正六边形,其边有‘*’组成。 例如: n=4时,图形如下: **** ** ** ** ** ** **** 2.3实现过程 2.3.1设计任务1实现过程 【任务描述】 1.有一个一维数组score[],内存放10个学生的成绩,要求编写三个函数分别求学生的平均成绩,求10个学生的最高分,求10个学生的最低分。 【算法分析】(用文字或流程图进行描述) 用数组存放10个学生的成绩,然后用求出平均分、最高分、最低分。 【源程序代码】 #include intscore[10]={56,66,21,45,52,65,70,82,90,92}; inti,max,min; aver() {inti; floataver=0,a=0; for(i=0;i<10;i++) a+=score[i]; printf("aver=%f\n",a/10); } maxain() { max=min=score[0]; for(i=0;i<10;i++) { if(score[i]>max) max=score[i]; if(score[0] min=score[i]; printf("max=%d\nmin=%d\n",max,min); } } voidmain() { aver(); max=min=score[0]; for(i=0;i<10;i++) if(score[i]>max) max=score[i]; if(score[0] min=score[i]; printf("max=%d\nmin=%d\n",max,min); } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 2.3.2设计任务2实现过程 【任务描述】 2.编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。 【算法分析】(用文字或流程图进行描述) 用gets()函数输入字符串,然后讲小写字母转换成大写使用puts()输出。 【源程序代码】 #include voidmain() { charch[20]; inti; printf("inputstring: \n"); gets(ch); for(i=0;i<20;i++) if(ch[i]>=97&&ch[i]<=122) ch[i]-=32; puts(ch); } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 第3章指针 3.2设计任务 1.已知一个整型数组a[5],其各元素值为4,6,8,10,12。 使用指针法求该数组元素之积。 2.100个围成一圈,从第1个人开始,每数到3的人出圈。 问最后一个出圈的人是哪一个。 3.编写两个排序函数,要求一个函数完成从小到大排序,一个函数完成从大到小排序,并编写主函数完成: ①输入n个数; ②调用排序函数对n个数按从大到小排序并输出; ③调用排序函数对n个数按从小到大排序并输出; 3.3实现过程 3.3.1设计任务1实现过程 【任务描述】 1.已知一个整型数组a[5],其各元素值为4,6,8,10,12。 使用指针法求该数组元素之积。 【算法分析】(用文字或流程图进行描述) 使用数组存放元素,然后用指针取出数值运算。 【源程序代码】 #include main() { inta[5]={4,6,8,10,12}; int*p,s=1; for(p=a;p<=a+4;p++) s=s*(*p); printf("%d\n",s); } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 3.3.2设计任务2实现过程 【任务描述】 100个围成一圈,从第1个人开始,每数到3的人出圈。 问最后一个出圈的人是哪一个。 【算法分析】(用文字或流程图进行描述) 使用for循环取出出圈人,然后用wile输出最后一个出圈的人。 【源程序代码】 #include #definen100 voidmain() { inta[n],i,quit_num,k; for(i=0;i a[i]=i+1; quit_num=0;//出圈人数 i=0; k=0; while(quit_num { if(a[i]! =0)k++; if(k==3) { a[i]=0; quit_num++; k=0; } i++; if(i==n)i=0; } for(i=0;i if(a[i]! =0) printf("%d\n",a[i]); } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 第4章综合设计题 4.1设计任务 1.运用C语言开发一个“小学生算术四则运算测试系统”。 该系统是让计算机充当一位给小学生布置作业的算术老师,为学生出题并阅卷。 该系统要求实现下列功能: ①为小学生出题(分别进行+、-、*、/等不同运算)。 ②学生做题后,进行评阅。 学生每做一题后,评阅给出“答题正确,很好”或“答题错误,重做”等信息。 ③加、减、乘、除运算功能可以自由选择实现。 ④运算数值可控制在两位数的四则运算范围内。 2.运用C语言开发一个“比赛评分系统”。 评委打分原则: 满分10分,评委打分后,去掉一个最高分和一个最低分,最后的平均分为参赛选手的最后得分(精确到小数点后两位)。 要求该系统实现以下功能: ①假设参赛人数为20人,评委为10人。 (有兴趣的同学可拓展为参赛人数为n人,评委为m人)。 并对参赛选手和评委分别编号,序号从1开始,顺序编号。 ②选手按编号顺序依次参加比赛,统计最后得分。 ③比赛结束,按从高分到低分每行5人依次打印选手的得分情况。 ④公布选手获奖。 取一等奖1名,二等奖2名,三等奖3名。 3.王小二帮学生食堂编了一个买菜计价的程序,该程序可以显示菜单,让学生输入菜号来选择买什么菜,之后程序会报出你买了多少个菜,用了多少钱。 4.2设计过程 4.2.1设计任务实现过程 【任务描述】 2.运用C语言开发一个“比赛评分系统”。 评委打分原则: 满分10分,评委打分后,去掉一个最高分和一个最低分,最后的平均分为参赛选手的最后得分(精确到小数点后两位)。 要求该系统实现以下功能: ①假设参赛人数为20人,评委为10人。 (有兴趣的同学可拓展为参赛人数为n人,评委为m人)。 并对参赛选手和评委分别编号,序号从1开始,顺序编号。 ②选手按编号顺序依次参加比赛,统计最后得分。 ③比赛结束,按从高分到低分每行5人依次打印选手的得分情况。 ④公布选手获奖。 取一等奖1名,二等奖2名,三等奖3名。 【算法分析】(用文字或流程图进行描述) 使用for循环嵌套输出每位选手的评分,然后用冒泡排序法排序,然后输出得奖人。 【源程序代码】 #include #include voidmain() {intmax(floatb[]); intmin(floatb[]); inti1,k1,j1,t,t1,b1; floattt; intii,jj; intflag=1; intk,m,i,b,j; floatsum=0; floata[10],c[20]; printf("评分系统\n"); printf("************************************************************\n"); for(b=0;b<20;b++) { printf("%d号选手: \n",b+1); for(i=0;i<=9;i++) { printf("%d号评委的评分是: ",i+1); scanf("%f",&a[i]); sum+=a[i]; } for(j=0;j<10;j++) { c[j]=sum/10; } printf("\n\n"); k=max(a); m=min(a); printf("---------------------------------------\n"); printf("\n---------------------------------------\n"); printf("\n最高分是: %g最低分是: %g\n\n",a[k],a[m]); printf("删除最高分最低分之后的总分是: %g\n\n",sum-a[k]-a[m]); printf("这位选手的平均分是: %g\n\n",(sum-a[k]-a[m])/10); c[b]=(sum-a[k]-a[m])/10; sum=0; printf("************************************************************\n\n\n\n"); } for(b1=0;b1<20;b1++) { printf("第%d位选手的分数是: %g\n",b1+1,c[b1]); } for(ii=0;ii<20;ii++) { for(jj=0;jj<20-ii-1;jj++) { if(a[jj]>a[jj+1])//如果后面的数字大于前面的数字 { tt=c[jj]; c[jj]=c[jj+1]; c[jj+1]=tt;//就把两个数交换 } } printf("%g",c[jj]); } printf("第一名%g",c[0]); printf("第二名%g",c[1]); printf("第三名%g",c[2]); } intmax(floatb[])//最大值 {inti,k=0; floatmax=b[0]; for(i=0;i<10;i++) { if(max } returnk; } intmin(floatb[])//最小值 { inti,m=0; floatmin=b[0]; for(i=1;i<10;i++) { if(b[i] } returnm; } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 4.2.2设计任务实现过程 【任务描述】 运用C语言开发一个“小学生算术四则运算测试系统”。 该系统是让计算机充当一位给小学生布置作业的算术老师,为学生出题并阅卷。 该系统要求实现下列功能: ①为小学生出题(分别进行+、-、*、/等不同运算)。 ②学生做题后,进行评阅。 学生每做一题后,评阅给出“答题正确,很好”或“答题错误,重做”等信息。 ③加、减、乘、除运算功能可以自由选择实现。 ④运算数值可控制在两位数的四则运算范围内。 【算法分析】(用文字或流程图进行描述) 用随机函数取出两个数1-100,用while循环判断是否重做,用switch(选择加、减、乘、除运算,然后输出结果。 【源程序代码】 #include #include #include intmain() { inta=0,b=1,x=0,y=0,i=0,x1=0,y1=0; srand((unsignedint)time(NULL));//设置当前时间为种子 while(a { a=rand()%100+1; ; b=rand()%100+1; } printf("请选择\n1加法运算,\n2减法运算,\n3乘法运算,\n4除法运算\n"); scanf("%d\n",&x); x1=x; switch(x1) { case1: while(i==0) { printf("请计算%d+%d=",a,b); scanf("%d\n",&y1); y=y1; if(y==(a+b)) { printf("答案正确\n"); i=1; } else { printf("答案错误,重做\n"); i=0; } } break; case2: while(i==0) { printf("请计算%d-%d=",a,b); scanf("%d\n",&y1); y=y1; if(y==(a-b)) { printf("答案正确\n"); i=1; } else { printf("答案错误,重做\n"); i=0; } } break; case3: while(i==0) { printf("请计算%d*%d=",a,b); scanf("%d\n",&y1); y=y1; if(y==(a*b)) { printf("答案正确\n"); } else { printf("答案错误,重做\n"); } } break; case4: while(i==0) { printf("请计算%d/%d=",a,b); scanf("%d\n",&y1); y=y1; if(y==(a/b)) { printf("答案正确\n"); i=1; } else { printf("答案错误,重做\n"); i=0; } } break; } return0; } 【编译示图】(示图中要有0error,0warning的提示) 【运行结果示图】 课程设计小结 通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。 在课程设计的过程中出现过困难, 这个学期的课程设计已经结束了。 回想学习C语言的过程中,既有快乐又有烦恼, 回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告