C语言表达试

来源:百度知道 编辑:UC知道 时间:2024/05/02 11:03:58
main()
{int i,a,b,c;
i=199;
while(i<300)
{
i++;
a=i/100; // 这我不是很明白,谁能详细的说明它的逻辑思维
b=i/10%10; 分解的这3位数//
c=i%10;
if(a+b+c==12&&a*b*c==42)printf("%d\n",i);
else continue;
}
}

a=i/100;即是将i的后两位去掉,a就得剩下的,如此处第一次i=200,a便等于2,实际上是100整除a之后的商
b=i/10%10;先是用10整除i,再将得到的数除以10取余数,如200/10=20,20再除以10得2,余0,于是b=0;

整除运算和求模运算啊
i/100得到了一个3位数的百位
i/10得到了十位和百位上的2位数字 再求模后(i/10)%10就得到了十位数
i%10直接就能得到个位数 呵呵
这样就分离了一个3位数
a 是百位 b 是十位 c是个位
如果还不清楚的话 再细讲
我给你打个比方:
好比i=289
a=i/100=289/100=2.89 (整除运算,结果为2.89,但是只能得到它的整数位即2,要是这也不清楚就没办法了 哈哈)
b=i/10=289/10=28.9(道理同上,28.9取整后为28)28再求模即
28%10=8 也就是要分离的十位数字
c=i%10=289%10=9 即分离到个位数(求余数的运算哈)

/ 是相除,a是整型变量 ,所以a=i/100;的作用是将i/100的整数部分保存到a中,即取得i的百位数字。

a是百位,i除100取整,就只剩百位了
b是十位,i除10得到百位十位组成的两位数,再取余10,就剩十位了
c是个位,这就很明显了,取余就剩个位了