请教一道C语言题,请问答案是什么,还有怎么做的?

2024-11-02 08:33:51
推荐回答(6个)
回答1:

首先你这个程序少个头文件#include
猜测运行结果是abcdabcdabcdabcdbcdabcdabcdcdabcdd
说明原因:
楼只要知道char x[4][4];代表一个字符串数组 这个数组x只能放4个字符串,每个字符串只能放4个字符;
for(i=0;i<4;i++)
strcpy(x[i],ch);
这两步是赋值,就是将x[i],(每个字符串)都赋予一个ch(abcd),此时x是abcdabcdabcdabcd
for(i=0;i<4;i++)
printf("%s",&x[i][i]);
这两不是打印注意%s形式打印 要是%c 结果就是abcd了 这样的话是按着&x[i][i]的地址向后取
x[0][0]是首地址全取abcdabcdabcdabcd
x[1][1]是第1*4+1=5位置,取bcdabcdabcd
x[2][2]是第2*4+2=10位置,取cdabcd
x[3][3]是第3*4+3=15位置,取d
所以打印完应该是abcdabcdabcdabcd+bcdabcdabcd +cdabcd+d再加上/n换行
哪里不懂可以追问

回答2:

首先,printf("%s",x[i][i]);这里不要取地址符;
我没调试,按程序看是将abcd分别付给x[4][4]的每一行,即:
abcd
abcd
abcd
abcd
结果输出abcd换行

回答3:

strcpy(x[i],ch);是指将字符串ch复制给字符串x[i],一共循环了4次,所以x[4][4]是abcdabcdabcdabcd,
当i=0时,从x[0][0]开始输出,所以前面16个字符为abcdabcdabcdabcd,
当i=1时从x[1][1]开始输出,接下来的字符为bcdabcdabcd,
当从x[2][2]即字符开始输出时,接下来的字符为cdabcd,
而从x[3][3]开始时即从字符d开始时输出字符为d
所以最后的答案是
abcdabcdabcdabcdbcdabcdabcdcdabcdd
这个已经在vc上试过了的,绝对经得住考验的~~

回答4:

通过复制了4次字符串

回答5:

楼主试试这样
#include
#include
void main()
{char ch[]="abcd",x[4][4];int i;
for(i=0;i<4;i++)
strcpy(x[i],ch);
for(i=0;i<4;i++)
{printf("%c",x[i][i]);
printf("\n");}
}
可以看看字符串结束符\0,和printf中%s与%c,
具体你给出的那个可以这样认为:内存中有4个连续的abcd,分别对应x00,X01,X02……;s表示字符串输出,没有\0是不会停止的 ,而且你的程序中那样用是不安全的

回答6:

abcdabcdabcdabcdbcdabcdabcdcdabcdd