C语言编程:去除偶数位数字题目解析与解答
需积分: 9 140 浏览量
更新于2024-07-25
收藏 800KB DOC 举报
"C语言编程练习,包括处理数字的函数和计算阶乘的函数"
在C语言中,处理数字的函数通常涉及到数值操作,如提取位、判断奇偶性以及进行数学运算。在提供的代码片段中,我们有两个独立的题目,分别涉及去除偶数位和计算阶乘。
首先,让我们详细分析第一个题目。这个程序的目标是创建一个函数`fun`,它接收一个无符号长整型指针`n`,并移除输入数中所有偶数位的数字。以下是程序的主要逻辑:
1. 定义一个变量`x`用于存储新数,初始化为0。
2. 定义一个整型变量`i`作为权重,初始值为1,用于将每位数字加入到`x`中。
3. 使用`while`循环,条件为`*n`非零,意味着还有数字需要处理。
- 计算`*n`对10取模,得到当前位的数字`t`。这里填写`10`是因为我们想获取个位数字。
- 判断`t`是否为奇数,即`t%2`是否不等于`0`。如果`t`是奇数,将`t`乘以`i`并累加到`x`,同时更新`i`为`i*10`,以便下一次累加时能对应更高的位。
- 将`*n`除以10,移除已处理的最低位。
4. 循环结束后,`*n`应为新数的值,因此将`x`赋值给`*n`。
在第二个题目中,函数`fun`的任务是计算输入整数`n`的阶乘。这里有两个错误需要修正:
1. 首先,`ifn==0`的语法有误,应该是`if (n == 0)`,用括号包围条件表达式。
2. 其次,`while`循环的条件`while(n>1&&n<170)`限制了`n`的范围,但阶乘计算不需要这样的限制,应该更改为`while(n > 1)`,因为任何大于1的整数都可以计算阶乘。
修正后的`fun`函数应该如下所示:
```c
double fun(int n) {
double result = 1.0;
if (n == 0)
return 1.0;
while (n > 1)
result *= n, n--;
return result;
}
```
这两个题目展示了C语言基本的数学和逻辑操作,对于学习C语言的初学者来说是非常好的实践题目。它们可以帮助理解指针、条件语句、循环以及基本的数学运算。通过解决这些题目,开发者可以提高对C语言控制流和数值处理的理解。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-07-10 上传
2022-07-03 上传
2013-10-18 上传
2022-07-02 上传
2011-12-04 上传
2022-12-02 上传
huzhouhzy
- 粉丝: 83
- 资源: 1652