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);
}

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; //剩余数据取模,进入下一个循环
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-31
d=s%10 这是模10求余,对10进制数模10求余就是得到他的最低位,比如说123 % 10 = 3
循环下去可以得到10进制数的每一位
对于10进制数的每一位进行模2求余,可以判断奇偶
其他的自己理解吧

C语言:整数各位取奇数!将一个整数中的每位上为奇数的数依次取出,构成一...
if(d%2!=0) \/\/ 如果是奇数 {*t=d*s1+*t; \/\/ d*s是当前位的加权数,加上已经处理的,就是新的结果 s1*=10; } \/\/ s1的权重乘10,得到下一个权重 s\/=10; \/\/剩余数据取模,进入下一个循环 } }

...的每一位上为奇数的数依次输出,构成一个新数放在t中。高位在低位,低...
include <stdio.h>void main(){int i,n,k=0,b[50],t[50];char str[50]={};printf("请输入一个整数:");gets(str);n=strlen(str);for(i=0;i<n;i++){if((str[i]-48)%2) {b[k]=str[i]-48;k++;}else continue;}for(i=0;i<k;i++) {t[i]=b[k-i-1];printf("...

...将S中每一位为奇数的数依次取出,构成一个新数放在t中(高位仍在高位...
余类推 while(s){\/\/从高位到低位检查每一位 if((x=s\/n)&1)\/\/若是奇数 (t*=10)+=x;\/\/将t乘以10+这位奇数构成奇数组成的新数 s%=n,n\/=10;\/\/调整控制变量以进行正确循环判断 } printf("The new number is %d\\n",t);\/\/输出 return 0;} ...

...将数中各位上为奇数的数字取出构成一个新数,
先把这个整型数,按除10取余数的方法,一位一位的取出来放到一个数组里面;然后再对这个数组里面的每一个数判断其是否为奇数,是的话就按10进制的方式加到一个整数变量里面。比如:整数253698分解成一个数组:[a]={8,9,6,3,5,2},然后按照逆序从后向前判断a[5]为偶数,舍弃;a[4]为奇数,加入变量nNumber=5;...

编写一个程序,输入一个整数,将该数各位上为偶数的数去掉,剩余的数按原...
用除以10取余(保存商以备下次继续用)的方法,从低到高依次得到每一位数字,用除以2取余的方法判断奇偶,若是偶数则丢弃,若是奇数则从低到高暂存到一数组。最后将暂存数组中的所有数字按倒序输出。

C语言求解~~~
详情请查看视频回答

求c语言大神,70112这五个数,分别求五个数之和代码,五个数中奇数之和代 ...
include <stdio.h>#include <string.h>#include <ctype.h>#include <stdlib.h>#define MAX_LONG 5 \/\/ 假设只有5个数字void main(void){unsigned int digits[100];char target[]="70112"; \/\/ 这里是你的目标数字(当然你也可改为其它的5个数字)char dest[12];int start=-1,i,j,k,...

c语言随机输入一个七位的整数,将奇数位上的数字组成一个四位的整数要 ...
将输入的7位数的每一位存放在一个数组中,将数组的第0、2、4、6位连续输出就可以了

六年级下册关于抽屉原理的问题
解:将一年中的366天视为366个抽屉,400个人看作400个物体,由抽屉原理1可以得知:至少有两人的生日相同. 又如:我们从街上随便找来13人,就可断定他们中至少有两个人属相相同. “从任意5双手套中任取6只,其中至少有2只恰为一双手套。” “从数1,2,...,10中任取6个数,其中至少有2个数为奇偶性不同。

写一个文法,使其语言是奇数集,且每个奇数不以0开头
分别用3个非终结符来产生句子的第1位、中间部分和最后一位。引入几个非终结符,其中,一个用作产生句子的开头,可以是1-9之间的数,不包括0,一个用来产生句子的结尾,为奇数,另一个则用来产生以非0整数开头后面跟任意多个数字的数字串,进行分解之后,这个文法就很好写了。

相似回答