我需要构建一个程序,要求用户插入一个句子 比如“Hello World”或其他什么
然后把这个句子输入1D数组
并从那里输入二维数组,按顺序显示他的句子:
Hello!! :)
)Hello!! :
:)Hello!!
:)Hello!!
! :)Hello!
!! :)Hello
o!! :)Hell
lo!! :)Hel
llo!! :)He
ello!! :)H
我完成了大部分工作,但我不能完全像这样做 我的意思是 它给我的句子减少而不是增加
我的代码:
#include <stdio.h>
#define P 10
int main(int argc, const char * argv[])
{
char array1[P][P];
char array2[P];
int i, j;
for (i = 0; i<P; i++) //fill the array with the chars.
{
scanf("%c", &array2[i]);
}
for (i=0 ; i<P ; i++)
{
for (j=0 ; j<P ; j++)
{
array1[i][j] = array2[j+i];
}
}
for (i=0 ; i<P ; i++)
{
for (j=0 ; j<P ; j++)
{
printf("%c", array1[i][j]);
}
putchar('\n');
}
}
我的错误在哪里?以及我如何解决它? 感谢。
答案 0 :(得分:0)
array1[i][j] = array2[j+i];
应为array1[i][j] = array2[(j+P-i)%P];
答案 1 :(得分:0)
在输入array1
进行首次运行外循环时的代码是正确的,但是第二次在array1[1][0]=array2[1];
处插入值意味着array2
的第二个元素,所以请使用此代码
array1[i][j] = array2[(j+P-i)%P];