c语言的题目,求详细解释啊,在线等!
main(){charstr[3][6]={"china","japan","korea"};str[1][5]=''printf("%s\n",str[1]);}求答案...
main()
{char str[3][6]={"china","japan","korea"};
str[1][5]=' '
printf("%s\n",str[1]);
} 求答案和解释! 展开
{char str[3][6]={"china","japan","korea"};
str[1][5]=' '
printf("%s\n",str[1]);
} 求答案和解释! 展开
4个回答
展开全部
答案是 japan korea
理由:
str[3][6]是一个二维数组,可以看成是 以str[6]为元素的数组,大小为3。
str[1] 就是 字符串“japan”
str[1][5]就是"japan"的第六个字符,也就是“\0”,即字符串结束符
赋值语句把这个位置的字符改成了空格‘ ’ ,所以当读取字符串str[1]的时候,计算机一直要读到结束符“\0”为止,因此会一直把下一个字符串的内容也读出来。
在内存中存放的顺序就是
原来是: china\0
japan\0
korea\0
赋值以后:china\0
japan
korea\0
输出str[1]的时候从j开始读取内容一直到\0,因此得出结果
japan korea
理由:
str[3][6]是一个二维数组,可以看成是 以str[6]为元素的数组,大小为3。
str[1] 就是 字符串“japan”
str[1][5]就是"japan"的第六个字符,也就是“\0”,即字符串结束符
赋值语句把这个位置的字符改成了空格‘ ’ ,所以当读取字符串str[1]的时候,计算机一直要读到结束符“\0”为止,因此会一直把下一个字符串的内容也读出来。
在内存中存放的顺序就是
原来是: china\0
japan\0
korea\0
赋值以后:china\0
japan
korea\0
输出str[1]的时候从j开始读取内容一直到\0,因此得出结果
japan korea
展开全部
str[3][6]={"china","japan","korea"};
str如下
0 1 2 3 4 5
0 c h i n a \0
1 j a p a n \0
2 k o r e a \0
str[1][5]的值本来是'\0',是一个字符串的结尾的标志,被你修改成空格(空格不是'\0'),所以输出str[1]就是japan这一行的时候,函数找不到字符串结尾标志,就一直读下去,直到找到korea后面的'\0',输出结束
str如下
0 1 2 3 4 5
0 c h i n a \0
1 j a p a n \0
2 k o r e a \0
str[1][5]的值本来是'\0',是一个字符串的结尾的标志,被你修改成空格(空格不是'\0'),所以输出str[1]就是japan这一行的时候,函数找不到字符串结尾标志,就一直读下去,直到找到korea后面的'\0',输出结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出内容为:japan korea
解释:原来str[1][5]的值为'\0',也就是字符串的结束符。加上这个语句str[1][5]=' ',就把为'\0'改成了' ',这样输出的就是japan korea了。如果没有str[1][5]=' '这个语句,则printf("%s\n",str[1]);输出的内容为:japan
解释:原来str[1][5]的值为'\0',也就是字符串的结束符。加上这个语句str[1][5]=' ',就把为'\0'改成了' ',这样输出的就是japan korea了。如果没有str[1][5]=' '这个语句,则printf("%s\n",str[1]);输出的内容为:japan
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的解析得太对了,太详细了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询