关于C语言中,字符串和数组的一道题

#include<stdio.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"};for(k=1;k<3;k++)pri... #include<stdio.h>
main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"};
for(k=1;k<3;k++)
printf("%s",&w[k][k])

}
输出结果是:FGH KL
不知道为什么?我输进程序,显示有错误!唉,不知道是题目错还是怎么样,请问大神们怎么看?求详解!衷心感谢!
展开
 我来答
memberwin
2013-03-18 · TA获得超过3903个赞
知道大有可为答主
回答量:1000
采纳率:100%
帮助的人:503万
展开全部
w赋值后的内存布局
0 1 2 3 4 5 6 7 8 9
0 A B C D \0
1 E F G H \0
2 I J K L \0
3 M N O P \0
循环过程
k=1 输出字符串的起始位置为 &w[1][1]对应到 F所在的地址,所以输出FGH,遇到\0后字符串结束
k=2时字符串起始位置为&w[2][2],对应到K的地址,所以输出KL, 遇到\0字符串结束
k=3时不满足k<3, for循环结束
所以结果就是FGHKL
程序错误的原因是k没有声明, for循环后没有分号,
修改后程序如下:
#include <stdio.h>
int main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"};
int k;
for(k=1;k<3;k++)
printf("%s",&w[k][k]);
return 0;
}
陈宗权8d804
2013-03-18 · TA获得超过3766个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:955万
展开全部
%s表示要输出指定地址所在的一个字符串中从指定地址开始的内容。
for循环k=1到k<3共执行两次:
当k=1时输出&w[1][1]所在的字符串“EFGH”中&w[1][1]也就是F开始的内容FGH

当k=2时输出&w[2][2]所在的字符串“IJKL”中&w[2][2]也就是K开始的内容KL

所以最后的输出为FGHKL
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牵着蜗牛sanbu
2013-03-18 · TA获得超过117个赞
知道答主
回答量:40
采纳率:0%
帮助的人:24.8万
展开全部
你的k没有定义是什么类型,还有落写了一个分号,正确的是:
#include<stdio.h>
main()
{
int k;
char w[][10]={"ABCD","EFGH","IJKL","MNOP"};
for(k=1;k<3;k++)
printf("%s",&w[k][k]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友48c7979ba
2013-03-18 · TA获得超过455个赞
知道小有建树答主
回答量:572
采纳率:0%
帮助的人:85.1万
展开全部
printf("%s",&w[k][k])

去掉地址符&,&w[k][k]取的是w[k][k]的地址而不是它值,当然出错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花心小林z
2013-03-18
知道答主
回答量:5
采纳率:0%
帮助的人:7427
展开全部
#include <stdio.h>
#include <stdlib.h>
main()
{
int k;
char w[][10]={"ABCD","EFGH","IJKL","MNOP"};
for(k=1;k<3;k++)
printf("%s",&w[k][k]);
system("pause");
} 改成这样就可以了 K没有定义
还有在devc++中运行要在头文件前加上include "stdlib.h" 结尾加上system("pause")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式