《程序设计基础(c语言)机电(专科)实验指导书-2011-2012-2(1)》由会员分享,可在线阅读,更多相关《程序设计基础(c语言)机电(专科)实验指导书-2011-2012-2(1)(4页珍藏版)》请在金锄头文库上搜索。
1、第 1 页/共 4 页程序设计基础( C 语言) 实验指导书实验课程名称:程序设计基础英文名称: Foundation of computer programming实验指导教师:刘小明学时:6适用专业:机电一体化专业专科实验 1 循环结构程序设计一、实验目的1. 熟悉用 while 语句,do-while 语句和 for 语句实现循环的方法。2. 掌握在程序设计中用循环和数组结构的方法实现各种算法(如穷举、迭代、递推等) 。3. 熟悉 break 语句和 continue 语句用法的不同之处。二、实验内容【1】打印出所有“水仙花数” 。所谓“水仙花数”是指一个三位数,其各位数字的立方和正好等
2、于该数本身。例如:153 是一个“水仙花数” ,因为 153=13+53+33。解题思路:根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数 a=a 的百位的立方+a 的十位的立方 +a 的个位的立方)这个公式,满足这个三位数就是“水仙花数” 。#include void main ()int a, b, c, n;for(n = 100; n 第 2 页/共 4 页void main ()int i, j;printf (%3c |, ); /* 打印表头行首 */for (i = 1; i 1)程序如下:第 3 页/共 4 页#include int
3、 age (int n)if (n = 1)return 10;elsereturn age (n - 1) + 2;void main ()printf (age: %dn, age (5);输出结果?【2】反向输出一个整数(非数值问题)非数值问题的分析无法象数值问题那样能得出一个初值和递归函数式,但思路是相同的。分析方法:简化问题:设要输出的正整数只有一位,则“反向输出”问题可简化为输出一位整数。对大于 10 的正整数,逻辑上可分为两部分:个位上的数字和个位以前的全部数字。将个位以前的全部数字看成一个整体,则为了反向输出这个大于 10 的正整数,可按以下步骤:a、输出个位上的数字;b、将个
4、位除外的其他数字作为一个新的整数,重复 a 步骤的操作。其中 b 问题只是对原问题在规模上进行了缩小递归。所以,可将反向输出一个正整数的算法归纳为:if (n 为一位整数)输出 n;else 输出 n 的个位数字;对剩余数字组成的新整数重复“反向输出” 操作;程序如下:#include void printn (int x) /*反向输出整数 x*/if (x = 0 & x= 9) /*若 x 为一位整数*/printf (%d, x); /*则输出整数 x*/else /*否则*/printf (%d, x % 10); /*输出 x 的个位数字*/printn (x / 10); /*将
5、 x 中除个位数字外的全部数字形成第 4 页/共 4 页新的 x 后,继续递归操作 */void main ()int n;scanf (%d, if (n 0)n = -n;putchar (-);printn (n);printf (n);执行:Input n=12345结果:?执行:Input n=12479结果:?【讨论】Input n=123456结果为什么是6167?原因:1234567 10=1 1110 0010 0100 00002int 类型的数实际只能存入 16 位,即 1110 0010 0100 00002第 1 位为符号位,其余各位取反后再加 1,得原码 1001 1101 1100 0000 (真值-761610)三、选做题(至少选一题)1. 写一个判别素数的函数,在主函数输人一个整数,输出是否素数的信息。 本程序可以准备以下测试数据:17、34、2、l 、0。分别输入数据,运行程序并检查结果是否正确。2. 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。3. 用递归法将一个整数 n 转换成字符串。例如,输入 483,应输出字符串“483 ”。n 的位数不确定,可以是任意的整数。