《C语言程序设计实践》课程报告.docx
《《C语言程序设计实践》课程报告.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计实践》课程报告.docx(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北方民族大学课课程程报报告告课课 程程名名 称:称:程序设计实践专专 业业 班班 级级:软件工程(2)班学学 生生 姓姓 名名:李思良学学号号:20152170任任 课课 教教 师师:王晓锋学学期期:2 201015 5-201-2016 6 学年春季学期学年春季学期课程报告任务书课程报告任务书题题目目3030 个小程序组合成一个大程序个小程序组合成一个大程序主要主要内容内容1-已知半径求圆面积2-已知球半径,求表面积和体积3-输入两个实数,交换其值输出4-输入两个整数,求他们的平方和5-分段计费6-求一元二次方程的根7-判断三个整数是否能构成三角形8-计算 11000 之间能被三整除的所有自
2、然数之和9-猴子吃桃问题10-输入一个正整数,求位数和位数之和11-输入一行字符,统计大小写字母,数字和其他字符12-输入一个四位数,将其加密后输出14-用 for,while,dowhile 循环实现 100 以内素数之和15-将大于 10 元小于 100 元的钱换成 1 元,2 元,5 元的组合16-输出 99 乘法口诀17-验证哥德巴赫猜想18-求两个正整数的最大公约数和最小公倍数19-判断素数20-求(m,n)以内全部素数,每行输出 10 个21-输出 10000 到 99999 的所有回数22-两个 6*6 矩阵的乘积23-对一批数进行排列,求出最大值与平均数24-输入一批学生的成绩
3、,换成五分制25-逆序输出26-求阶乘27-用递归函数求 Fibonacci 数列的前 40 个数,每行输出 8 个28-输入某年某月某日,判断这一天是这一年的第几天29-写出 1000 以内的所有完数30-输入年和天数,输出对应的年、月、日将以上 30 个子函数放在一个主函数内进行调用。任务任务要求要求一、提交材料应包括:(1)系统源代码(2)课程报告二、整个设计过程具体要求(1)需求分析需求分析对子函数各功能进行分析,设计出需要完成的功能,完善各个子函数的调用关系;(2)设计过程设计过程进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程实现过程养成良好
4、的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。成绩成绩评定评定报告撰写情况(报告撰写情况(30 分)分)系统完成情况系统完成情况(30 分分)答辩情况(答辩情况(40 分)分)总分总分内内容容2020 分分规范程规范程度度5 5 分分程序测程序测试试5 5 分分基本功基本功能能2020 分分扩展功扩展功能能1010 分分自述情自述情况况1010 分分答辩情答辩情况况3030 分分成绩评定教师:成绩评定教师:1.需求分析经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了 C 语言程序设计实践课。
5、课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。本次课程设计要求我们达到能独立完成一个 1000 行以上的程序,完成后要求实现已知半径求圆面积、已知球半径,求表面积和体积,输入两个实数、交换其值输出等 30 中功能。通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C 语言开发的全过程,提高综合应用 C 语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。2.概要设计模块划分:1.int diyi()已知半径求圆面积2.int dier()已知球半径,求表面积和体积3.void disan()输入两个实数,交换其值
6、输出4.void disi()输入两个整数,求他们的平方和5.void diwu()分段计费6.void diliu()求一元二次方程的根7.void diqi()判断三个整数是否能构成三角形8.void diba()计算 11000 之间能被三整除的所有自然数之和9.void dijiu()猴子吃桃问题10.void dishi()输入一个正整数,求位数和位数之和11.void dishiyi()输入一行字符,统计大小写字母,数字和其他字符12.void dishier()输入一个四位数,将其加密后输出13.int dishisan()用冒泡排序对 10 个数排序14.void dishis
7、i()用 for,while,dowhile 循环实现 100 以内素数之和15.void dishiwu()将大于 10 元小于 100 元的钱换成 1 元,2 元,5 元的组合16.void dishiliu()输出 99 乘法口诀17.void dihsiqi()验证哥德巴赫18.void dishiba()gcd(int m,int n)int lcm(int m,int n)求两个正整数的最大公约数和最小公倍数19.void dihsijiu()int isprime(int m)判断素数20.void diershi()求(m,n)以内全部素数,每行输出 10 个21.void d
8、iershiyi()输出 10000 到 99999 的所有回数22.void diershier()两个 6*6 矩阵的乘积23.void diershisan()void allPrimes(int m,int n)void sort(int array,int n)对一批数进行排列,求出最大值与平均数24.int diershisi()char switchScore(int score)输入一批学生的成绩,换成五分制25.void diershiwu()逆序输出long reverse(long number)返回 number 的逆序数26.void diershiliu()求阶乘2
9、7.void diershiqi()用递归函数求 Fibonacci 数列的前 40 个数,每行输出 8 个28.int dierhsiba()输入某年某月某日,判断这一天是这一年的第几天29.void diershijiu()写出 1000 以内的所有完数30.void disanshi()void MonthDay(int year,int yearDay,int*pMonth,int*pDay)输入年和天数,输出对应的年、月、日31.void myprint()显示菜单界面将以上 30 个子函数放在一个主函数内进行调用。int main()主函数3.详细设计:#include#inclu
10、de#include#include#include#define PI 3.14void myprint();/*显示菜单界面*/*此函数的功能是:已知圆半径 R 的值,求圆的面积 S。*/int diyi()float r,area;printf(请输入圆的半径:);scanf(%f,&r);area=PI*r*r;printf(该圆的面积为:%fn,area);return area;/*此函数的功能是:已知球半径 R 的值,求球的表面积 S 和球的体积 V。S=4R2;V=4/3R3;*/int dier()float r,s,v;printf(请输入球的半径:);scanf(%f,&
11、r);s=4*PI*r*r;printf(该球的表面积为:%fn,s);v=s*r/3;printf(该球的体积为:%fn,v);/*此函数的功能是:从键盘输入两个实数,并交换其值后输出。*/void disan()double x,y,z;printf(请输入两个实数:);scanf(%lf%lf,&x,&y);printf(交换前两个实数为:%f,%fn,x,y);z=x;x=y;y=z;printf(交换后两个实数为:%f,%fn,x,y);/*此函数的功能是:从键盘输入两个整数,输出它们的平方和。*/void disi()int x,y,z;printf(请输入两个整数:);scanf
12、(%d%d,&x,&y);printf(%d 和%d 的平方和为:%dn,x,y,x*x+y*y);/*此函数的功能是:创建时间:*/void diwu()int x;double y;printf(请输入 x:);scanf(%d,&x);if(x=0&x 0)x1=(-b+sqrt(delt)/(2*a);x2=(-b-sqrt(delt)/(2*a);printf(有两个不同的实根:x1=%.2f,x2=%.2f。n,x1,x2);elseprintf(无实根。n);elseprintf(不是一元二次方程。n);/该程序的功能是:/*从键盘输入三个整数,判断能否由它们作为三边长构成一个三
13、角形。(提示:任意两边之和大于第三边。)*/void diqi()int a,b,c;printf(请输入三个整数:);scanf(%d%d%d,&a,&b,&c);if(a+bc&a+cb&b+ca)printf(三个整数可以作为三条边构成一个三角形。n);elseprintf(不能构成一个三角形);/该函数的功能是:用循环语句计算 11000 之间的能被 3 整除的所有自然数的和。/*分别用 do.while,while,for 三种循环语句求和,输出结果。*/void diba()int i,sum_for=0;for(i=3;i=1;day-)peach_num=2*(peach_nu
14、m+1);/printf(第%2d 天的桃子个数为%6d.n,day,peach_num);/第一天的桃子数即为所摘的桃子总数。输出第一天的桃子数。printf(第 1 天摘的桃子总数为%d.n,peach_num);/*输入一个正整数,求该整数的位数和各位数之和。*/*逆序输出一个正整数*/void dishi(void)int n,count=0,sum=0,m;printf(Enter n:);/*输入提示*/scanf(%d,&n);m=n;/保存输入的 n 的值,便于后面输出while(n!=0)sum+=n%10;n=n/10;count+;printf(该数是%d,它共有%d 位
15、,它的各个数字之和为%d。n,m,count,sum);/该函数的功能是:/*输入十个字符,分别统计其中的英文大写字母,小写字母、数字字符和其他字符。*/void dishiyi()int count_upper=0,count_lower=0,count_digit=0,count_other=0,i,j;char ch10;printf(请输入十个字符,最好包含大小写字母、数字和其他符号:n);getchar();for(i=0;i10;i+)scanf(%c,&chi);printf(%c,ch9);for(j=0;j=A&chj=a&chj=0&chj=9)count_digit+;e
16、lsecount_other+;printf(大写字母有%3d 个,n 小写字母有%3d 个,n 数字字符有%3d 个,n 其他字符有%3d个.n,count_upper,count_lower,count_digit,count_other);return;/*此函数的功能是:编写程序,完成以下功能:输入一个四位数,将其加密后输出。方法是该数每一位上的数字加 9,然后除以 10 取余,作为该位上的新数字,最后将千位和十位上的数字互换,百位和各位上的数字互换,组成加密后的新四位数。如:输入1257,输出4601。创建时间:*/void dishier()int x,y,ge,shi,bai,q
17、ian;/因为是要输入一批四位数,所以用循环结构;while(1)printf(请输入一个四位的正整数 x:);scanf(%d,&x);if(x9999)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%dn,qian,bai,shi,ge);/查看分离的各个数字是否正确/加密qian
18、=(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,加密后该数变为:%-6dn,x,y);/*此函数的功能是:用冒泡法对 10 个数进行排序*/int dishisan()int i,j,t,a10;printf(imput 10 numbers:);for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i10;i+)for(j=0;j10;j+)if(ajaj+1)t=aj;aj=aj+1;aj+1=t;printf
19、(nthe result is:n);for(j=0;j10;j+)printf(%d,aj);/*此函数的功能是用 for,while,do-while 循环实现 100 以内所有偶数之和*/void dishisi()int i,sum=0;printf(用 for,while,do-while 循环实现 100 以内所有偶数之和);for(i=2;i=100;i+=2)sum+=i;printf(for 循环:sum=%dnn,sum);i=2;sum=0;while(i=100)sum+=i;i+=2;printf(while 循环:sum=%dnn,sum);i=2;sum=0;do
20、sum+=i;i+=2;while(i=100);printf(do-while 循环:sum=%dnn,sum);/*此函数的功能是:将一笔钱(大于 10 元,小于 100 元)换算成 1 元、2 元和 5 元的纸币组合。输入金额,问有几种换算方法?针对每一种换算方法,输出各种面额的纸币数量,要求每种硬币至少有一枚。创建时间:*/void dishiwu()int num_1,num_2,num_5,count=0;int money;printf(请输入要换算的钱的金额:);scanf(%d,&money);printf(针对每种换算方法,各种面值的纸币的数量分别为:n5 元2 元1 元
21、n);for(num_5=1;num_5=money/5;num_5+)for(num_2=1;num_2=money/2;num_2+)for(num_1=1;num_1=money;num_1+)if(money=5*num_5+2*num_2+1*num_1)printf(%6d%6d%6dn,num_5,num_2,num_1);count+;printf(共有%d种换算方法。n,count);/*/该函数的功能是:用循环结构输出九九乘法表。*/void dishiliu()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%2d,i
22、,j,i*j);printf(n);/*/该函数的功能是:验证哥德巴赫猜想:任何一个大于 6 的偶数均可表示为 2 个素数之和。要求将 6 到 100 之间的偶数都表示为 2 个素数之和,输出时一行输出 4 组。基本思想:对 6 100 之间的所有偶数 n,若 n=a+b,则首先 a、b 一定都是奇数,所以选用穷举法对 a(3n/2 范围内的奇数)的值从 3 开始列举,若 a 是素数,再判断 b 是否为素数。*/void dishiqi()int n,i,a,b,c,d;int count;printf(验证哥德巴赫猜想:任何一个大于 6 的偶数均可表示为 2 个素数之和nn);for(n=6
23、;n=100;n=n+2)count=0;for(a=3;a=n/2;a=a+2)/判断 a 是否为素数c=sqrt(a);for(i=2;i c)/a 是素数的情况下/判断 b 是否为素数b=n-a;d=sqrt(b);for(i=2;i d)/b 是素数的情况下printf(%3d=%3d+%3d,n,a,b);count+;if(count%4=0)printf(n);printf(n);/*此函数的功能是:求两正整数的最大公约数和最小公倍数,用一个函数求最大公约数,另一个函数求最小公倍数。*/int gcd(int m,int n);int lcm(int m,int n);void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实践 语言程序设计 实践 课程 报告
限制150内