C语言读程序的5道题,有答案,泪求详细的解析啊

C语言读程序的5道题,有答案,泪求详细的解析啊高悬赏,求大神啊

因为"=="是判断等号两边的值是否相等的语句。

c语言中的“=”是赋值,“==”才是判断。

等号左边是x,它的值为3,右边是y+z,因为"+"的运算优先级大于"=="所以先执行y+z,得到表达式的值为1+0=1.

所以if(x==y+z)等价于判断 if(3==1),"3==1"的返回值自然是false

于是不执行if()语句下的语句,而是执行else中的printf("+++");

所以最后的输出是 +++


啊,是五道题啊...不是第五题...

没看清楚,不好意思。

等下补答


1. 前缀"--"和后缀"--"的区别:前缀返回的是值改变之后的值,后缀返回的是改变之前的值。

所以输出的一个是后缀的10,一个是前缀的9.

当然如果你再printf("%d,%d",x,y);就都输出9了。


2. 因为x,y,z都是整型变量,所以x/y的返回值是整除的值,也就是商。

10/3=3余1,而%相当于mod,也就是10对3取模。取模运算只能对整数进行。

在两个数都是正整数的时候就等于除法的余数,也就是1。

z=(x/y)是赋值语句返回的值就是改变后的z。


3. å¯ä»¥çœ‹åˆ°ï¼Œå®ƒprintf的是两个表达式的值。而且是两个逻辑表达式。

第一个是(a+b>c && b==c) â€œ&&”表示且,也就是当两个都为真的时候返回true,任意一个为假,返回false,可以看到a+b>c是true,而b==c是false,所以返回值是false,因为是以整数形式输出,那么就是true=1,false=0.

第二个式子是c>b>a,c语言中没有连比,这个式子会从左算到右。即(c>b)>a。

其中c>b是true,因为要和a这个整型变量比,所以会强制转int变成1,然后1>a返回值就是false了。


4. ä¹Ÿæ˜¯å‰ç½®å’ŒåŽç½®çš„问题。m=++i 返回的是i=i+1之后的值。也就是6,n=j--返回的是变化之前的值就是12.



温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-05
第一题:--x的意思是先计算x=x-1,再用x的值,x--的意思是先用x的值,在计算x=x-1;
第二题:x/y因为x和y有时int类型,所以结果也是int类型,10/3剩3余1,把1去掉,就是3了,10%3余了1;
第五题:x=y+z等效于3==(1+0),就是判断3核0相等码,不相等执行else
第四题:这题和第一题是一样的思路
第三题:相当于(3+4)>5&&4==5和(5>4)>3
其中4==5是假的,所以第一个为0 5>4是真的,所以值为1,等效于1>3,很明 显是家的,为0
望采纳
第2个回答  2016-07-05
// 程序一:
#include <stdio.h>
int main()
{
    int x=10,y=10;
    printf("%d,%d\n",x--,--y);// x先输出,再减1,所以结果为10。y先减1,再输出,所以结果为9。
}

// 程序二:
#include <stdio.h>
int main()
{
    int x=10,y=3,z;
    printf("%d,%d\n",z=(x/y),z=(x%y));// 除法运算,x和y都是int类型,所以在做除法时,取整,所以结果为3。求余数,10余3等1,所以结果为1。
}

// 程序三:
#include <stdio.h>
int main()
{
    int a=3,b=4,c=5;
    printf("%d,%d",a+b>c&&b==c,c>b>a);// 3加4大于5,正确,4等于5,错误,正确&&错误等于false,所以结果为0。5大于4,正确,数值类型为1,1>3,错误,所以结果为0。
}

// 程序四:
#include <stdio.h>
int main()
{
    int i,j,m,n;
    i=5;
    j=12;
    m=++i;// i先加1,再赋值给m,m等于6。
    n=j++;// j先赋值给n,再加1,n等于12。
    printf("%d,%d",m,n);// 所以输出结果为6,12。
}

// 程序五:
#include <stdio.h>
int main()
{
    int x=3,y=1,z=0;
    if(x==y+z)
    {
        printf("%%%");
    }
    else
    {
        printf("+++");// x不等于y加z,执行这条语句,所以结果为+++。
    }
}

// 程序六:
#include <stdio.h>
int main()
{
    int x=0,y=0;
    switch(x)
    {
        case 3;
        case -1:
            y=2;
            break;
        case 2:
            break;
    }
    printf("%d,%d",x,y);// x等于0,所以都不符合switch语句里的条件,所以结果为0,0。
}

相似回答