您好,欢迎访问三七文档
《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【源程序代码】#includestdio.hmain(){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循环最后求出结果。【源程序代码】#includestdio.hmain(){ints,a,b,c,d,e;for(s=1000;s10000;s++){a=s%10;//geweib=s/10%10;//shiweic=s/100%10;//baiweid=s/1000;//qianweifor(e=30;e100;e++){if(ab&&bc&&cd&&e*e==s)printf(%d\n,s);}}}【编译示图】(示图中要有0error,0warning的提示)【运行结果示图】1.3.3设计任务3实现过程【任务描述】2.若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。【算法分析】(用文字或流程图进行描述)用三个for循环嵌套,再以一个if条件语句就可以输出最后结果。【源程序代码】#includestdio.hmain(){intx,y,z;for(x=0;x4;x++)for(y=0;y4;y++)for(z=0;z7;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循环输出最后结果。【源程序代码】#includestdio.hvoidmain(){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;imoth-1;i++)num+=b[i];num+=day;}else{for(j=0;jmoth-1;j++)num+=a[j];num+=day;}printf(今天是第%d年的第%d天\n,year,num);}【编译示图】(示图中要有0error,0warning的提示)【运行结果示图】1.3.5设计任务5实现过程【任务描述】4.简单计算器。请编写一个程序计算表达式:data1opdata2的值。其中op为运算符+、-、*、/,data1和data2是数据。【算法分析】(用文字或流程图进行描述)先输出所需数据和运算符,然后用switch语句进行判断,最后输出结果。【源程序代码】#includestdio.hvoidmain(){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个学生的成绩,然后用求出平均分、最高分、最低分。【源程序代码】#includestdio.hintscore[10]={56,66,21,45,52,65,70,82,90,92};inti,max,min;aver(){inti;floataver=0,a=0;for(i=0;i10;i++)a+=score[i];printf(aver=%f\n,a/10);}maxain(){max=min=score[0];for(i=0;i10;i++){if(score[i]max)max=score[i];if(score[0]min)min=score[i];printf(max=%d\nmin=%d\n,max,min);}}voidmain(){aver();max=min=score[0];for(i=0;i10;i++)if(score[i]max)max=score[i];if(score[0]min)min=score[i];printf(max=%d\nmin=%d\n,max,min);}【编译示图】(示图中要有0error,0warning的提示)【运行结果示图】2.3.2设计任务2实现过程【任务描述】2.编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。【算法分析】(用文字或流程图进行描述)用gets()函数输入字符串,然后讲小写字母转换成大写使用puts()输出。【源程序代码】#includestdio.hvoidmain(){charch[20];inti;printf(inputstring:\n);gets(ch);for(i=0;i20;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。使用指针法求该数组元素之积。【算法分析】(用文字或流程图进行描述)使用数组存放元素,然后用指针取出数值运算。【源程序代码】#includestdio.hmain(){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输出最后一个出圈的人。【源程序代码】#includestdio.h#definen100voidmain(){inta[n],i,quit_num,k;for(i=0;in;i++)//数组a存放原始编号a[i]=i+1;quit_num=0;//出圈人数i=0;k=0;while(quit_numn-1)//直到只剩下1人时{if(a[i]!=0)k++;if(k==3){a[i]=0;quit_num++;k=0;}i++;if(i==n)i=0;}for(i=0;in;i++)if(a[i]!=0)printf(%d\n,a[i]);}【编译示图】(示图中要有0error,0warning的提示)【运行结果示图】第4章综合设计题4.1设计任务1.运用C语言开发一个“小学生算术四则运算测试系统”。该系统是让计算机充当一位给小学生布置作业的算术老师,为学生出题并阅卷。该系统要求实现下列功能:①为小学生出题(分别进行+、-、*、/等不同运算)。②学生做题后,进行评阅。学生每做一题后,评阅给出“答题正确,很好”或“答题错误,重做”等信息。③加、减、乘、除运算功能可以自由选择实现。④运算数值可控制在两位数的四则运算范围内。2.运用C语言开发一个“比赛评分系统”。评委打分原则:满分10分,评委打分后,去掉一个最高分和一个最低分,最后的平均分为参赛选手的最后得分(精确到小数点后两位)。要求该系统实现以下功能:①假设参赛人数为20人,评委为10人。(有兴趣的同学可拓展为参赛人数为n人,评委为m人)。
本文标题:c语言课程设计报告
链接地址:https://www.777doc.com/doc-7027897 .html