《C语言程序设计实践》课程报告.docx
- 文档编号:3987207
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:41
- 大小:198.34KB
《C语言程序设计实践》课程报告.docx
《《C语言程序设计实践》课程报告.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计实践》课程报告.docx(41页珍藏版)》请在冰豆网上搜索。
《C语言程序设计实践》课程报告
北方民族大学
课程报告
课程名称:
程序设计实践
专业班级:
软件工程
(2)班
学生姓名:
李思良
学号:
20152170
任课教师:
王晓锋
学期:
2015-2016学年春季学期
课程报告任务书
题目
30个小程序组合成一个大程序
主要
内容
1--已知半径求圆面积
2--已知球半径,求表面积和体积
3--输入两个实数,交换其值输出
4--输入两个整数,求他们的平方和
5--分段计费
6--求一元二次方程的根
7--判断三个整数是否能构成三角形
8--计算1~1000之间能被三整除的所有自然数之和
9--猴子吃桃问题
10--输入一个正整数,求位数和位数之和
11--输入一行字符,统计大小写字母,数字和其他字符
12--输入一个四位数,将其加密后输出
14--用for,while,do~while循环实现100以内素数之和
15--将大于10元小于100元的钱换成1元,2元,5元的组合
16--输出99乘法口诀
17--验证哥德巴赫猜想
18--求两个正整数的最大公约数和最小公倍数
19--判断素数
20--求(m,n)以内全部素数,每行输出10个
21--输出10000到99999的所有回数
22--两个6*6矩阵的乘积
23--对一批数进行排列,求出最大值与平均数
24--输入一批学生的成绩,换成五分制
25--逆序输出
26--求阶乘
27--用递归函数求Fibonacci数列的前40个数,每行输出8个
28--输入某年某月某日,判断这一天是这一年的第几天
29--写出1000以内的所有完数
30--输入年和天数,输出对应的年、月、日
将以上30个子函数放在一个主函数内进行调用。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析对子函数各功能进行分析,设计出需要完成的功能,完善各个子函数的调用关系;
(2)设计过程进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
内容20分
规范程度5分
程序测试5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况30分
成绩评定教师:
1.需求分析
经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。
课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。
本次课程设计要求我们达到能独立完成一个1000行以上的程序,完成后要求实现已知半径求圆面积、已知球半径,求表面积和体积,输入两个实数、交换其值输出等30中功能。
通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。
2.概要设计
模块划分:
1.intdiyi()已知半径求圆面积
2.intdier()已知球半径,求表面积和体积
3.voiddisan()输入两个实数,交换其值输出
4.voiddisi()输入两个整数,求他们的平方和
5.voiddiwu()分段计费
6.voiddiliu()求一元二次方程的根
7.voiddiqi()判断三个整数是否能构成三角形
8.voiddiba()计算1~1000之间能被三整除的所有自然数之和
9.voiddijiu()猴子吃桃问题
10.voiddishi()输入一个正整数,求位数和位数之和
11.voiddishiyi()输入一行字符,统计大小写字母,数字和其他字符
12.voiddishier()输入一个四位数,将其加密后输出
13.intdishisan()用冒泡排序对10个数排序
14.voiddishisi()用for,while,do~while循环实现100以内素数之和
15.voiddishiwu()将大于10元小于100元的钱换成1元,2元,5元的组合
16.voiddishiliu()输出99乘法口诀
17.voiddihsiqi()验证哥德巴赫
18.voiddishiba()gcd(intm,intn)intlcm(intm,intn)
求两个正整数的最大公约数和最小公倍数
19.voiddihsijiu()intisprime(intm)判断素数
20.voiddiershi()求(m,n)以内全部素数,每行输出10个
21.voiddiershiyi()输出10000到99999的所有回数
22.voiddiershier()两个6*6矩阵的乘积
23.voiddiershisan()voidallPrimes(intm,intn)voidsort(intarray[],intn)
对一批数进行排列,求出最大值与平均数
24.intdiershisi()charswitchScore(intscore)输入一批学生的成绩,换成五分制
25.voiddiershiwu()逆序输出longreverse(longnumber)返回number的逆序数
26.voiddiershiliu()求阶乘
27.voiddiershiqi()用递归函数求Fibonacci数列的前40个数,每行输出8个
28.intdierhsiba()输入某年某月某日,判断这一天是这一年的第几天
29.voiddiershijiu()写出1000以内的所有完数
30.voiddisanshi()voidMonthDay(intyear,intyearDay,int*pMonth,int*pDay)
输入年和天数,输出对应的年、月、日
31.voidmyprint()显示菜单界面
将以上30个子函数放在一个主函数内进行调用。
intmain()主函数
3.详细设计:
#include
#include
#include
#include
#include
#definePI3.14
voidmyprint();/*显示菜单界面*/
/*此函数的功能是:
已知圆半径R的值,求圆的面积S。
*/
intdiyi()
{
floatr,area;
printf("请输入圆的半径:
");
scanf("%f",&r);
area=PI*r*r;
printf("该圆的面积为:
%f\n",area);
returnarea;
}
/*此函数的功能是:
已知球半径R的值,求球的表面积S和球的体积V。
S=4πR2;V=4/3πR3;
*/
intdier()
{
floatr,s,v;
printf("请输入球的半径:
");
scanf("%f",&r);
s=4*PI*r*r;
printf("该球的表面积为:
%f\n",s);
v=s*r/3;
printf("该球的体积为:
%f\n",v);
}
/*此函数的功能是:
从键盘输入两个实数,并交换其值后输出。
*/
voiddisan()
{
doublex,y,z;
printf("请输入两个实数:
");
scanf("%lf%lf",&x,&y);
printf("交换前两个实数为:
%f,%f\n",x,y);
z=x;x=y;y=z;
printf("交换后两个实数为:
%f,%f\n",x,y);
}
/*此函数的功能是:
从键盘输入两个整数,输出它们的平方和。
*/
voiddisi()
{
intx,y,z;
printf("请输入两个整数:
");
scanf("%d%d",&x,&y);
printf("%d和%d的平方和为:
%d\n",x,y,x*x+y*y);
}
/*此函数的功能是:
创建时间:
*/
voiddiwu()
{
intx;
doubley;
printf("请输入x:
");
scanf("%d",&x);
if(x<0)
{
y=0;
}
elseif(x>=0&&x<=15)
{
y=4*x/3.0;
}
else
{
y=2.5*x-10.5;
}
printf("x=%d,y=f(x)=%lf\n",x,y);
}
/*此函数的功能是:
编写程序,求一元二次方程ax2+bx+c=0的根。
创建时间:
*/
voiddiliu()
{
floata,b,c,delt,x1,x2;
printf("请输入系数a,b,c:
");
scanf("%f%f%f",&a,&b,&c);
if(a!
=0)
{
delt=b*b-4*a*c;
if(delt==0)
{
x1=x2=-b/(2*a);
printf("有两个相同的实根:
%.2f.\n",x1);
}
elseif(delt>0)
{
x1=(-b+sqrt(delt))/(2*a);
x2=(-b-sqrt(delt))/(2*a);
printf("有两个不同的实根:
x1=%.2f,x2=%.2f。
\n",x1,x2);
}
elseprintf("无实根。
\n");
}
else
{
printf("不是一元二次方程。
\n");
}
}
//该程序的功能是:
/*从键盘输入三个整数,判断能否由它们作为三边长构成一个三角形。
(提示:
任意两边之和大于第三边。
)
*/
voiddiqi()
{
inta,b,c;
printf("请输入三个整数:
");
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
printf("三个整数可以作为三条边构成一个三角形。
\n");
else
printf("不能构成一个三角形");
}
//该函数的功能是:
用循环语句计算1~1000之间的能被3整除的所有自然数的和。
/*
分别用do…..while,while,for三种循环语句求和,输出结果。
*/
voiddiba()
{
inti,sum_for=0;
for(i=3;i<1000;i+=3)
sum_for=sum_for+i;
printf("使用for循环计算3+6+9+….+999的和,结果为:
%d\n",sum_for);
}
/*此函数的功能是:
解决猴子吃桃问题
创建时间:
*/
voiddijiu()
{intday,peach_num;
peach_num=1;//第10天的桃子个数
//printf("第10天的桃子个数为%6d.\n",peach_num);
for(day=9;day>=1;day--)
{
peach_num=2*(peach_num+1);
//printf("第%2d天的桃子个数为%6d.\n",day,peach_num);
}
//第一天的桃子数即为所摘的桃子总数。
输出第一天的桃子数。
printf("第1天摘的桃子总数为%d.\n",peach_num);
}
/*输入一个正整数,求该整数的位数和各位数之和。
*/
/*逆序输出一个正整数*/
voiddishi(void)
{
intn,count=0,sum=0,m;
printf("Entern:
");/*输入提示*/
scanf("%d",&n);
m=n;//保存输入的n的值,便于后面输出
while(n!
=0){
sum+=n%10;
n=n/10;
count++;
}
printf("该数是%d,它共有%d位,它的各个数字之和为%d。
\n",m,count,sum);
}
//该函数的功能是:
/*************************************************************
输入十个字符,分别统计其中的英文大写字母,小写字母、数字字符和其他字符。
***********************************************************/
voiddishiyi()
{
intcount_upper=0,count_lower=0,count_digit=0,count_other=0,i,j;
charch[10];
printf("请输入十个字符,最好包含大小写字母、数字和其他符号:
\n");
getchar();
for(i=0;i<10;i++)
{
scanf("%c",&ch[i]);
}
printf("%c",ch[9]);
for(j=0;j<10;j++)
{
if(ch[j]>='A'&&ch[j]<='Z')count_upper++;
elseif(ch[j]>='a'&&ch[j]<='z')count_lower++;
elseif(ch[j]>='0'&&ch[j]<='9')count_digit++;
elsecount_other++;
}
printf("大写字母有%3d个,\n小写字母有%3d个,\n数字字符有%3d个,\n其他字符有%3d个.\n",count_upper,count_lower,count_digit,count_other);
return;
}
/*此函数的功能是:
编写程序,完成以下功能:
输入一个四位数,将其加密后输出。
方法是该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,
最后将千位和十位上的数字互换,百位和各位上的数字互换,组成加密后的新四位数。
如:
输入1257,输出4601。
创建时间:
*/
voiddishier()
{
intx,y,ge,shi,bai,qian;
//因为是要输入一批四位数,所以用循环结构;
while
(1)
{
printf("请输入一个四位的正整数x:
");
scanf("%d",&x);
if(x<1000||x>9999)break;//如果输入的不是一个四位数,则结束循环。
//分离各位上的数字
qian=x/1000;
bai=x%1000/100;//bai=x/100-qian*10;
shi=x%100/10;//shi=x/10-qian*100-n*10;
ge=x%10;//ge=x-qian*1000-n*100-o*10;
printf("加密前该数的各位数字分别为:
%d%d%d%d\n",qian,bai,shi,ge);
//查看分离的各个数字是否正确
//加密
qian=(qian+9)%10;
bai=(bai+9)%10;
shi=(shi+9)%10;
ge=(ge+9)%10;
y=shi*1000+ge*100+qian*10+bai;
printf("加密前该数为:
%-6d,加密后该数变为:
%-6d\n",x,y);
}
}
/*此函数的功能是:
用冒泡法对10个数进行排序**/
intdishisan()
{
inti,j,t,a[10];
printf("imput10numbers:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实践 语言程序设计 实践 课程 报告