大学c语言编程中的一个简单问题,跪求大神来解决下,谢谢 80

找出满足条件的四位数abcd与e,a非0,e非0非1,使四位数满足abcd*e=dcba,,,,答案如下#include<stdio.h>voidmain(){inti,... 找出满足条件的四位数abcd与e,a非0,e非0非1,使四位数满足abcd*e=dcba,,,,答案如下

#include<stdio.h>
void main()
{
int i, e, n, num, flag;
for(i = 1000; i < 10000; i++)
{
for(num = 0, flag = 1000, n = i; n; n=n/10, flag=flag/10) //取数dcba
num =num+ ((n % 10) * flag);
for(e = 2; e < 10; e++) //判断是否存在abcd*e=dcba
if(i *e == num)
printf("abcd(%d) * e(%d)=dcba(%d)\n", i, e, num); //输出
}
}

我想请问诸位大神,
for(num = 0, flag = 1000, n = i; n; n=n/10, flag=flag/10) //取数dcba
num =num+ ((n % 10) * flag);
到底有啥用。求最详细的对这一句话的分析,小弟跪谢
展开
 我来答
百度网友a957782
2015-11-05 · TA获得超过217个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:96.9万
展开全部
这个其实很简单的:
我举个例子来说明好了
当i=1234时,
第一次循环:1)赋值num=0,flag=1000,n=1234
计算num=num(第一次是0)+1234%10取余得4 * 1000=4000

2)判断,这里不进行判断,只有一个n
3)n=n/10=123(这里不是123.4,注意是整形)
第二次循环:1)这时候num=4000,flag=100,n=123
计算num=num(4000)+123%10取余3 *100=4000+300=4300

2)判断,这里不进行判断,只有一个n
3)n=n/10=123(这里不是123.4,注意是整形)

看出来了吗?就是把每一位拿出来,倒着输出~~~
雨中的中鱼
2015-11-05 · TA获得超过196个赞
知道小有建树答主
回答量:96
采纳率:50%
帮助的人:47万
展开全部
for(num = 0, flag = 1000, n = i; n; n=n/10, flag=flag/10){
num =num+ ((n % 10) * flag);
}中循环的条件是n=n/10, flag=flag/10,已至最外层循环每一次运行时 n=i,flag=1000;
所以这个循环会运行4次,每次flag分别为1000,100,10, 1;而n 为n, n/10,n/100,n/100,
所以(n%10)*flag分别为(n%10)*1000, (n/10%10)*100, (n/100%10)*10 ,(1/1000%10)*1
-- /代表取整, %代表取余数
--(n%10表示个位d),*1000 即将个位转成千位,
--(n/10%10表示十位c),*100 即将十位转成千位,
--(n/100%10表示十位b),*10 即将百位转成十位,
--(n/1000%10表示十位a),*1 即将千位转成个位。
追问
请问这个循环终止条件是什么?
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
q其实不想走
2015-11-05 · 超过13用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:18.2万
展开全部
功能就是把num变成dcba
(n % 10) * flag是先把要判断的数取个位数,然后乘以flag移到高位;

n=abcd先取个位数d,乘以flag=1000后d移到最高位,num=d000;

然后n=abc取个位数c,乘以flag=100后c移到最高位,num=dc00;
n=ab取个位数b,乘以flag=10后b移到最高位,num=dcb0;
n=a,乘以flag=1后c移到最高位, num=dcba;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一角五角
2015-11-05
知道答主
回答量:3
采纳率:0%
帮助的人:3627
展开全部
比如1234,1回合:num=0+4×1000=4000
2回合,n为123,flag为100
所以num=4000+3×100=4300
同理可得num最后为4321
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式