特殊数据的输出(1)

更新时间:2024-01-17 09:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C程序设计》

课程设计报告

(20 14 — 2015 学年第 2 学期)

题 目: 特殊数据的输出

学 院: 电气与电子信息学院 班 级: 1309 学 号: 1304080016 姓 名: 梁骞 指导教师: 罗涛华 时 间:起 4.27 止 4.30

1

一、 课程设计基本信息

课程代码:05190124

课程名称:计算机基础课程设计

课程英文名称: Computer-based Course Design

课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群

课程面向专业:食品科学与工程学院、机械工程学院、电气与电子工程学院、土建学院、动物科学与营养工程学院、化学与环境工程学院、工商管理类、国际经济与贸易、旅游管理、金融学、行政管理、汉语言文学、英语、护理学、康复治疗专业、生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理

课程类型:必修课

先修课程:大学计算机基础通识选修课程、程序设计课程 学分:1 总学时:1周

二、 课程设计目标

掌握所学语言程序设计的方法,熟悉 所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能:

1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。

2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。

3.系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。

4.根据个人的设计调试过程,撰写设计报告。

三、 课程设计内容

熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。

四、 课程设计要求

1. 要求每个同学都要认真对待,积极参与。

2. 课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同时填写并完

成《课程设计报告册》。

3. 不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计中完全未参

与的将作不及格处理。

五、 考核方式

指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神

2

和设计报告等进行综合考评,百分制计算,具体考核标准主要包含以下几个部分:

1. 程序运行情况20分 2. 程序功能的完善程度10分 3. 程序结构的合理性10分 4. 对问题的答辩情况20分 5. 创新情况10分

6. 学生的工作态度与独立工作能力10分 7. 设计报告内容的规范性20分 备注:

1. 按规定时间填写各阶段文档,学习态度加5分

2. 设计报告内容雷同扣40分,无调试过程问题分析扣10分,无参考文献扣10分 3. 源程序无注释则在程序结构合理性扣10分

六、 课程设计主要参考资料

1. 谭浩强著. C程序设计(第3版). 北京:清华大学出版社,2005.7

2. 刘光蓉、汪靖、陆登波主编. C程序设计实验与实践教程. 北京:清华大学出版社,2011.2

3. 游洪跃主编. C语言程序设计实验与课程设计教程. 北京:清华大学出版社,2011.5 4. (美) Perter Van Der Linden著,徐波 译. C 专家编程(C编程语言经典之作) . 北京:人民邮电出版社,2008.2

5. 凯尼格 著,高巍 译. C陷阱与缺陷. 北京:人民邮电出版社,2008.2 6. Mark de Berg等著,邓俊辉译,《计算几何-算法与应用(第3版)》,清华大学出版社,2009年8月

7. 杨克昌编著,《计算机程序设计典型例题精解》,国防科技大学大学出版社,1999年3月

七、 课程设计计划安排 时 间 课程设计前一周 课程设计第1天 课程设计第2天 课程设计第3天 课程设计第4天 课程设计第5天 “课程设计概述” 按功能模块编写详细设计说明,完成报告册中“总体设计” 编写程序、调试程序 编写程序、调试程序,完成报告册中“详细设计” 调试程序,完成报告册中“调试分析过程” 完成报告册中“总结”、“参考文献”、“课程设计评审表”部分内容,提交课程设计报告、源程序、面试或答辩 任 务 选择课程设计题目,分析课题的要求,确定设计方案,完成报告册中

3

一、课程设计概述 课程设计问题描述 设计要1. 采用1行输出5个数据的格式。 2. 主函数实现正整数n的随机产生和菜单的显示,如图3.1所示。数据n作为函数的实参传递给各个子函数。 编写程序,由系统随机产生一个正整数n(1

的设计调试过程,撰写设计报告。 开发环境 硬件:PC机 软件:Windows操作系统Microsoft Visual C++ 6.0 5

二、总体设计(1) 整个程序最开始,便是随机函数的运用,C编译器提供了基于ANSI标准的伪随机数发生器函数rand()和srand(),用来生成随机数。这二个函数的工作过程如下: srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535; 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之系统功能需求分间); 根据需要多次调用rand(),从而不间断地得到新的随机数; 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。 然后,便是各类特殊数据的计算。(1)完全数是恰好等于自身的因子之和的数。 (2) 亲密数是两个正整数,其中一个整数的全部因子之和等于另一个。 (3) 水仙花数是恰好等于自身各位数字立方和的数。 (4) 阶乘析 和数是恰好等于自身各位数字阶乘的和的数。 (5) 自守数是平方后尾部数字是自身的数。 (6) 孪生素数是差2的两个素数。这六个都是循环语句的巧妙运用。 最后,选择输出特殊数据,是对switch运用的体现。整个程序中定义的变量较多,需要注意。 6

二、总体设计(2) 系统总体设计框架 7

三、详细设计(1) (1) 完全数是恰好等于自身的因子之和的数.判断是否为素数,循环求出所有因子,最终求其和 (2) 亲密数是两个正整数,其中一个整数的主要功能模块 的算法设计 全部因子之和等于另一个。求出小于随机整数的所有整数的因子和,比较观察是否有两两相等情况。 (3) 水仙花数是恰好等于自身各位数字立方和的数。运用求商求余函数求出整数自身各位数字,在对其求立方和。 8

