1、前言前言 计算机对社会发展所具有的广泛而深远的影响。人类文化的内涵 是随着社会发展而进化的。在现代信息社会中,计算机已不仅仅是一 种工具,而且是一种文化。信息技术对人类社会进行的全方位渗透, 已经形成一种新的文化形态信息时代的计算机文化。计算机知识 成为当代知识分子结构中不可缺少的重要部分。 设计是一门重要的计算机基础课程,通过学习,学生不仅要掌握 高级程序设计语言的知识,更重要的是在实践中逐步掌握程序设计的 思想和方法,培养问题求解和语言的应用能力。此次上机实习,不但 要使同学们的程序设计能力上一台阶,同时要提高与程序设计和软件 开发有关的各种综合能力。 通过这次对 C 语言的进一步学习,为
2、我们日后学习单片机安打下 了基础。在机电一体化日趋明显的当下,掌握一门计算机语言是多么 的重要,这必将为我们机电学院学生日后的发展产生深远的影响。 由于课时和上机时间的仓促,所以我对很多内容还来不及消化,对上 机演练十分陌生,还有一些知识遗忘,因而这次程序设计的实习实际 上是对我的一次集中的强化练习。虽然其时间短,任务重,但我们的 确达到了此次课程设计的目的。 本次实习得到樊*老师的指导和帮助,至此表示感谢 ! 1 目 录 第一部分 题目要求 1 第二部分 程序设计思路 2 1. 需求分析 2 2. 程序总体设计 2 3. 程序详细设计 2 第三部分 程序代码 6 第四部分 设计数据和运行结果
3、 10 4.1 运用举例的数据进行验证 10 4.2 自行设计数据进行验证.11 第五部分 所遇问题及解决方案 13 5.1 数字的输入问题 13 5.2 switch和 break 的用法 13 5.3 数组排序问题. 14 5.4 标记数组的使用 14 5.5 最后结果的输出 14 第六部分 总结与感受 . 15 1 第一部分 题目要求 数组游戏 【要求】 设有 n个正整数(n20) ,将它们连成一排,组成一个最大的多位数。程序 输入:n个正整数。程序输出:n个数连接成的多位数。 【提示】 以下是设计思路: 可以将问题这样变化一下: 比如输入的是 123、2、33、1006、12 这样几个
4、数字。 先找出最大的数字的位数为 4 位,再将所有的数字变成 4 位数: 1230 2000 3300 1006 1200 然后进行排序: 3300 2000 1230 1200 1006 这样将后面加上的 0 去掉的序列不就是最大数字吗?于是最大数字就是: 332123121006。 2 第二部分 程序设计思路 1. 需求分析 根据题目要求,输入若干个数字(中间用空格隔开) ,输入的数字个数不大于 20。然后,让这些数随机连在一起,把组合中的最大数输出。 2. 程序总体设计 输入一组数,输出所需要的数。 大致流程图: 3. 程序详细设计 3.1 主函数 主要负责输入和输出一定的数据。 mai
5、n( ) 输入数字, 进行一定的处理, 输出数字, 流程图 输入一组数字 (个数不大于 20) 将输入的数进行连排 在连排的数中选择出最大的数 输出这个最大数 3 3.2 排序函数(选择法)void sort(int x,int n) 将数字按从大到小的顺序排列(如果两个数字相等,交换位置) void sort(int x,int n) /*用选择法将正整数按从大到小排列*/ int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;j=xk)k=j; if(k!=i) t=xi; xi=xk; xk=t; 输入一组数字 按字符串进行读取 遇到空格 n=n+1
6、n=0 Y N 得到数组 an 4 3.3 求位数函数 int num(int y) 求每个数个的位数,以便补位。 int num(int y) /*求最大数字的位数*/ int i=0; while(y) y=y/10; i+; return i; 3.4 变位函数 void modificate(int z,int n); 把排序后的数字变成最高位数。 流程图: 3.5 还原函数 void revert(int r,int n); 把进行过补位的数字还原到原来的样子 void revert(int r,int n) /*把变位后的数字还原成原数字*/ int j,h; for(j=0;jn;j+) 数组 ai 计算需要补的位数 y 新数组 ai=ai10y 将新数组 a n排序 用标记数组 bn记录每 个数字的变为数 5 h=bj; while(h) rj=rj/10; h-; 流程