《2022年C语言程序设计实践课程报告.pdf》由会员分享,可在线阅读,更多相关《2022年C语言程序设计实践课程报告.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北方民族大学课程报告课 程名 称:程序设计实践专 业 班 级 :软件工程( 2) 班学 生 姓 名 :李思良学号 :任 课 教 师 :王晓锋学期 : 2015-2016学年春季学期课程报告任务书题目30 个小程序组合成一个大程序主要内容1- 已知半径求圆面积2- 已知球半径,求表面积和体积3- 输入两个实数,交换其值输出4- 输入两个整数,求他们的平方和5- 分段计费6- 求一元二次方程的根7- 判断三个整数是否能构成三角形8- 计算 11000 之间能被三整除的所有自然数之和9- 猴子吃桃问题10- 输入一个正整数,求位数和位数之和11- 输入一行字符,统计大小写字母,数字和其他字符12-
2、输入一个四位数,将其加密后输出14- 用 for ,while ,dowhile循环实现 100 以内素数之和15- 将大于 10 元小于 100 元的钱换成1 元, 2元, 5 元的组合16- 输出 99 乘法口诀17- 验证哥德巴赫猜想18- 求两个正整数的最大公约数和最小公倍数精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 17 页 - - - - - - - - - - 19- 判断素数20- 求( m,n)以内全部素数,每行输出10 个21- 输出 10000 到 99999 的所有
3、回数22- 两个 6*6 矩阵的乘积23- 对一批数进行排列,求出最大值与平均数24- 输入一批学生的成绩,换成五分制25- 逆序输出26- 求阶乘27- 用递归函数求Fibonacci数列的前 40 个数,每行输出8 个28- 输入某年某月某日,判断这一天是这一年的第几天29- 写出 1000 以内的所有完数30- 输入年和天数,输出对应的年、月、日将以上 30 个子函数放在一个主函数内进行调用。任务要求一、提交材料应包括:(1)系统源代码(2)课程报告二、整个设计过程具体要求(1)需求分析对子函数各功能进行分析,设计出需要完成的功能,完善各个子函数的调用关系;(2)设计过程进一步明确各模块
4、调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。成绩评定报告撰写情况(30 分)系统完成情况 (30 分)答辩情况( 40 分)总分内容20 分规范程度5 分程序测试5 分基本功能20 分扩展功能10 分自述情况10 分答辩情况30 分成绩评定教师:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 17 页 - - - - - - - - -
5、- 1. 需求分析经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。本次课程设计要求我们达到能独立完成一个1000 行以上的程序,完成后要求实现已知半径求圆面积、已知球半径,求表面积和体积,输入两个实数、交换其值输出等30 中功能。通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C 语言开发的全过程,提高综合应用C 语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。2. 概要设计模块划分:1. int diyi() 已知半径求
6、圆面积2. int dier() 已知球半径,求表面积和体积3. void disan() 输入两个实数,交换其值输出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.
7、void dishier() 输入一个四位数,将其加密后输出13. int dishisan() 用冒泡排序对10 个数排序14. void dishisi() 用 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) 求两个正整数的最大公约数和最小公倍
8、数19. void dihsijiu() int isprime(int m) 判断素数20. void diershi() 求( m,n) 以内全部素数,每行输出10 个21. void diershiyi() 输出 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 sc
9、ore) 输入一批学生的成绩,换成五分制25. void diershiwu() 逆序输出 long reverse(long number)返回 number 的逆序数26. void diershiliu() 求阶乘27. void diershiqi() 用递归函数求Fibonacci数列的前40 个数,每行输出8 个精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 17 页 - - - - - - - - - - 28. int dierhsiba() 输入某年某月某日,判断这一天是这一
10、年的第几天29. void diershijiu() 写出 1000 以内的所有完数30. void disanshi() void MonthDay(int year,int yearDay,int *pMonth,int *pDay)输入年和天数,输出对应的年、月、日 myprint() 显示菜单界面将以上 30 个子函数放在一个主函数内进行调用。 int main() 主函数3. 详细设计:#include#include #include#include#include#define PI void myprint();/*显示菜单界面*/* 此函数的功能是:已知圆半径R的值,求圆的面
11、积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( )精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 17 页 - - - - - - - - - - float r,s,v;printf(
12、请输入球的半径:);scanf(%f,&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);/* 此函数的功能是:从键盘输入两个整数,输出它们的平方和。
13、*/void disi( )int x,y,z;printf(请输入两个整数:);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 17 页 - - - - - - - - - - scanf(%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 + sqr
14、t(delt)/(2*a);x2 = (-b - sqrt(delt)/(2*a);printf(有两个不同的实根:x1 = %.2f,x2 = %.2f。n,x1,x2);else printf(无实根。 n);elseprintf(不是一元二次方程。n);while, while, for 三种循环语句求和,输出结果。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 17 页 - - - - - - - - - - */void diba( )int i,sum_for = 0;for( i
15、=3; i=1; day-)peach_num = 2 * (peach_num + 1);n,day,peach_num); n,peach_num);/* 输入一个正整数,求该整数的位数和各位数之和。*/* 逆序输出一个正整数 */void dishi(void) int n,count = 0, sum = 0,m; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 17 页 - - - - - - - - - - printf(Enter n: ); /* 输入提示 */ scanf (
16、%d, &n); m = n; n,count_upper,count_lower,count_digit,count_other);return ; /* 此函数的功能是:编写程序,完成以下功能:输入一个四位数,将其加密后输出。方法是该数每一位上的数字加9,然后除以10 取余,作为该位上的新数字,最后将千位和十位上的数字互换,百位和各位上的数字互换,组成加密后的新四位数。如:输入 1257 ,输出 4601 。创建时间:*/void dishier()int x,y,ge,shi,bai,qian; n,n);else printf(%d is not a prime.n,n);/* 定义判
17、断素数的函数,如果x 是素数则返回1( 真);否则返回0(假 )*/int isprime(int m) int i; double n; if(m = 1) return 0; /* 1不是素数,返回0 */ n = sqrt(m); for( i = 2; i = n; i+) if (m % i = 0) /* 如果 m不是素数 */ return 0; /* 返回 0 */ 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 17 页 - - - - - - - - - - return
18、1; /* m 是素数,返回1 */* 求m,n 以内的全部素数(1m=n500),每行输出10 个。素数就是只能被1 和自身整除的正整数,1 不是素数, 2 是素数。 */* 使用嵌套循环求一定范围以内的全部素数 */* 调用求平方根函数,需要包含数学库 */* 声明:判断素数的函数,如果x 是素数则返回1( 真);否则返回0( 假 )*/int isprime(int m);:98789, 这个数字正读是98789, 倒读也是98789, 正读倒读一样, 所以这个数字就是回文数 . 还有 10001,11111,12721等都是回文数 .*/void diershiyi()printf(输
19、出 10000 到 99999 的所有回文数 nn);int a,b,c,d,e;long f=10000;dof+;a=f/10000;b=(f-a*10000)/1000;c=(f-a*10000-b*1000)/100;d=(f-a*10000-b*1000-c*100)/10;e=f-a*10000-b*1000-c*100-d*10;if (a=e&b=d) printf(%8ld,f);while (f);/* 求两个矩阵的乘积*/ void diershier() int a66;int i,j,sum=0;精品资料 - - - 欢迎下载 - - - - - - - - - -
20、- 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 17 页 - - - - - - - - - - int max=0;printf(请输入一个6*6 数组的各个元素:n);for(i=0;i6; i+)for(j=0;jmax)max=aij;sum+=aij; printf(最大值为 :%dn 所有元素的和为%dn,max,sum); for(i=0;i6;i+) for(j=0;j6;j+)if(aij=max)printf(最大值的行标:%d 列标 :%dn,i+1,j+1);break; if(aij=max) break; /* 对一批数进行排列,并求
21、出最大值与平均数*/ #define MAX 100#define SWAP(x,y) int t;t=x;x=y;y=t;void diershisan()精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 17 页 - - - - - - - - - - int n,i;void sort(int a,int );int arrayMAX;printf(你想对多少个数进行排序:n);scanf(%d,&n);srand(unsigned)time(NULL);for(i=0;in;i+) a
22、rrayi=rand()%50;printf(n输出排序前的数:n);for(i=0;in;i+) printf(%3d,arrayi);printf(n);sort(array,n);void sort(int array,int n)int i,k,j;double av=0;for(i=0;in-1;i+) k=i; for(j=i+1;jarrayk) k=j; if(k!=i)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 17 页 - - - - - - - - - - SWAP
23、(arrayi,arrayk);for(i=0;in;i+) av+=arrayi;printf(输出排序后的数:n);for(i=0;in;i+) printf(%3d,arrayi);printf(n最大数是 :%dn,array0);printf(平均数是 :%lfn,av/n);printf(n); /* 此函数的功能是:将学生成绩由百分制换算成五分制创建时间:*/char switchScore(int score);void diershisi()int score;char grade;char switchScore(int score);while(1) */* 逆序输出一个
24、正整数 */void diershiwu()printf(逆序输出一个正整数nn); long n,m; long reverse(long number); printf(Enter n: ); /* 输入提示 */ scanf (%d, &n);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 17 页 - - - - - - - - - - m = reverse(n) ;printf(该数是: %d, 它的逆序数是:%d.n,n,m);long reverse(long number)
25、 long m ;m = 0; 编程找出 1000 以内的所有完数。*/void diershijiu() int i,j,sum; for(i=2;i1000;i+) sum=0; for(j=1;ji;j+) if(i%j=0) sum=sum+j; if(sum=i) printf(%d its factors are %dn,i,j); /*输入年和天数,输出对应的年、月、日*/void MonthDay(int year,int yearDay,int *pMonth,int *pDay);void disanshi()精品资料 - - - 欢迎下载 - - - - - - - -
26、- - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 17 页 - - - - - - - - - - int year,yearDay,month,day;printf(请输入年份和天数) ; scanf(%d%d,&year,&yearDay);试分析:问题一:一些小错误比如单词前后拼写错误以及中英的标的符号解决办法:反复调试修改问题二:在函数的调用中,有些函数无法调用问题解决办法:多次具体分析,函数返回值返回 return+返回函数定义类型,如果是void 无返回值类型,可以用 return; 表示退出函数体测试结果1. 开始菜单2. 已知半径求圆面积3
27、. 已知球半径,求表面积和体积4. 输入两个实数,交换其值输出5. 输入两个实数,交换其值输出6. 分段计费7. 求一元二次方程的根8. 判断三个整数是否能构成三角形9.10.11.12.13.14.15.16.17.精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 17 页 - - - - - - - - - - 18.19.20.21.22.23.24.25.26.27.28.29.30.31.31.6. 课程心得总结经历了几个星期的程序设计, 从设计前期的不知如何下手到开始设计时的各种错
28、误的困扰再到一个个的攻破各个问题,最后到对程序的进一步完善与课程报告的撰写。这一段时间我们由被程序困扰到几乎崩溃到最后成就感的油然而生;从一整天的坐在电脑屏幕面前到现在的带着喜悦一遍一遍运行着程序;一遍遍的互相探讨解决大家遇到的问题到越来越发现编程的有意思,我到现在真的感觉认真自己做完这样一个系统收获颇大:1. 对结构化程序设计与函数的嵌套调用有了更清晰具体的认识;2. 熟悉程序的开发环境对我们很重要;3. 学会了熟练的调试程序;4. 改变了对 C语言的狭义认识,认识到C语言实际上还可以实现更复杂丰富的功能来利用开精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 17 页 - - - - - - - - - - 发的软件来进一步实现对现实中的问题的解决;5 学习到语言的学习一定不能忽视一个很小很小的细节,因为完全会导致不同的结果对如何用语言来完成一个较大的系统的整体思路有清晰的认识。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 17 页 - - - - - - - - - -