
C语言高手请进啊,高分哦,详细的解释!!! 20
1.若inta,b=9,d=8;表达式:a=(--b==d++)?d++:--b;则a的结果是()2.已知有定义:inta=1,b=2,c=3,d=4,m=1,n=1,k...
1.若int a,b=9,d=8;表达式:
a=(--b==d++)?d++:--b;则a的结果是( )
2.已知有定义:int a=1,b=2,c=3,d=4,m=1,n=1,k;
则语句:k=(m=a>b)&&(n=c>d);运算结束后,m的值为( ),n的值为( ),k的值为()
3.已知有定义:char *p[]={"Chinese","France","America","Russia"};则语句printf("%s",p[1]);printf("%c",p[1][2]);的输出结果分别是( ),( )
希望给出详细的解释过程啊,谢谢,给高分哦!!!! 展开
a=(--b==d++)?d++:--b;则a的结果是( )
2.已知有定义:int a=1,b=2,c=3,d=4,m=1,n=1,k;
则语句:k=(m=a>b)&&(n=c>d);运算结束后,m的值为( ),n的值为( ),k的值为()
3.已知有定义:char *p[]={"Chinese","France","America","Russia"};则语句printf("%s",p[1]);printf("%c",p[1][2]);的输出结果分别是( ),( )
希望给出详细的解释过程啊,谢谢,给高分哦!!!! 展开
3个回答
展开全部
1. a = 10
2. m = 0 n = 0 k = 0
3. France r
第一题 考 -- ++ 运算符优先级,以及 c?a:b 运算 翻译成中文
a= b(9)自减 判断b(8)是否等于d(8) d自加变成9 判断成功执行前面语句 d自加变成10
所以a=10
第二题 考 条件运算 判断成功 结果为1 不成功为0
a>b不成功 为0 m为0 c>d不成功 为0 n为0 k= 0&&0 结果为0
第三题 考 二维数组 以及 数组概念
数组的行列是从 0 开始的, 即 第一个元素为 p[0][0]
定义的数组为二维。所以 p[1] 是第二行的全部元素 即 France 另外它不是省略的 p[1][0],两者不同,前者是一行,后者是一个
另外,你可以从c语言的打印方式看出,前者 %s 是打印字符串 后者 %c 是打印字符(一个)
希望对你有帮助啊!
2. m = 0 n = 0 k = 0
3. France r
第一题 考 -- ++ 运算符优先级,以及 c?a:b 运算 翻译成中文
a= b(9)自减 判断b(8)是否等于d(8) d自加变成9 判断成功执行前面语句 d自加变成10
所以a=10
第二题 考 条件运算 判断成功 结果为1 不成功为0
a>b不成功 为0 m为0 c>d不成功 为0 n为0 k= 0&&0 结果为0
第三题 考 二维数组 以及 数组概念
数组的行列是从 0 开始的, 即 第一个元素为 p[0][0]
定义的数组为二维。所以 p[1] 是第二行的全部元素 即 France 另外它不是省略的 p[1][0],两者不同,前者是一行,后者是一个
另外,你可以从c语言的打印方式看出,前者 %s 是打印字符串 后者 %c 是打印字符(一个)
希望对你有帮助啊!
展开全部
1.
a的结果是9,因为(--b==d++)翻译过来就相当于(--9==8++),因为前一个是先减,后一个就后加的,所以运算后等价于(8==8,运算结果为1,此时b的值为8,d的值为9,因为那个判断的运算结果为1,所以就执行的是 ?后面的d++,因为是后减,此时的d值为9,所以返回的结果为9赋值给a,所以a的结果是9.
2.
m=0,n=1,k=0;
因为:(m=a>b),a值为1,b值为2,a>b返回0,m=0,所以(m=a>b)这个整体的值为0,因为后面的是&&,只要前一个判断为0后,后面的就不会再执行了,所以n的值还是保持不变,依然是n=1,再因为(m=a>b)值为0了,所以(m=a>b)&&(n=c>d)的值也为0了,即k=0.
3.
给出结果是:Francea
这个相当于是一个二维数组,下标从0开始,所以printf("%s",p[1]);这一句执行后输出数组下标为1的,即为数组第二行的字符串France,而后面一句printf("%c",p[1][2]);输出数组下标为1(第二行字符串)的字符串的下标为2的(第三个字符)a,所以输出结果为Francea.
a的结果是9,因为(--b==d++)翻译过来就相当于(--9==8++),因为前一个是先减,后一个就后加的,所以运算后等价于(8==8,运算结果为1,此时b的值为8,d的值为9,因为那个判断的运算结果为1,所以就执行的是 ?后面的d++,因为是后减,此时的d值为9,所以返回的结果为9赋值给a,所以a的结果是9.
2.
m=0,n=1,k=0;
因为:(m=a>b),a值为1,b值为2,a>b返回0,m=0,所以(m=a>b)这个整体的值为0,因为后面的是&&,只要前一个判断为0后,后面的就不会再执行了,所以n的值还是保持不变,依然是n=1,再因为(m=a>b)值为0了,所以(m=a>b)&&(n=c>d)的值也为0了,即k=0.
3.
给出结果是:Francea
这个相当于是一个二维数组,下标从0开始,所以printf("%s",p[1]);这一句执行后输出数组下标为1的,即为数组第二行的字符串France,而后面一句printf("%c",p[1][2]);输出数组下标为1(第二行字符串)的字符串的下标为2的(第三个字符)a,所以输出结果为Francea.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 --b=8 d++=8 所以--b==d++ 为真 取d++ d++=9 所以a=9
2 a>b 为假 m=false=0 0&&任何值=0 所以n=1 k=0
3 p是指针 p[0]=Chinese p[1]=France ... 第一个输出 France
p[1][2]指的是p[1]的第2+1个(0是第一个)字符 所以第二个输出 a
2 a>b 为假 m=false=0 0&&任何值=0 所以n=1 k=0
3 p是指针 p[0]=Chinese p[1]=France ... 第一个输出 France
p[1][2]指的是p[1]的第2+1个(0是第一个)字符 所以第二个输出 a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询