编写函数,从低位开始依次取出正整数s中奇数位上的数,构成一个新数t,高位仍在高位,低位仍在低位。 如,s的值为7654321时,t的值应为7531
时间: 2024-05-15 14:12:07 浏览: 162
可以先将整数s转换为字符串,然后从字符串的末尾开始遍历,取出奇数位上的数字,将其拼接到新的字符串t中,最后再将t转换为整数返回即可。
以下是示例代码实现:
```python
def get_odd_digits(s):
s_str = str(s)
t_str = ''
for i in range(len(s_str)-1, -1, -2):
t_str = s_str[i] + t_str
t = int(t_str)
return t
```
测试一下:
```python
s = 7654321
t = get_odd_digits(s)
print(t) # 输出7531
```
相关问题
编写函数,从低位开始依次取出正整数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
```
给定程序中函数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`来实现。
阅读全文