请高手帮我解决一下这道C语言题目,谢谢!

下面程序的运行结果为( )
#define JH(x,y) x=x∧y;y=x∧y;x=x∧y
#include<stdio.h>
main( )
{
int a=3,b=5,c=7;
JH(a,b);
JH(b,c);
JH(a,c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}

补充:“∧”是按位异或,请简略的说一下过程,谢谢!

“∧”是通过二进制的数来操作的。。。所以在执行命令中要把每个数字转换成二进制来进行运算。
而#define是宏定义,只用来做简单的替换
所以过程替换后就应该变成
#include<stdio.h>
main( )
{
int a=3,b=5,c=7;
a=a∧b;
b=a∧b;
a=a∧b;

b=b∧c;
c=b∧c;
b=b∧c;

a=a∧c;
c=a∧c;
a=a∧c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
以JH(a,b)举例 它就等于 a=a∧b;b=a∧b;a=a∧b;
a=3=0011
b=5=0101
a=a∧b=0110=6
b=0110∧0101=0011=3
a=0110∧0011=0101=5
所以这里的宏定义实现的实际上就是x、y两数的对调
因为假设x的某一位上是1,y的该位是0 x=x∧y在该位就是1
y=x∧y在该位上就为1 x=x∧y在该位得0
假设x的某一位上是0,y的该位是0 x=x∧y在该位就是0
y=x∧y在该位上就为0 x=x∧y在该位得0
假设x的某一位上是1,y的该位是1 x=x∧y在该位就是0
y=x∧y在该位上就为1 x=x∧y在该位得1
假设x的某一位上是0,y的该位是1 x=x∧y在该位就是1
y=x∧y在该位上就为0 x=x∧y在该位得1
所以最后的运行结果就是a与b对换,然后b与c对换,最后a与c对换

运行结果应为3 7 5
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-17
那个宏定义的作用是交换x与y的值。
所以该程序的输出为:
a=3,b=7,c=5.
第2个回答  2010-07-17
异或是字节取反操作
比如拿JH(a,b);来说
a=00000011=3
b=00000101=5
a=a^b=00000110=6
b=a^b=3
a=a^b=5
然后再交换
最后结果是a=3,b=7,c=5
第3个回答  2010-07-17
射手座

幸运花:玛格丽特、蝴蝶兰、此岸花、三色堇、车前草、越桔、琉璃苣、蒲公英

荣幸色:花茶色、海绿色、蓝紫色、杂红色、淡粉色、明玄色、晶紫色

侥幸树:岑树,栗子树、白桦、酸橙树、桑树、橡树

侥幸数字:4、12、21、32

荣幸石:橄榄石、海蓝宝、土耳其石、黄玉,紫水晶,120米烟囱防腐,绿松石

守护星:木星

守护神:众神之王——宙斯

属性:火

最配的星座:射手座、狮子座、天秤座

代表的臭水:GIVENCHY(纪梵希) - Ptisenbon (小熊宝宝)

侥幸酒:甘艾酒

合适的度假处所:丽江、黄金海岸、马我代妇

合适的国家:非洲、西班牙、捷克

荣幸场合:赛马场

射手座女性个性优雅,常表示出目中无人的立场,具有高遥的幻想,120米烟囱防腐,寻求自在和梦念,个性强烈。给己以如沐东风的感觉,即使是年华已逝也会披发着青春的漂亮,120米烟囱防腐,脾气启搁活泼。轻易害臊,一直坚持着?女的纯挚,但对于自人的评价或者风闻较为迟钝,120米烟囱防腐。有很强的独立精力和丰盛的念象力,正在平常的生涯中轻易觉得厌倦。自在的做派和笨光乍隐的机智常会使己们赞叹不已,有时也会做出突收奇念的举措。没有愿输给别人,性情中有很强的隐秘的一里,器重隐公,缺少协作肉体,常会惹起费事。 有很强的正义感,所以不爱扯谎。至少是正在本人没有甚了解的话题上编制一番知足虚荣口而已。 一夕有心思压力非要道进去没有可。固然出有歹意,但正在别人望来那便是一类坏习性,属于用言语“滥宰无辜”。

射手座的男人兴味很少,涉猎很普遍,但生怕每一样皆不会研讨得很彻顶。正由于他的兴致狭泛,和良多人皆能够有接集,因而他会有很多不同类型的友朋,120米烟囱防腐。有的冤家伴他谈政乱,有的伴他挨球,有的和他一块做生意。他很忙,很少有射手座的男人会给己一类闲着出事做的感觉。尤其该他忽然对于什么新颖事物产生兴致的时侯,能够齐口投进佳一阵子,其它的事情齐被临时扔在脑后往了。射手座人的内口不是外表望上来那么悲观的,由于喜欢瞅的遥,轻易担心的事情也便少,在他们的字典里,即便如今佳,也不必定代表将来佳,有时分许多人感到很好的一个农做或者一个陪侣,他们很等闲的便会废弃掉,能够只是由于一个绝不止眼的小缘由。所以,那样的外在表示,就让人们感到他们不喜欢被某件事情或者某个人约束住,寻求自在的,出有压力的感觉。

相关的主题文章:

小区绿地岂可以调整规划名义先废后占?

千龙网--伊氏--Lady GaGa 激情荡漾白羊座

6月9日,上海电气集团董事长徐建国对中国证券报记者表示,公司

《叛逆的鲁鲁修》简介

我一直都在观察书记员的记录情况

请高手帮我解决一下这道C语言题目,谢谢!
s=fun(3)=3-fun(3-1)=3-fun(2)=3-2=1 所以选A.

请高手帮我解决一下这道C语言题目,谢谢!
a的地址传给n,while 把a的值变为 -1,因为while跳出循环的条件是0,而测试的是减一之前的a,所以a的值变为-1了,输出之前,a的值又被加为0,所以结果是 0

请高手帮我解决一下这道C语言题目,谢谢!
答案C

请高手帮我解决一下这道C语言题目,谢谢!
1、1234567 s1指针指向1,s2指针指向7 t=*s1++ s1指针指向2(t得到1的值 1)s1=*s2-- s2指针指向6(值发生改变1734567)s2=t; (值发生改变1734517)2、s1指针指向2,s2指针指向6 t=*s1++ s1指针指向3(t得到2的值 7)s1=*s2-- s2指针指向5(值发生改变1714517)s2=t; ...

谁能帮我解释一下这道c语言题目啊 不懂
1.转换说明符 a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)c 字符 d 有符号十进制整数 f 浮点数(包括float和doulbe)e(%E) 浮点数指数输出[e-(E-)记数法]g(%G) 浮点数不显无意义的零"0"i 有符号十进制整数(与%d相同)u 无符号十进制整数 o 八进制...

C语言高手帮忙做这三道题,要详解 谢谢拉!!
1、A while()是判断括号里的是真还是假,若表达式为0,就是假,若表达式非0,就是真。"!"是非逻辑运算符,简单说就是把非0变成0,把0变成1。。。"while(!x)”就是"(!x)"取真是进行循环,就是"!x"的值为非0时,就是"x"的值为0时。所以就是x==0.2、C 这题和上题一样,就是(m...

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

请各位C语言高手帮忙解决下面的问题。
printf("请输入15个数:\\n");for(i=0; i<15; i++){ scanf("%d", a+i);} printf("\\n请输入要查找的数:\\n");scanf("%d", &target);ret = binary_find(a, target, 0, 14);if(-1 != ret){ printf("\\n%d找到了, 它是a[%d]\\n", target, ret);} else { printf("\\...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

一道C语言编程问题,高手们来看看帮忙解答下
在1到B之间。{ \/\/判断公式左右两侧是不是相等,相等侧符合题目要求 if (c*c*(a*a+b*b) == a*a*b*b){ sum = a+b+c; \/\/判定成立,求和 printf("SUM = %d\\nA = %d\\nB = %d\\nC = %d\\n",sum,a,b,c);return 0;} } } } return 0;}输出结果为:...

相似回答