1. 下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成 一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为87653142时,t中的数为7531。 请改正程序中的错误,使它能得出正确的结果。 #include <stdio.h> void fun (long s, long *t) { int d; long sl=1; /************found************/ t = 0; while ( s > 0) { d = s%10; /************found************/ if (d%2 == 0) { *t = d * sl + *t; sl *= 10; } s /= 10; } } main() { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); }
时间: 2023-06-29 07:09:39 浏览: 108
修改后的程序如下:
```c
#include <stdio.h>
void fun(long s, long *t) {
int d;
long sl = 1;
*t = 0; // 将 t 的初始值设为 0
while (s > 0) {
d = s % 10;
if (d % 2 == 1) { // 修改判断条件为奇数
*t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
int main() {
long s, t;
printf("\nPlease enter s:");
scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
return 0; // 添加返回值
}
```
修改点:
1. 将 t 的初始值设为 0;
2. 修改判断条件为奇数,即将 `d%2 == 0` 修改为 `d%2 == 1`;
3. 添加返回值,使程序规范化。
相关问题
将一个整数中的每一位上为奇数的数依次取出
### 回答1:
将一个整数中的每一位上为奇数的数依次取出,可以按照以下步骤进行:
1. 将整数转换为字符串,方便逐位取出数字。
2. 从字符串的最左侧开始,依次取出每一位数字。
3. 判断该数字是否为奇数,如果是,则将其记录下来。
4. 继续取出下一位数字,重复步骤3。
5. 直到所有数字都被取出并判断完毕,将记录下来的奇数按照顺序组成一个新的整数即可。
### 回答2:
将一个整数中的每一位上为奇数的数依次取出,可以通过以下步骤实现:
1. 将给定的整数转换为字符串,以便逐位检查。
2. 逐位检查字符串中的每一位数字是否为奇数。可以通过将位上的数字与2取余来判断是否为奇数,即数字 % 2 != 0。
3. 如果某一位数字为奇数,则将其存储到一个新的列表中。
4. 对整个字符串的所有位进行上述操作,直到所有位都检查完毕。
5. 返回存储奇数的列表作为结果。
以下是一个具体的例子来说明上述步骤:
假设整数为1354789。
- 将整数转换为字符串:"1354789"
- 逐位检查:
- 第一位数字1为奇数,存入列表 [1]
- 第二位数字3为奇数,存入列表 [1, 3]
- 第三位数字5为奇数,存入列表 [1, 3, 5]
- 第四位数字4不为奇数,忽略
- 第五位数字7为奇数,存入列表 [1, 3, 5, 7]
- 第六位数字8不为奇数,忽略
- 第七位数字9为奇数,存入列表 [1, 3, 5, 7, 9]
- 返回最终的结果列表 [1, 3, 5, 7, 9]。
以上就是将一个整数中的每一位上为奇数的数依次取出的具体步骤和示例。
### 回答3:
将一个整数中的每一位上为奇数的数依次取出可以通过以下步骤完成:
首先,将给定的整数转换为字符串,以便我们能够逐位检查每个数字。然后,我们可以使用循环来遍历字符串中的每个数字。
对于每个数字,我们可以使用取模运算符(%)来判断它是否为奇数。如果数字对2取模的结果为1,则是奇数,我们可以将其存储到另一个变量中,以便逐个提取并形成结果。否则,如果数字为偶数,我们可以继续遍历下一个数字,直到所有数字都被检查完毕。
在循环结束后,我们可以将存储奇数的变量中的数字按顺序组合起来,形成一个新的数字。为了实现这一点,我们可以使用字符串拼接的方式,将每个数字依次连接起来。
最后,我们可以返回该新的数字作为结果,以完成整数中每一位上为奇数的数的提取。
举例来说,当给定整数为15386时,我们可以依次判断每一位上的数字是否为奇数。1是奇数,存储为新数字,5是奇数,存储为新数字,3是奇数,存储为新数字。8是偶数,继续检查,6是偶数,继续检查。检查完毕后,我们将存储为新数字的1、5和3按顺序连接起来,形成新数字135,将其作为结果返回。
下列给定程序中函数fun的功能是:将一个由八进制数字字符组成的字符串转换成十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。例如,:输入77777则输出32767
以下是函数fun的代码实现:
```c
int fun(char s[])
{
int sum = 0;
for (int i = 0; i < strlen(s); i++)
{
sum = sum * 8 + s[i] - '0';
}
return sum;
}
```
该函数的思路是遍历输入的八进制数字字符串,将每个数字字符转换成对应的十进制数,然后根据位权相加得到最终结果。具体来说,对于一个长度为n的八进制数字字符串,其对应的十进制数为:
```
d = a[0] * 8^(n-1) + a[1] * 8^(n-2) + ... + a[n-2] * 8 + a[n-1]
```
其中a[i]表示第i位上的数字字符,^表示幂运算。为了方便计算,上式可以改写成递推形式:
```
d = a[0]
for (int i = 1; i < n; i++)
{
d = d * 8 + a[i];
}
```
这就是函数fun的实现思路。需要注意的是,由于输入的字符串最多只能包含5位八进制数字字符,因此可以不用考虑溢出的问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)