按升序将1D数组输入2D数组(C)

时间:2016-12-24 15:43:49

标签: c arrays matrix

我需要构建一个程序,要求用户插入一个句子 比如“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');
    }

}

我的错误在哪里?以及我如何解决它? 感谢。

2 个答案:

答案 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];