C语言编程挑战:奇数位逆序与字符串操作

需积分: 9 1 下载量 199 浏览量 更新于2024-12-20 收藏 86KB DOC 举报
"C语言上机考试题目及解答" 这些题目是针对C语言上机考试的,涵盖了数据处理和字符串操作的基本概念。让我们逐一解析这些题目及其解决方案。 1. 第一题要求编写一个名为`longfun`的函数,该函数接受一个长整型数`x`,将其中每位为奇数的数字逆序排列并返回新的长整型数。实现这个功能的关键在于遍历`x`的每一位,检查是否为奇数,如果是则将其添加到结果`ret`的末尾。代码中通过`x % 10 % 2`来判断当前位是否为奇数,然后利用`ret = ret * 10 + x % 10`来合并结果。主函数`main`中,用户输入一个长整型数,调用`longfun`函数处理后,打印出结果。 2. 第二题要求编写一个`fun`函数,它接收两个字符串`s`和`t`,以及一个指向结果字符串的指针`p`。函数的任务是找出在`s`中未出现,但在`t`中出现的字符,且这些字符在新字符串`p`中保持原有的顺序,同时去除重复字符。实现方法是遍历`s`和`t`,检查`s`中每个字符是否在`t`中出现,若出现并且未在结果字符串`p`中出现过,则添加到`p`中。最后在`p`的末尾添加空字符`\0`作为字符串结束符。在主函数中,读取两个字符串,调用`fun`函数处理后,输出结果字符串。 3. 第三题要求编写一个`fun`函数,计算表达式`1 + (1+2) + (1+2+3) + ... + (1+2+3+...+n)`直到其和小于等于给定的整数`m`,并返回最大的`n`值。这涉及到求等差数列的和。可以通过累加`a`每次增加`i`的方式来计算`1+2+3+...+i`的和,直到总和`sum`大于或等于`m`为止。在找到合适的`n`值后,返回`n`。在给出的代码中,使用了一个无限循环`for(i=1;;i++)`,当满足条件`a+a+i<m`时跳出循环,返回`i`。 以上三题展示了C语言中基本的条件判断、循环控制、字符串操作和数学计算的应用,是C语言学习者常见的练习题目类型。理解和解决这些问题有助于巩固对C语言基础知识的理解。