C 语言第二次小班讨论题 (以下是我选的 35 个题目, 作为第二轮 PPT 讨论课的题目, 这次相对第一次要难些,但是有很多有趣的题目, 通过动手编程、 讨论, 大家一定会有很大的收获的, 希望大家能好好准备。 这些题在网上肯定能搜索到源代码, 不过还是希望大家能亲手编程, 能用自己想出来的算法 O(∩ _∩ ) O~ 希望大家到时候能分享自己的编程经验, 这也是最重要的, 由于题量有限, 如果没有选到合适自己的, 也可以自己找些题目, 但是最好能有一定的意义的题目) (请各班到时候能统计一下上台的顺序, 这次还是两人一组, 谢谢) 题目 1 编一个函数 fun(char *s) , 函数的功能是把字符串中的内容逆置。 例子如: 字符串中原有的内容为: abcdefg, 则调用该函数后, 串中的内容为: gfedcba ******************************************************************************。 ************************** 题目 2 写程序, 实现矩阵(3 行 3 列) 的转置(即行列互换) 。 ******************************************************************************************************** 题目 3 请编一个函数 fun(int *a, int n, int *odd, int *even) , 函数的功能是分别求出数 组中所有奇数之和以及所有偶数之和。 形参 n 给了 数组中数据的个数: 利用指针 odd 返回 奇数之和, 利用指针 even 返回偶娄这和。 ***************************************************************************************************** 题目 4 要求程序的功能是: 把 20 个随机数存入一个数组, 然后输出该数组中的最小值。 其 中确定最小值的下标的操作在 fun 函数中实现, 请给出该函数的定义。 ******************************************************************************************************* 题目 5 编写函数 fun, 函数的功能是: 从字符串中删除指定的字符。 同一字母的大、 小写按 不同字符处理。 **************************************************************************************************** 题目 6 请编写函数 fun, 函数的功能是求出二维数组周边元素之和, 作为函数值返回。 二维 数组中的值在主函数中赋予。 ******************************************************************************************************** 题目 7 写一个函数, 从传入的 num 个字符串中找出最长的一个字符串, 并通过形参指针 max 传回该串地址。 (注意: 用****作为结束输入的标志。 ) ****************************************************************************************************题目 8 编写一个函数 fun, 它的功能是: 实现两个字符串的连接(不使用库函数 strcat) ******************************************************************************************************* 题目 9 程序定义了 N*N 的二维数组, 并在主函数中自动赋值。 请编写函数 fun(int a[][N] ) , 函数的功能是: 使数组第一列元素中的值与最后一列元素中的值对调、 第二列元素的 值与倒数第二列中的值对调、 „„、 其他依次类推。 ******************************************************************************************************* 题目 10 已知学生的记录由学号和学习成绩构成, N 名学生的数据已存入 a 结构体数组中。 请 编写函数 fun, 函数的功能是: 找出成绩最低的学生记录, 通过形参返回主函数(规定只 有一个最低分) 。 已给出函数的首部, 请完成该函数。 ********************************************************************************************************* 题目 11 输入 10 个整数, 将其中最小的数与第一个数对换, 把最大的数与最后一个数对换, 写三个函数(1) 输入 10 个数(2) 进行处理(3) 输出 10 个数。 (指针) *********************************************************************************************************** 题目 12 有 n 个整数, 使前面各数顺序向后移 m 个位置, 最后 m 个数变成最前面的 m 个数。 **************************** 题目 13 将一个 5*5 的矩阵中最大的元素放在中心, 4 个角分别放 4 个最小的元素(顺序为从左到右, 从上到下顺序依次从小到大存放) , 写一个函数实现, 用 main 函数调用 ************************ 题目 14 在主函数中输入 10 个等长的字符串, 用另一函数对它们进行排序, 然后在主函数中输出排好序的 10 个字符串。 ******************************************** 题目 15 以下程序的功能是应用下面的近似公式计算 e 的 n 次方。 函数 f1 用来计算每项分子的值, 函数 f2 用来计算每项分母的值。 请编写 f1 和 f2 函数。 ********************************************** ****************************************************************************** 题目 16 以下程序的功能是应用弦截法求方程 x*x-5x*x+16x-80=0 的根, 其中 f 函数可根据指定的 x 的值求出 f(x1) 和 f(x2) 的连线与 x 轴的交点; 函数 root 用来求区间(x1, x2) 的实根, 请编写 root 函数。 ***************************************题目 17 以下程序的功能是用牛顿法求解方程 f(x) =cosx-x=0。 已有初始值 x0=3. 1415/4, 要求绝对误差不超过 0. 001, 函数 f 用来计算迭代公式中 Xn 的值, 请编写 f 函数。 牛顿迭代公式是: Xn+1=Xn-f(Xn) /f' (Xn) 即: Xn+1=Xn-(cosXn-Xn) /(sinXn-1) ********************************************** 题目 18 有一只猫, 捉来好多老鼠开始大餐。 为了 显得它与众不同, 它用了 一个特别的就餐顺序: 它先定好步长 k, 然后它吃掉第 1 个位置上的, 然后再每隔 k 只再吃一只老鼠一轮结束后, 它再次从第 1 个位置开始继续吃, 直到最后只剩下一只老鼠为止。 而这最后一只老鼠这只猫会放走。 但这群老鼠中, 有一只特别聪明, 它希望不死, 它经过计算, 于是一开始它就站在一个特别的位置上, 而最后, 它果然没死, 被放走了 , 你知道它站在哪个位置上吗? (老鼠的总数 n 以及步长 k 根据输入的值确定) ********************************************* ******************************************************************************* 题目 19 输入一个五位以内的正整数, (1) 判断它是一个几位数; (2) 请按序输出其各位数字; (3) 逆序输出其各位数字。 如输入: 56439, 输出: 5 位数 5, 6, 4, 3, 9 9, 3, 4, 6, 5 ******************************************** ******************************************************************************* 题目 20 模拟 n 个人参加选举的过程, 并输出选举结果: 假设候选人有四人, 分别用 A、 B、 C、 D表示, 当选某候选人时直接输入其编号(编号由计算机随机产生) , 若输入的不是 A、 B、C、 D 则视为无效票, 选举结束后按得票数从高到低输出候选人编号和所得票数。 *********************************** ******************************************************************************* 题目 21 编程实现将任意的十进制整数转换成 R 进制数(R 在 2-16 之间) 。 ************************************************************************************************************ 题目 22 编程实现对键盘输入的英文名句子进行加密。 用加密方法为, 当内容为英文字母时其在26 字母中的其后第三个字母代替该字母, 若为其它字符时不变。 ************************************************ ******************************************************************************* 题目 23 给定程序中, 函数 fun 的功能是: 在任意给定的 9 个正整数中找出按升序排列时处于中间的数, 将原数据序列中比该中间数小的数用该中间数替换, 位置不变, 在主函数中输出处理后的数据序列, 并将中间数作为函数值返回。 例如, 有 9 个正整数: 1 5 7 23 87 5 8 21 45 按升序排列时的中间数为: 8 处理后主函数中输出的数列为: 8 8 8 23 87 8 8 21 45****************************************************************************************************************** 题目 24 给定程序中, 函数 fun 的功能是建立一个 N×N 的矩阵。 矩阵元素的构成规律是: 最外层元素的值全部为 1; 从外向内第 2 层元素的值全部为 2; 第 3 层元素的值全部为 3, „依次类推。 例如, 若 N=5, 生成的矩阵为: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 假设 N=7; *********************************************************************************** 题目 25 给定程序中, 函数 fun 的功能是: 将 s 所指字符串中的所有数字字符移到所有非数字字符之后, 并保持数字字符串和非数字字符串原有的先后次序。 例如, 形参 s 所指的字符串为: def35adh3kjsdf7。 执行结果为: defadhkjsdf3537。 ****************************************************************************************** 题目 26 给定程序中, 函数 fun 的功能是: 计算形参 x 所指数组中 N 个数的平均值(规定所有数均为正数) , 作为函数值返回; 并将大于平均值的数放在形参 y 所指数组中, 在主函数中输出。 例如, 有 10 个正数: 46 30 32 40 6 17 45 15 48 26, 平均值为: 30. 500000 主函数中输出: 46 32 40 45 48 ************************************************************************************* 题目 27 人员的记录由编号和出生年、 月、 日组成, N 名人员的数据已在主函数中存入结构体数组std 中。 函数 fun 的功能是: 找出指定出生年份的人员, 将其数据放在形参 k 所指的数组中, 由主函数输出, 同时由函数值返回满足指定条件的人数。 **************************************************************************************************** 题目 28 函数 fun 的功能是: 把形参 a 所指数组中的奇数按原顺序依次存放到 a[0] 、 a[1]、a[2]、 „„中, 把偶数从数组中删除, 奇数个数通过函数值返回。 例如: 若 a 所指数组中的数据最初排列为: 9、 1、 4、 2、 3、 6、 5、 8、 7, 删除偶数后 a 所指数组中的数据为: 9、1、 3、 5、 7, 返回值为 5。 *********************************************************************************************************题目 29 请编写一个函数 void fun(char *tt, int pp[]) , 统计在 tt 所指字符串中' a' 到 ' z' 26 个小写字母各自出现的次数, 并依次放在 pp 所指数组中。 例如, 当输入字符串: abcdefgabcdeabc 后, 程序的输出结果应该是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ********************************************************************************************************** 题目 30 请编写函数 fun, 函数的功能是: 移动字符串中的内容, 移动的规则如下: 把第 1 到第 m个字符, 平移到字符串的最后, 把第 m+1 到最后的字符移到字符串的前部。 例如, 字符串中原有的内容为: ABCDEFGHIJK, m 的值为 3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。 ***************************************************************************************************** 题目 31 请编写函数 fun, 其功能是: 将一组得分中, 去掉一个最高分和一个最低分, 然后求平均值, 并通过函数返回。 函数形参 a 指向存放得分的数组, 形参 n 中存放得分个数(n>2) 。 例如, 若输入 9. 9 8. 5 7. 6 8. 5 9. 3 9. 5 8. 9 7. 8 8. 6 8. 4 十个得分, 则输出结果为:8. 687500。 ******************************************************************************************* 题目 32 中国有句俗语叫“三天打鱼两天晒网” 。 某人从 1990 年 1 月 1 日起开始“三天打鱼两天晒网” , 问这个人在以后的某一天中是“打鱼” 还是“晒网” 。 (输入年月日, 判断是干什么) ********************************************************************************************** 题目 33 个位数为 6 且能被 3 整除的五位数共有多少? ******************************************************************************************* 题目 34 一个自然数被 8 除余 1, 所得的商被 8 除也余 1, 再将第二次的商被 8 除后余 7, 最后得到一个商为 a。 又知这个自然数被 17 除余 4, 所得的商被 17 除余 15, 最后得到一个商是a 的 2 倍。 求这个自然数。 ******************************************************************************************* 题目 35 日本一位中学生发现一个奇妙的“定理” , 请角谷教授证明, 而教授无能为力, 于是产生角谷猜想...