C语言:整数各位取奇数!将一个整数中的每位上为奇数的数依次取出,构成一个新数放在t中!

高位依旧是高位,低位依旧是低位,然后输出t;下面是代码,函数fun里的代码我不怎么懂,大神帮解释一下:#include <stdlib.h> #include <stdio.h> #include <conio.h>void fun(long s,long *t) {int d; long s1=1; *t=0;while(s>0) { d=s%10;if(d%2!=0){*t=d*s1+*t; s1*=10; } s/=10; } }void main() {long s, t;system("CLS");printf("尀nPlease enter s: "); scanf ("%ld",&s); fun(s,&t);printf("The result is :%ld尀n",t); }
2026年09月19日 12:51
有2个网友回答
网友(1):

void fun(long s,long *t)
{int d;
long s1=1; //表示处理到哪一位的权重,个位是1,十位是10,百位是100,...
*t=0; //结果清零
while(s>0)
{ d=s%10; // 去最低位
if(d%2!=0) // 如果是奇数
{*t=d*s1+*t; // d*s是当前位的加权数,加上已经处理的,就是新的结果

s1*=10; } // s1的权重乘10,得到下一个权重
s/=10; //剩余数据取模,进入下一个循环
}
}

网友(2):

d=s%10 这是模10求余,对10进制数模10求余就是得到他的最低位,比如说123 % 10 = 3
循环下去可以得到10进制数的每一位
对于10进制数的每一位进行模2求余,可以判断奇偶
其他的自己理解吧