1、C 程序设计课程设计报告 1 一引言一引言 1.1 设计目的设计目的 复习和巩固 C 语言基础知识,进一步加深对 C 语言的理解和掌握。提高同学 将课本上的理论知识和实际结合的能力,锻炼同学的分析解决实际问题的能力, 提高同学团队合作的能力。使同学们善于观察和思考,善于合作,具备实践编程 的基础素质,和实际问题分析的思考方式。 1.2 设计要求设计要求 在设计时充分地分析和理解问题本身,综合考虑系统功能,怎样使系统结构 清晰、合理、简单和易于调试。然后详细设计,确定每个过程和函数的简单功能, 以及过程(或函数)之间的调用关系。最后认真完成课程设计说明书,并对设计 方法,结果等进行总结。 充分地
2、分析和理解问题本身,弄清要求做什么(What to do?) 。在确定解决方 案框架过程中(How to do?) ,综合考虑系统功能,考虑怎样使系统结构清晰、合 理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数) 之间的调用关系。 确定算法的主要流程,在此基础上进行代码设计(Coding) ,每个明确的功能 模块程序一般不超过 60 行,否则要进一步划分。 上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。静 态检查主要有两种途径: (1)用一组测试数据手工执行程序; (2)通过阅读或给 别人讲解自己的程序而深入全面地理解程序逻辑。 二基础题二基础题
3、2.1 题目题目 用选择法对 10 个数进行排序。 有一个已排好序的数组。现输入一个数,要求按原来的规律插入到原数组中。 2.2 解题思路解题思路 程序的主要功能是对数组元素用排序函数按从小到大的顺序进行排序。 先定义一个 10 个元素的一维数组 a10,然后从电脑输入 10 个数(也就是对 数组赋值) ,然后使用一次 fun()函数,对这 10 个数进行排序;然后再定义一 个11个元素的一维数组b11, 同时再从电脑输入一个数同a10一起赋值给b11, 然后再使用 fun()函数,重新排序的到最后的有顺序的一组数据。 C 程序设计课程设计报告 2 2.3 流程图流程图 子函数流程图如图 1
4、所示: 开始 i=1 i=i ajaj-1 j=j+1 互换aj和aj-1的数据 i=i+1 输出已排序的数组a 结束 N Y Y Y N N 图 1 基础题子函数流程图 C 程序设计课程设计报告 3 主函数流程图如图 2 所示: 开始 开始 定义fun()函数 定义fun()函数 输入a10 输入a10 调用fun(a,10) 调用fun(a,10) 赋值bi=ai 赋值bi=ai 插入一个数 插入一个数 调用fun(b,11) 调用fun(b,11) 输出b11 输出b11 结束 结束 图 2 基础题主函数流程图 2.4 源代码源代码 基础题源代码见附录 A。 2.5 运行及测试结果运行及
5、测试结果 运行及测试结果如图 3 所示: 图 3 基础题运行及测试结果截图 C 程序设计课程设计报告 4 三改错题三改错题 3.1 题目题目 #include int fun() int a33,sum; int i,j; _; for(i=0;i3;i+) for(j=0;j3;j+) scanf(“%d“aij); for(i=0;i3;i+) sum=sum*aii; printf(“累乘积=%dn“,sum); main() fun(); 3.2 解题思路解题思路 程序的功能:这是一个求 3*3 矩阵主对角线元素累乘积的程序。 程序分析:可以看出源程序中,先声明了一个子函数,并定义子函
6、数 fun() 累乘积函数(这个函数就是先定义了一个 3*3 的二维数组,然后从键盘输入数值 对这个二维数组进行了数组赋初值,赋值过程中使用了 for 循环语句,然后利用 for 循环语句对主角线的元素做每个数的乘积,最后是输出这个累乘积。 ) 。最后就 是主函数 main(),主函数中使用一次子函数 fun()。 3.3 错误分析错误分析 错误一:原程序中对 sum没有设置初值,应设置为“sum=1;” ; 错误二:scanf()函数中没有使用地址运算符,应在数组前加“” 。 3.4 改错后的源代码改错后的源代码 改错后的源代码见附录 B。 C 程序设计课程设计报告 5 3.6 运行及测试结果运行及测试结果 运行及测试结果如图 4 所示: 图 4 改错题运行及测试结果截图 四综合题四综合题 4.1 题目题目 设计课题四:猜数字游戏 一问题描述 该游戏可以由程序随机产生或由用户输入四个 0 到 9 之间的数字, 且不重复。 玩游戏