C语言两道题!!求大神解答 5

以下语句的输出结果是(A)printf("%d\n",strlen("\tc\065\xff\n"));A)5B)14C)8为什么有五个字符啊?33.以下程序段的执行结果... 以下语句的输出结果是( A )
printf("%d\n",strlen("\tc\065\xff\n"));
A) 5 B) 14 C) 8
为什么有五个字符啊?
33.以下程序段的执行结果是( A )。
int x=5;
do{printf("%2d\n",x--);}
while(!x);
A) 5 B) 无任何输出
C) 4 D) 陷入死循环
求解释!!!!
展开
 我来答
风雷九州
2014-12-31 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:420万
展开全部
32、
考察点:字符串以'\0'结束
再来看"\tc\065\xff\n"这个字符串,第一个字符是'\t',第二个字符是'c',第三个字符是'\0',后面的就不看了,第三个字符就是结束符'\0',那么获取的长度就慧明是前面二个字符的长度。
第一个字符是转义字符'\t',制表符也就是TAB健,占用4个字节,所以总共就是4+1=5个字节啦。

33、
考察点:do while循环体;C语言使歼碧明用0代表逻辑假,非0代表逻辑假;氏告x++是x自增前的结果,++x是x子增后的结果。
int x=5;
do{
printf("%2d\n",x--); //先打印x自减前的结果,就是 5,然后x再自减,即x=4
}
while(!x);//x=4,非0是逻辑真,然后!取反运算符,逻辑真取反就是逻辑假
while的条件是假,所以不循环了,只打印一个 5
更多追问追答
追问
第一题那个确定吗?字符串只要到\0就是结束了吗?
追答
饿,好像错了

\065是8进制数字,十进制的话就是53
\xff是16进制数字,十进制的话就是255

第一个字符是'\t'
第二个字符是'c'
第三个字符是\065(十进制53)的ASCII码字符,ASCII码53代表字符'5'
第四个字符是\xff(十进制255)的ASCII码字符,255不是一个合法的ASCII码,无字符
第五个字符是‘\n’

打印出来就是
(制表符)c5 (无效字符)(回车符)

这样算起来的5个字符,上面说错了,网友采纳的那个也是错的。
448150220
2014-12-31 · 超过30用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:34.6万
展开全部
第一题 \t \0 \x \n不是字符,是转义字符,实际上只有c65ff是字符羡裂此,所以5个
第二题 先执行一次do循环体的输出语句源李,x--表示x先参加运算再减1,所以输出5,到了while(!x)的时候,x = 4 , !x =0 ,于是不再执兄迅行。
追问
那如果是--x呢?有什么区别
追答
--x 是参加运算前先加x+1
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
终结者zy
2014-12-31 · 超过26用户采纳过TA的回答
知道答主
回答量:277
采纳率:0%
帮助的人:63.2万
展开全部
33. x--是先参与运算在自减,这里就直接打印链衡5,然后while(!4)这是!4=0不满足循环条件,不再执行do,上模唤唯面的我没看明白,%d是格式旦培化一个整数,strlen是取了后面引号中的字串长度。\t,\n,\x,\0貌似是有意义的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
likehei
2014-12-31 · TA获得超过940个赞
知道小有建树答主
回答量:875
采纳率:33%
帮助的人:661万
展开全部
1. \t,\0,\x,\n转义字符
    str="    c";// \t 4个字符
2. 0为false 非零是true
    第一次输出后(x--,蚂拆先输出才执行闷困枣--),跳尺改出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式