功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一 个新数放在t中。如,s=12345,则t=135。 #include <stdio.h> void fun (long s, long *t) long s1=15; *t=s__10; while(s>0){ s=_; *t+=s%10*s1; s1=s1*15;}}
时间: 2024-03-09 21:51:01 浏览: 36
这段代码存在一些错误,我来为你解释一下:
1. 函数定义中缺少了函数体的大括号。
2. 在函数体中,变量 s1 和 s 缺少类型声明。
3. 在 while 循环中,变量 s 的更新操作缺少了除以 10 的操作,导致会一直循环下去。
4. 变量 s1 的初始值错误,应该为 1 而不是 15。
5. 变量 s 的赋值操作缺少了除以 10 的操作。
6. 变量 t 的初始值没有给出。
下面是修改后的代码:
```c
#include <stdio.h>
void fun(long s, long *t) {
long s1 = 1;
*t = 0;
while (s > 0) {
*t += s % 10 * s1;
s /= 100;
s1 *= 10;
}
}
int main() {
long s = 12345;
long t;
fun(s, &t);
printf("%ld\n", t);
return 0;
}
```
运行结果为:
```
135
```
相关问题
给定程序中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。#include <stdio.h> /********found********/ void fun(long s,long t) { long s1=10; *t=s%10; while(s>0) { s=s/100; *t=s%10*s1+*t; /********found********/ s1=s1*100; } } void main() { long s,t; scanf("%ld",&s); fun(s,&t); printf("%ld\n",t); }
这是一道较典型的“取位数”问题,根据题意可以得到函数fun的实现如下:
```c
#include <stdio.h>
void fun(long s,long *t) {
long s1=10;
*t=s%10;
while(s>0) {
s=s/100;
*t=s%10*s1+*t;
s1=s1*100;
}
}
void main() {
long s,t;
scanf("%ld",&s);
fun(s,&t);
printf("%ld\n",t);
}
```
注意,在函数fun中,我们传入了参数`t`的地址,这样就可以将构造出的新数返回给主函数了。另外,由于题目中要求从低位开始取出奇数位上的数,所以我们在while循环中每次将`s`除以100,这样就可以跳过偶数位的数了。具体地,我们每次取出`s`的个位数(即奇数位上的数),将其加入到`t`中,然后将`s`除以100,这样就可以跳过当前的个位数和下一个偶数位的数。最后,我们需要将`t`中的数倒置过来,这可以通过在while循环中使用`*t=s%10*s1+*t`来实现。
编写函数,从低位开始依次取出正整数s中奇数位上的数,构成一个新数t,高位仍在高位,低位仍在低位。如,s的值为7654321时,t的值应为7531。
实现这个功能的一种简单方法是将正整数s转换为字符串,然后从字符串的低位开始遍历每个字符,如果这个字符在奇数位上(从0开始计数),则将它添加到一个新字符串t中。最后将t转换回整数即可。
以下是实现这个功能的Python代码:
```python
def extract_odd_digits(s):
s_str = str(s)
t_str = ''
for i in range(len(s_str)):
if i % 2 == 1:
t_str += s_str[i]
return int(t_str)
```
可以对该函数进行测试:
```python
s = 7654321
t = extract_odd_digits(s)
print(t) # 输出7531
```