三、详细设计(1) 1完全数 void wanquanshu(int n) {//完全数 int i,count=0; printf(\完全数:\\n\); for(i=0;i<=n;i++) { if(i==fun(i)) { printf(\,i); if(++count%5==0)printf(\); } } if (count%5!=0) printf(\); }主要功. 2.亲密数void qinmishu(int n) 能模块源程序 }{//亲密数 int i,temp,count=0; printf(\亲密数:\\n\); for (i=0;i<=n;i++) { temp=fun(i); if (temp>i&&i==fun(temp)) { printf(\,i,temp); if (++count%5==0)printf(\); } } if (count%5!=0) printf(\); void shuixianhua(int n) 3.水仙花数 {//水仙花数 int i,m=3,sum,count=0,temp,a; printf(\水仙花数:\\n\); for(i=100;i<=n;i++) { if(999

if(9999

三、详细设计(2) 主要功能模块 的算法设计 4.阶乘和数是恰好等于自身各位数字阶乘的和的数。同样运用求商求余函数求其自身各位数字. 5. 自守数是平方后尾部数字是自身的数.先求其平方数,再利用求余函数求其尾部数字,判断是否相等。 6. 孪生素数是差2的两个素数。 7.用switch语句进行选择输出。 11

三、详细设计(2) 4.阶乘和数 void jiechengheshu(int n) {//阶乘和数 int i,count=0,temp,sum; printf(\阶乘和数:\\n\); for(i=0;i<=n;i++) { sum=0; if (i==0)sum=jiecheng(i); else { temp=i; while(temp) { } if (sum==i) { printf(\,i); if(++count%5==0)printf(\); } } if (count%5!=0) printf(\); } {//自守数 int i,count=0,temp,t; long num; printf(\自守数:\\n\); for(i=0;i<=n;i++) { num=i*i; t=10; temp=i/10; while(temp) { t*=10; temp/=10; } 12

sum+=jiecheng(temp); temp/=10; 主要功能模 } 块 源程序 5.自守数void zishoushu(int n)

if (num%t==i) { printf(\,i); if(++count%5==0)printf(\); } } if (count%5!=0) printf(\); } {//孪生素数 int i,count=0; printf(\孪生素数:\\n\); for(i=3;i<=n-2;i+=2) { if (Prime(i)&&Prime(i+2)) { printf(\,i,i+2); if (++count%5==0)printf(\); } } if (count%5!=0) printf(\); } 6.孪生素数void luanshengsushu(int n) 7switch int main() { switch(choice){ case 1:wanquanshu(n);break; case 2:qinmishu(n);break; 13

int choice;int n=suiji(); printf(\输入choice:\); scanf(\,&choice);printf(\); int n=suiji(); while(1){ printf(\完全数\\n\); printf(\亲密数\\n\); printf(\水仙花数\\n\); printf(\阶乘和数\\n\); printf(\自守数\\n\); printf(\孪生素数\\n\); printf(\退出\\n\);

} } case 3:shuixianhua(n);break; case 4:jiechengheshu(n);break; case 5:zishoushu(n);break; case 6:luanshengsushu(n);break; case 0: exit(0); return 0; } default :printf(\);break; 14

四、调试分析过程(1) 初次写好的程序调试时软件显示错误之处高达70个。我再次仔细分析编写好的程序,发现许多六个进行特殊数据计算的程序部分大括号调试过程出现的问题 及解决方法 都没有相应的对齐,好几条语句末尾也漏写了分号。把这些问题一一处理好之后,我再次调试,错误个数便有了明显的减少。之后,我又重新检查了几遍六块计算数据的程序,检查了循环中变量的取值范围,检查了循环语句的逻辑顺序等等,终于错误之处只剩下最后一个。计算机显示最后选择输出switch语句中变量n未定义,于是我再次定义n使之与随机函数产生的整数相等。最终,程序调试成功,正常运行,并输出了相应的特殊数据。 15

四、调试分析过程(2) 测试数据 及测试结果 16

五、总结 设计用到的知识点 这道题的关键在于每个特殊数据的分析处理。如何写出收正确的程序使计算机进行运算得出六个特殊数据并根据获输入结果进行选择输出是这道题的主要思路。之前不熟与悉的随机函数也是整个程序中比较关键的部分。首次接体触多分支条件语句,我深感程序编写的严谨性和细致性。会 今后在c语言学习方面会更加注意 不足与努力方向 17

函数的参数; 2. 多分支条件语句; 3. 循环; 4. 数据的输入输出; 5. 随机函数的使用。 循环语句虽然易懂,但在实际运用中较其它函数而言更加需要注意。循环的条件、循环中进行的计算、循环结束后返回的函数值都需要严谨的分析,稍微一点差错就会导致整个程序无法运行。这是我在此次程序设计实验中发现的自己的重大不足,在今后的学习终将会更加注意循环语句嵌套语句等容易出现问题的知识点。

六、参考文献 谭浩强著. C程序设计(第3版). 北京:清华大学出版社,2005.7 参考书籍 刘光蓉、汪靖、陆登波主编. C程序设计实验与实践教程. 北京:清华大学出版社,2011.2 游洪跃主编. C语言程序设计实验与课程设计教及 程. 北京:清华大学出版社,2011.5 参考论文与 网址 (美)Perter Van Der Linden 著,徐波 译. C 专家编程(C编程语言经典之作) . 北 京:人民邮电出版社,2008.2 18

课程设计成绩评审表

姓名 设计题目 鲁丽春 学号 1304080039 特殊数据的输出 班级 1306 作品描述 编写程序,由系统随机产生一个正整数n(1

指导教师(签名) 年 月 日

19

本文来源:https://www.bwwdw.com/article/rx2o.html

Top