关于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
不知道为什么?我输进程序,显示有错误!唉,不知道是题目错还是怎么样,请问大神们怎么看?求详解!衷心感谢! 展开
main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"};
for(k=1;k<3;k++)
printf("%s",&w[k][k])
}
输出结果是:FGH KL
不知道为什么?我输进程序,显示有错误!唉,不知道是题目错还是怎么样,请问大神们怎么看?求详解!衷心感谢! 展开
12个回答
展开全部
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;
}
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;
}
展开全部
%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
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
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的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]);
}
#include<stdio.h>
main()
{
int k;
char w[][10]={"ABCD","EFGH","IJKL","MNOP"};
for(k=1;k<3;k++)
printf("%s",&w[k][k]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%s",&w[k][k])
去掉地址符&,&w[k][k]取的是w[k][k]的地址而不是它值,当然出错了
去掉地址符&,&w[k][k]取的是w[k][k]的地址而不是它值,当然出错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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")
#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")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询