在C语言中,下面程序的执行结果是 ( )
#define SUM(X) X*X+2
main()
{
int a=2;int i=1,j=1;
a+=SUM(i+j)/SUM(i+j);
printf("%d\n",a);
}
解释原因 说详细点 我是c语言菜鸟!谢谢了!
a=a+SUM(i+j)/SUM(i+j);
=a+i+j*i+j+2/i+j*i+j+2
为什么是这样啊?
因为
#define SUM(X) X*X+2
所以
SUM(i+j)=i+j*i+j+2 //这行的i+j相当于前面的X
i+j不是等于X吗? 不就是2*2+2了吗? 而你的 是1+1*1+1+2?你的是对的?为什么是这样啊?
追答#define SUM(X) X*X+2
叫宏定义,在编译的时候执行,就是进行简单的替换,不会计算的,也就是不会把i+j的结果2掳出来的。
哦哦 知道了 谢了啊
本回答被提问者采纳请问,下面程序的运行结果是( ).#include <stdio.h> main() { int a...
do是先执行,所以a = 2 ,b = 9;while(b--<0),因为是后置--,所以先判断b<0,为假,所以退出循环。b再自减,b=8 所以 a=2,b=8
下列程序执行的结果是() a=1;b=2;c=3; while(a<b<c) { t=a;a=b;b=...
然后说下C语言逻辑值的表示:真为1,假为0。所以a<b的值为1,于是a<b<c化为1<c即真。最后t=a;a=b;b=t;是实现两个数相互交换的典型,所以a=2,b=1,而c--结果为2 所以最后输出结果为2,1,2.
C语言中,下列程序执行后的输入结果是___ #define MA(x) x*(x-1) m...
define MAX(X) X,在编译时候,只做简单替换。比如说 在main()函数中,int x=MAX(a+b)*MAX(a+b),c编译器在编译的时候,将MAX替换,变成a+b*a+b。
下面程序段的运行结果是( )。 char *p="abcdefgh"; p+=3; printf("%d...
这个函数返回的值是目标串的地址,也就是p啦,那么p是个指针怎么算地址的长度呢,其实就是strlen("ABCD")啦,为什么,计算机知道的啦,因为p指向了“ABCD”首地址了,而c语言中默认在ABCD后加个结束符的,所以答案就是4了。
C语言问题:下面程序的运行结果是
看看程序逐步运行跟踪结果:i=1;[i=1] i<5成立,开始循环: i%2为真, printf输出[*], printf累计输出[*#]i++;[i=2] i<5成立,继续循环: i%2为假, continue;i++;[i=3] i<5成立,继续循环: i%2为真, 累计输出[*#*], 累计输出[*#*#]i++;[i=4] i<5成立,继续循环: i%2为...
C语言的一道题:下面程序段的运行结果是:__ for (a=1,i=-1;-1<=i<1...
C语言中 -1<=i<1 这样的语句是无法达到你要的效果的,对于这个句子,C语言是这样处理的:(-1<=i)<1 (1)这样的话,-1<=i为真,所以这个表达式的值为1,也就是说(1)这个表达式等价于(1<1)然后这个式子为假,所以不会进入该循环,所以i没有发生变化,也不会输出i,所以答案为-1 如...
用C语言编写的程序,执行结果是多少?
程序输出的结果为a=11,b=13。程序的执行过程:首先定义了a的值为12,b的值为12,然后执行我们的输出语句,我们输出的不是a和b的值,而是表达式“--a”和表达式“++b”的值,因为前缀的“++”和“--”都是先进行加一或者减一的操作,再输出。所以说“--a”输出的结果为11,“++b”输出的...
在C语言中,下列程序段的输出结果是( ) int x=0,y=0; switch(x==y)
选择B 真值在C语言中与1对等, 所以进入case 1分支
C语言,以下程序的运行结果是?
define sw(x,y) {x^=y;y^=x;x^=y;} 这个宏的作用就是在不借助第三变量的情况下,交换x和y的值,^是位异或运算符,x^=y相当于x=x^y,具体什么是位异或运算,可以在网上轻意找到相关教材。b=01代表8进制数的1,1在任何进制计数系统中都相等。
C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
a是字符串"nice to meet you!"的首地址,strlen(a)是计算字符串a的长度结果为17。那么a+strlen(a)\/2就是a + 17 \/ 2就是a + 8,意思是从a后面第8个位置开始接受拷贝。strcpy(a+8,"you"); 就相当于把 "you" 接到a后面第8个位置 结果就是nice to you。答案D ...