### C语言上机试题知识点解析 #### 题目一:去除偶数位数并重组新数 **题目描述:** 题目要求实现一个函数`fun`,该函数接收一个无符号长整型变量的地址作为参数。函数的功能是从该变量中移除所有偶数位上的数字,保留奇数位上的数字,并按原来的从高到低的顺序重新组合成一个新的数,最终通过形参指针返回这个新的数。 **给定示例:** - 输入:27638496 - 输出:739 **解题步骤与思路:** 1. **初始化变量**:首先定义一个临时变量`x`用于存储重组后的新数,以及一个辅助变量`i`用于表示当前处理的数位。 2. **循环处理**:使用`while`循环处理输入数,每次循环中: - 取出当前数的个位数字`t`(使用`% 10`操作)。 - 如果`t`是奇数(即`t % 2 != 0`),则将其加入到新数`x`中。 - 更新新数`x`和数位`i`。 - 更新输入数(去除已经处理过的个位数)。 3. **返回新数**:最后将新数`x`赋值给原输入数指针所指向的变量。 **代码解析:** ```c #include<stdio.h> void fun(unsigned long *n) { unsigned long x = 0, i; int t; i = 1; while (*n) { t = *n % 10; // 第一处填写:10 if (t % 2 != 0) // 第二处填写:0 { x = x + t * i; i = i * 10; } *n = *n / 10; } *n = x; // 第三处填写:x } int main() { unsigned long n; while (n > 99999999 || n < 0) { printf("Please input (0 < n < 100000000):"); scanf("%lu", &n); } fun(&n); printf("\nThe result is: %lu\n", n); return 0; } ``` #### 题目二:计算阶乘 **题目描述:** 实现一个函数`fun`,该函数接收一个整数`n`作为参数,计算并返回`n!`的值。注意,当`n`大于等于170时,阶乘的结果会超出`double`类型的范围,因此需要对输入进行限制。 **给定示例:** - 输入:5 - 输出:120.000000 **解题步骤与思路:** 1. **初始化变量**:定义一个双精度浮点型变量`result`用于存储阶乘结果,初始值设为1.0。 2. **特殊处理**:如果输入的`n`为0,则直接返回1.0。 3. **循环计算阶乘**:使用`while`循环从`n`开始递减计算阶乘。 4. **返回结果**:返回计算好的阶乘结果。 **代码解析:** ```c #include<stdio.h> double fun(int n) { double result = 1.0; if (n == 0) // 第一处修改:if(n==0) -> if (n == 0) return 1.0; while (n > 1 && n < 170) { result *= n--; // 第二处修改:添加分号 } return result; } int main() { int n; printf("Input N:"); scanf("%d", &n); printf("\n\n%d! = %.6lf\n\n", n, fun(n)); return 0; } ``` #### 题目三:字符串转整数 **题目描述:** 实现一个函数`fun`,该函数接收一个字符数组`p`作为参数,将该数组中的数字字符串转换为对应的整数值。注意不能使用C语言标准库中提供的字符串转整数函数。 **给定示例:** - 输入:"1234" - 输出:1234 **解题步骤与思路:** 1. **初始化变量**:定义一个`long`类型变量`x`用于存储转换后的整数值,一个`int`类型变量`t`用于标记正负号。 2. **处理正负号**:如果字符串首字符为'-',则设置`t`为-1;否则设置为1,并跳过首字符。 3. **逐字符处理**:遍历字符串中的每个字符,根据字符转换为对应的整数值并累加到`x`。 4. **返回结果**:返回最终转换得到的整数值。 **代码解析:** ```c #include<stdio.h> #include<string.h> long fun(char *p) { int i, len, t; long x = 0; len = strlen(p); if (p[0] == '-') { t = -1; len--; p++; } else t = 1; for (i = 0; i < len; i++) { x = x * 10 + (p[i] - '0'); } return x * t; } int main() { char s[6]; long n; printf("Enter a string:\n"); gets(s); n = fun(s); printf("%ld\n", n); return 0; } ``` 以上三个题目涵盖了C语言中的一些基本知识点,包括数值处理、字符串处理以及简单的算法实现等。
剩余63页未读,继续阅读
- 粉丝: 3
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用JAVA开发的飞机大战小游戏,包括i背景图以及绘制.zip竞赛
- 使用java代码完成一个联机版五子棋applet游戏.zip
- Linux系统上FastDFS相关操作脚本与软件包.zip
- W3CSchool全套Web开发手册中文CHM版15MB最新版本
- Light Table 的 Python 语言插件.zip
- UIkit中文帮助文档pdf格式最新版本
- kubernetes 的官方 Python 客户端库.zip
- 公开整理-2024年全国产业园区数据集.csv
- Justin Seitz 所著《Black Hat Python》一书的源代码 代码已完全转换为 Python 3,重新格式化以符合 PEP8 标准,并重构以消除涉及弃用库实现的依赖性问题 .zip
- java炸弹人游戏.zip学习资料程序资源
评论0