C语言题 求运行结果 给出解释. 下列程序段执行后的输出结果是( )

下列程序段执行后的输出结果是( )
int k=-4,a=3,b=2,c=1;
printf("%d/n",k<a?k:c<b?c:a);
A.1 B.2
C.3 D.4
PS: 要给出解释..... PS: 要给出解释.....

k<a?k:c<b?c:a

判断 k<a 成立 返回k 否则判断 c<b 成立返回c 否则返回a
因为k<a 成立 所以返回 -4
答案D应该是-4 而不是4
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-14
这段代码最后输出的是-4,(PS:/n应该是\n)
a?b:c语句的意思是 1.假如a(逻辑表达式或0、1)的逻辑值为0,则语句的值为b(b为表达式则取最后的值)2.假如a的逻辑值为1,则取c的值。
在你的语句中a对应的为“k<a”,-4<3为真,即逻辑表达式值为0,所以取第一个冒号后面的k值-4
不懂可追问本回答被提问者采纳
第2个回答  2013-10-14
int k=-4,a=3,b=2,c=1;
printf("%d\n",k<a?k:c<b?c:a);

输出:-4

k<a 成立,所以 k<a?k:... 的值就是k(值是-4)。

本回答被网友采纳
第3个回答  2013-10-14
选a~~ 条件运算符,右结合性,,k<a成立继续 -4<1?是,所以得c值1,明白吗?追问

不明白,c<b?c:a已经得1,k<a?k:c<b?c:a 已经变为 k<a?k:1 还和c有啥关系?.

题目是: 程序段执行后的输出结果,没问c值的多少...

追答

对啊,问题就是问最终表达式的值,,而分析下去表达式的值也就是c的值啊 好吧,虽然我答案和上面的高人的不一样,,我还是说说我的想法吧 k=-4<a(a=3)成立,所以k<a?k:c=-4 再继续-4<b(b=2)?c:a成立,所以取c的值为结果

追问

c<b?c:a已经得1,k<a?k:c<b?c:a 已经变为 k<a?k:1 你是怎么分析下去,表达式的值也就是c的值呢,

我就喜欢问问,和别人答案不一样的;不管对错,能学到东西

追答

首先谢谢你的鼓励 自右向左k<a?k:c,k<a成立吧?!所以相应的取k的值(但如果k不<a就选c的值,,这个知道吗?)左半边的就是-4,,,再继续-4<b?c:a同理。。。。\(^o^)/~

追问

既然结合方向是自右向左,应该先算c<b?c:a,再算k<a?k: ......才是对的吧

追答

e....朋友,,右向左。。。。。最好好好看看这一节的知识吧,,能助于你理解

第4个回答  2013-10-14
k=-4吗,感觉这题有问题阿

c语言,以下程序运行后的输出结果是
因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10

C语言题 求解释 以下程序段的执行结果是()。 double x;x=218.82631...
输出结果应该为2.19e+002 "%-6.2e\\n"- 表示右对齐 6表示整数部分保留6位,不足6位,则按实际位数输出 .2表示保留2位小数 e表示按指数形式输出

C语言,写出下列程序运行结果及解释。
\/\/(!x,x||y,x&&y) 相当于(!12,12||8,12&&8)\/\/ !x:当x=0,!x就等于 1 就是对x 取非 \/\/ ||:两边只要有一个为真,结果就为真 \/\/ &&:两边都为真,结果才为真,否则为0 } 输出结果: 0 1 1

在C语言中,下列语句的输出结果是( )。 printf("%d\\n", strlen("ATS\\n...
这句话的意思是:%d,strlen 是函数库的一个函数,要来求字符串的长度(不包括\\0).整句话就是以十进制格式输出"ATS\\n012\\1\\\\"的长度是9

C语言有关问题。以下程序的输出结果是:(并且给出解释)
输出结果:c language 解释:if LETTER if(c>='a'&&c<='z') c=c-32;else if(c>='A'&&c<='Z') c=c+32;endif 这段是指当LETTER的值为真(非零)时执行第一个程序段if(c>='a'&&c<='z') c=c-32;否则执行第二个程序段if(c>='A'&&c<='Z') c=c+32;这里宏定义#define...

全国计算机等级考试二级C语言历年试题及答案
程序运行后的输出结果是 A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\\n",a,b,c):printf("###a=%d,b=%d,c=%d\\n",a,b,c);程序输出的结果是 A)***a...

C语言,关于程序运行结果的解释
这个程序的意思是,从键盘输入一行字符,照原样显示出来。当输入!后,程序执行结束。执行的原理关键在这一行:while(putchar(c=getchar())!='!')首先:c=getchar(),字符变量c从缓冲区获得一个字符 然后:putchar(c=getchar()),将字符打印出来 最后:putchar(c=getchar())!='!',判断字符是...

求:C语言程序设计试卷及答案一份
17.在位运算中,操作数每右移一位,其结果相当于()(本题分值:1分) 【正确答案】B A.操作数乘以2 B.操作数除以2 C.操作数除以16 D.操作数乘以16 18.在当前盘当前目录下有一个文件A.BAT,其内容为 CD \\ MD \\XYZ\\AB\\B\\C CD XYZ\\AB\\B 在正确执行上述文件后,接着执行下列命令时,不会发生错...

...以下程序运行后的输出结果是( ) #include...
2. 其次,我们需要注意到`printf`函数在C语言中用于输出,但是在这个程序中并没有调用`printf`函数,所以我们需要添加调用`printf`的代码来输出结果。修改后的程序段如下:```c include int main() { char a = 65, b = 66; \/\/ 声明变量a和b为char类型,并初始化为ASCII码对应的值 \/\/ 输出...

有关C语言的几道题,求答案及解释
1、题目倒数第二句改为“输入字符A后”的话,ch的值是'A',getchar()是从标准输入流读取一个字符,并返回这个字符,赋值给了ch,所以ch的值就是你输入的那个字符,你输入A,它的值就是A 2、暂时还不是很明白,C和D都能在win-tc下编译通过,值都存在变量str3,和str4里面,可以通过printf("...

相似回答