c语言课程设计报告
- 格式:doc
- 大小:1.40 MB
- 文档页数:28
《C程序设计》课程设计学院:***专业:***班级:***学号:***姓名:***指导教师:***2016 年9 月第1章分支与循环1.2 设计任务1. 王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问他:“煎饼不许离开砧板,切100刀最多能分成多少块?”2. 若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。
3.输入年月日,求它是该年的第几天。
注:闰年的2月有29天,平年的2月有28天。
4.简单计算器。
请编写一个程序计算表达式:data1 op data2的值。
其中op为运算符+、-、*、/,data1和data2是数据。
5. 猜数游戏。
由计算机“想”一个数请人猜,如果猜对了,则游戏结束,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到猜对为止。
计算机记录人猜的次数,以此可以反映出猜数者“猜”的水平。
6. 一辆肇事汽车的号码是4位十进制数。
目击者向交警描述这个车号:这是一个完全平方数;这4个数字从左至右一个比一个小。
请帮助交警寻找肇事者,将车号算出来。
1.3 实现过程1.3.1设计任务1的实现过程【任务描述】1.王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问他:“煎饼不许离开砧板,切100刀最多能分成多少块?”【算法分析】(用文字或流程图进行描述)用到数学中的逆推公式。
s=1+n*(n+1)/2【源程序代码】#include <stdio.h>main(){int n,s;for(n=1;n<=100;n++){s=1+n*(n+1)/2;}printf("%d\n",s);【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】1.3.2 设计任务2的实现过程【任务描述】6. 一辆肇事汽车的号码是4位十进制数。
目击者向交警描述这个车号:这是一个完全平方数;这4个数字从左至右一个比一个小。
请帮助交警寻找肇事者,将车号算出来。
【算法分析】(用文字或流程图进行描述)找出这个四位数的个、十、百、千位数,利用题目条件运用两个for循环最后求出结果。
【源程序代码】#include <stdio.h>main(){int s,a,b,c,d,e;for(s=1000;s<10000;s++){a=s%10;//geweib=s/10%10;//shiweic=s/100%10;//baiweid=s/1000;//qianweifor(e=30;e<100;e++){if(a>b&&b>c&&c>d&&e*e==s)printf("%d\n",s);}}}【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】1.3.3设计任务3实现过程【任务描述】2. 若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。
【算法分析】(用文字或流程图进行描述)用三个for循环嵌套,再以一个if条件语句就可以输出最后结果。
【源程序代码】#include <stdio.h>main(){int x,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);}【编译示图】(示图中要有0 error,0 warning的提示)【运行结果示图】1.3.4 设计任务4实现过程【任务描述】3.输入年月日,求它是该年的第几天。
注:闰年的2月有29天,平年的2月有28天。
【算法分析】(用文字或流程图进行描述)先用if语句判断出平年和闰年,再用for循环输出最后结果。
【源程序代码】#include <stdio.h>void main(){int year,moth,day;int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年2月28天 365天int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年2月29天 366天int i,j,num=0;int x;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<moth-1;i++)num+=b[i];num+=day;}else{for(j=0;j<moth-1;j++)num+=a[j];num+=day;}printf("今天是第%d年的第%d天\n",year,num);}【编译示图】(示图中要有0 error,0 warning的提示) 【运行结果示图】1.3.5 设计任务5实现过程【任务描述】4.简单计算器。
请编写一个程序计算表达式:data1 op data2的值。
其中op为运算符+、-、*、/,data1和data2是数据。
【算法分析】(用文字或流程图进行描述)先输出所需数据和运算符,然后用switch语句进行判断,最后输出结果。
【源程序代码】#include <stdio.h>void main(){float a,b;char c;printf("请输入数字a,运算符c,数字b:\n");scanf("%f%c%f",&a,&c,&b);//char c;//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("input error\n");}}【编译示图】(示图中要有0 error,0 warning的提示) 【运行结果示图】第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<stdio.h>int score[10]={56,66,21,45,52,65,70,82,90,92}; int i,max,min;aver(){int i;float aver=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)min=score[i];printf("max=%d\n min=%d\n",max,min);}}void main(){aver();max=min=score[0];for(i=0;i<10;i++)if(score[i]>max)max=score[i];if(score[0]<min)min=score[i];printf(" max=%d\n min=%d\n",max,min);}【编译示图】(示图中要有0 error,0 warning的提示) 【运行结果示图】2.3.2设计任务2实现过程【任务描述】2. 编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。
【算法分析】(用文字或流程图进行描述)用gets()函数输入字符串,然后讲小写字母转换成大写使用puts()输出。
【源程序代码】#include<stdio.h>void main(){char ch[20];int i;printf("input string:\n");gets(ch);for(i=0;i<20;i++)if(ch[i]>=97&&ch[i]<=122)ch[i]-=32;puts(ch);}【编译示图】(示图中要有0 error,0 warning的提示) 【运行结果示图】第3章指针3.2 设计任务1.已知一个整型数组a[5],其各元素值为4,6,8,10,12。
使用指针法求该数组元素之积。
2.100个围成一圈,从第1个人开始,每数到3的人出圈。