1、程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基础教研室 2008 年1程序设计必须掌握的算法设计问题说明:为了进一步提高“程序设计”课程的教学质量,切实提高学生的算法设计和程序设计能力,特汇总以下算法问题,作为教师教学的参考。本文档所列的算法设计问题,为本科学生第一学年第 2 学期学习 C 语言程序设计或VB 语言程序设计课程需要掌握的问题。教师在教学工作中,应该选择其中部分问题作为教学典型例题,挑选典型问题作为学生上机练习和作业,但不要求每个题目都讲解和完成。学生在学期末必须掌握这些问题的算法设计和程序设计。注意:(1 )加“”的问题,作为较高难度问题,可不要求学生掌握。(2 )
2、加“VB 语言”标注的问题,为 VB 语言能够完成的题目,C 语言可以不完成。1顺序结构1已知三角形的三条边长 a、b 和 c,求三角形的面积。2求解鸡兔同笼问题。已知笼子中鸡和兔的头数总共为 h,脚数总共为 f。问鸡和兔各有多少只?3编写程序输入圆半径 r 和高 h,求圆周长、圆面积、圆球表面积、圆球体积和圆柱体积。4输入华氏温度值 F,求出摄氏温度 C,其公式为: 。)32(95F5我国现有人口 13 亿,如果每年增长率 r=0.8%,求多少年后我国人口超过 26 亿(根据公式,推导出年数 n 可以用公式 计算) 。nr)13(26 )1log(2r6输入平面坐标系中两个点的坐标 和 ,计
3、算两点之间的距离。y,(x1,27使用 Print 语句输出以下图形。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *8 ( )编写程序,求解二元一次方程组 的解,要求输入系数 、 、 、 、2211CYBXA1AB1C2A和 。2BC程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基础教研室 2008 年22选择结构问题1输入 a、b 值,如果 ab,那么交换 a 和 b,使得 ab。2输入变量 a、b 和 c,将它们按照从小到大的顺序排序后输出。3输入 a、b 值,输出
4、其中较大的数。4输入 x,求函数 的值。102)(2xxf5输入学生课程成绩 mark,按照方法 给出评分等级。607890markrak不 及 格及 格中良优6 ( )求一元二次方程 的根。0cbxa27 ( )输入坐标点(x,y) ,判断其落在哪个象限中。8给定整数,判定该数能否同时被 6、9 和 14 整除。9输入一个年号,判断该年号是否闰年。10 ( )将四个变量从大到小排序,并输出。11水仙花数是指一个三位整数,该数三个数位的立方和等于该数本身。例如: 3351输入一个 3 位整数,判断该数是否水仙花数。12输入 x,求函数 的值。102)(xxf13 ( )输入 a 和 b 的值,
5、按公式 计算 y 值。0cosin,labay14某服装店经营套装,也单件出售,针对单笔交易的促销政策为:(1 )不少于 50 套,每套 80 元;(2 )不足 50 套,每套 90 元;(3 )只买上衣每件 60 元;(4 )只买裤子每条 45 元;编写计算器,分别输入一笔交易中上衣和裤子数,计算应收款。15假如某地个人所得税的起征额为 1600 元,超过 1600 元以后纳税额按照以下方法计算:(1 )超过 500 元以内部分,税率 5;(2 )超过 500 元至 2,000 元部分,税率 10%;(3 )超过 2,000 元至 5,000 元部分,税率 15%;(4 )超过 5,000
6、元至 20, 000 元部分,税率 20%;(5 )超过 20,000 元至 40,000 元部分,税率 25%;程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基础教研室 2008 年3(6 )超过 40,000 元至 60,000 元部分,税率 30%;(7 )超过 60,000 元至 80,000 元部分,税率 35%;(8 )超过 80,000 元至 100,000 元部分,税率 40%;(9 )超过 100,000 元部分,税率 45%;编写个人所得税计算器,输入某地个人所得税起征额和个人月收入总额,计算应纳个人所得税金额。3循环结构问题1求 s=10!,即求 10 的阶乘。
7、2求 s=100!,即求 100 的阶乘。3打印 1-100 中,所有能被 4 整除的整数。4计算分数序列的和: ,直到最后项小于 0.00001。 312s5利用公式 ,求圆周率 ,要求最后一项绝对值小于 。75316106 ( )当 时,计算公式 中,前 20 项的值。x 432)1(xxLn7输出 Fibonacci 数列:1、1 、2、3 、5、8、13、21 的前 40 项。8素数是这样的整数,它只能被 1 和它自己整除。输入一个整数 m,判断该数是否素数。9找出 1 到 1000 之间的所有素数。10编写程序,输出“*” ,构成如图 6-24 所示的图形。i 1 2 3 4 5 6
8、 7 8 91 *2 * * *3 * * * * *4 * * * * * * *5 * * * * * * * * *4 * * * * * * *3 * * * * *2 * * *1 *11 ( )循环输入 20 个数,求其中的最大值。12求两个整数 m 和 n 的最大公约数和最小公倍数。13百钱买百鸡问题。假定公鸡每只 2 元,母鸡每只 3 元,小鸡每只 0.5 元。现有 100 元,要求买 100只鸡,编程求出公鸡只数 x、母鸡只数 y 和小鸡只数 z。14 ( )用牛顿迭代法,求 a 的平方根。15 ( )用矩形法求定积分 。421dx16求 。2013xx)(17打印 1100
9、00 中所有的闰年。18我国人口为 13 亿,按照人口每年增加 0.8%计算,多少年后我国的人口超过 26 亿。程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基础教研室 2008 年419求 ,直到最后项小于 。2221.431n61020求分数序列 ,前 20 项之和。,38,5,21求 ,直到最后项小于 。216721s 622求 ,直到 n1000。)12()(5342 n23求 。!10.!10n24 ( )求 ,直到 n=100。!.!43!2nxxex 25水仙花数是指一个三位整数,该数三个数位的立方和等于该数本身。例如: 。求所3351有水仙花数。26输入 a 和 n,
10、求 s=a+aa+aaa+aaaa+aaa(n 个 a) 。例如 a=2,n=5 ,则s=2+22+222+2222+22222。(提示:设 t 为其中一项,则后一项 t=t*10+a)27编程计算 1000 内的所有完数。完数是指一个数恰好等于其因子之和,例如:6=1+2+3(提示:先设计求 m 所有因子的算法;再求因子之和,并判断 m 是否完数;最后求所有完数) 。28编写程序,输出“*” ,构成以下图形。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *29搬砖问题:36 块砖
11、 36 人搬,男搬 4 块,女搬 3 块,2 个小儿抬 1 块,要求 1 次搬完。问需男、女和小儿各多少人。30 ( )循环输入 20 个数,求它们的和、平均值。31 ( )梯形法求 在区间(a,b)上的定积分。13)(2xxf32 ( )牛顿迭代法求 在 附近的一个实根,精度小于 。0/sin4104数组问题1输入 10 个数,并反序输出。2输出 Fibonacci 数列:1、1 、2、3 、5、8、13、21、 的前 50 项。3求一维数组中 100 个元素的最大值。4一维数组中查找满足条件(元素能被 4 整除)的所有元素及其个数。程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基
12、础教研室 2008 年55用起泡法为一维数组的 n 个元素按从小到大排序并输出。6用选择法为一维数组的 n 个元素按从小到大的顺序排序并输出。7二维数组输入数据,并按行列方式输出。8求数组中“行号 列号”的元素之和。9杨辉三角形是如图 7-27 所示数列,求杨辉三角形的前 10 行。10生成 MM 矩阵,将矩阵转置后输出。11定义动态数组,先定义为一维数组,赋值并输出;再定义为二维数组,赋值并输出。12 ( ,VB 语言)设计界面如图 7-41 所示,包括 Text_i(数组元素下标) 、Text_xh(学号) 、Text_xm(姓名) 、Text_xb (性别) 、Text_Address(
13、地址) 、Command1(写入) 、Command2 (显示) 。定义学生类型 Student 及一维数组,点击 Command1 按钮时,将文本框的输入写入数组;点击 Command2 按钮时,将对应下标的数组内容显示出来。13编写程序,生成有 10 个元素的一维数组,分别求和与平均值。14编写程序,生成有 10 个元素的一维数组,求其中所有偶数的平均值。15编写程序,生成有 10 个元素的一维数组,将一维数组反序并输出。16编写程序,生成有 100 个整数元素的一维数组,统计其中奇数和偶数的个数。17 ( )编写程序,生成 100 个元素为 0 到 9 间整数的一维数组,求其中 0 到
14、9 的分别个数。18编写程序,将一维数组 a 的所有元素复制到一维数组 b 中。19编写程序,将一维数组 a 的所有元素连接到一维数组 b 的后边。20 ( )编写程序,生成 100 个元素的一维数组,输入变量 x,将数组中所有与 x 值相等的元素删除。21 ( )编写程序,定义 11 个元素的一维数组,为前 10 个元素赋值,将前 10 个元素按照从小到大排序。输入变量 x,将 x 插入数组中,使得数组仍然有序。22有数列的定义 ,求其前 20 个元素并输出。3n2)1()fnf23编写程序,生成 10 行 10 列二维数组,求其中最大元素和最小元素。24编写程序,生成 10 行 10 列二
15、维数组,求其主对角线元素之和。25编写程序,生成 10 行 10 列二维数组,分别求其每行和每列的和。26定义如下图所示两个矩阵(数据为 1 到 20 之间的随机数) 16541320987A1253098764B编写程序实现以下功能:(1 )将 A 和 B 矩阵相加后,放在 A 中。(2 ) ()将 A 和 B 矩阵相乘后,放入矩阵 C 中。27参考【例 7.22】 ,利用控件数组,尝试编写能够进行加、减、乘和除的计算器。28 (设计性实验参考)利用用户自定义类型数组,实现一个学生信息管理系统,包括学生信息的输入、输出、查询、排序,插入和删除学生信息等功能。学生信息项目见下表。学号 姓名 性
16、别 地址 高考成绩 07161101 宁雨晨 男 天津市河西区 698 07161102 刘雨轩 男 天津市河西区 658 07161103 王美轩 女 江苏省盐城市 690 程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基础教研室 2008 年629编写程序,生成字符串数组,求其长度。30编写程序,生成字符串数组,将其中小写字母变为大写(大写变为小写) 。31编写程序,生成字符串数组 str2,将其复制到字符串数组 str1 中。32编写程序,生成字符串数组 str1 和 str2,将 str2 连接到字符串数组 str1 后边。33编写程序,生成字符串数组 str1 和 str2
17、,比较两个字符串大小。如 str1str2,则结果大于 0,如str1str2,则结果位 0,如 str1str2,则结果小于 0。34 ( )编写程序,生成字符串数组,求其中字符0-9分别的个数。35 ( )编写程序,生成字符串数组,将字符串反序。36 ( )编写程序,生成字符串数组,求字符串是否回文(即字符串两端对称,例如”123454321”) 。37 ( )编写程序,生成字符串数组,求其中单词的个数。5函数问题1定义函数 max,求两个参数 a 和 b 中较大的值2编写能求 n!的函数 fact(),输入 n,调用函数 fact()求 n!。3编写函数利用【例 8.2】的 fact()
18、函数,求组合数 。)!(Cnm4编写程序,计算和数 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+m)。m1ni5编写过程,将变量 a 和 b 按从小到大顺序打印。6编写函数 sum,求数组各个元素的和。7编写函数,将数组反序存放。8编写程序,定义并嵌套调用函数,求 。!.!21mnm9 ( )用递归算法求 n!。10( )汉诺塔(Hanoi)是这样的问题,有三个柱子 A、B 和 C,开始 A 柱上有 64 个盘子,从上到下,依次大一点,如图 8-24 所示,把所有盘子移到 C 柱上,要求:盘子必须放在 A、B 或 C 柱上,一次只能移动一个盘子,大盘子不能放在小盘子上边。
19、11编写程序,输入 r(半径)和 h(高) ,分别编写并调用函数求圆球体积和圆柱体积。12编写函数 f,其功能是如果参数 n 是水仙花数,则函数值为 True,否则为 False。调用函数 f,求100-999 中的所有水仙花数。13编写函数 prime,如果参数 n 为素数,则函数值为 True,否则为 False。调用函数 prime,求 100-999中的所有素数。14编写函数 f,计算 。输入 x(x 为弧度) 。调用该函数求公式)!12(x),-nxf)(,当第 n 项的绝对值小于 时结束计算。)!()753x1Mysin()-n! -51015 ( )使用递归过程求 Fibonac
20、ci 数列的第 n 项。16 ( )输入 n 和 x,用递归的算法求 n 阶勒让德公式的值,递归公式为:程序设计必须掌握的算法设计问题 天津科技大学 计算机公共基础教研室 2008 年7 1/)(*)1(*)12( 0) 21 nxPnxPnxPnnn17定义数组 a(10),以数组为参数,编写并调用以下函数:(1 )将数组排序。(2 )求数组的平均值。(3 )求数组的最大值及其下标。18 ( )求定积分 的定积分。3112dxx)(19 ( )编写一个函数 f(a),用迭代法求 。其迭代公式为 。3a2i1x3xaii20 ( )将前述迭代法改为递归函数 f2(x0,a), 求 ,精度 。3x50