C语言编程:经典例题解析与函数实现

需积分: 3 37 下载量 108 浏览量 更新于2024-07-31 1 收藏 1.5MB DOC 举报
"2011年二级C语言上机题库,包含南开大学的100道经典题目,适合准备全国计算机等级考试二级C语言的考生复习使用。" 在C语言编程中,处理数值的位操作是非常重要的技能,尤其是在处理特定位上的数字时。在第01套题目中,函数`fun`的目标是提取输入数字中所有奇数位的数字,形成一个新的数。函数首先初始化一个变量`x`用于存储新数,以及一个变量`i`作为权重。循环中,通过`*n%10`获取当前位的个位数,然后用`if`语句判断该位是否为奇数。如果是个位奇数,将该位数字与权重`i`相乘并累加到`x`上,同时更新权重`i`为`i*10`。接着,通过`*n/=10`移除已处理的个位。最后,将新数`x`赋值给`*n`返回。在提供的代码中,三处待填充的地方分别应该填写:`10`、`0`和`x`。 第二题的函数`fun`是计算阶乘。在C语言中,计算大整数的阶乘可能涉及到浮点数运算,因此返回类型为`double`。初始设置结果为`1.0`,然后通过`while`循环进行乘法运算。第一处错误是条件语句的格式,应修正为`if(n==0)`。第二处错误是在`result*=n--`之后漏掉了分号,正确的写法应该是`result*=n--;`。这个修复后的`fun`函数可以正确地计算小于等于170的正整数的阶乘。 第三题要求编写一个函数`fun`,其任务是将数字字符串转换成整数。在C语言中,这通常涉及字符串到整数的转换,可以使用`strtol`或手动遍历字符串实现。手动遍历时,从字符串的开头(高位)开始,逐位转换字符到对应的数字值,然后累加。需要注意负号的处理,以及处理非数字字符的情况,确保在非法字符出现时能及时停止转换并返回适当的错误标志或结果。 这些题目覆盖了C语言中的位操作、条件判断、循环控制、浮点数运算、字符串处理等多个基本知识点,对于备考二级C语言考试的考生来说,这些都是必须掌握的基础内容。通过解决这些问题,考生不仅可以巩固对C语言的理解,还能提高实际编程能力。