2016-12-24 108 views
0

我需要建立一个程序,从用户请求插入句子 喜欢的“Hello World”或任何输入一维数组二维数组按升序(C)

,比拿这句话和输入它一维数组里面

,并从那里到二维数组输入它会提出他的句子顺序:

Hello!! :) 
)Hello!! : 
:)Hello!! 
:)Hello!! 
! :)Hello! 
!! :)Hello 
o!! :)Hell 
lo!! :)Hel 
llo!! :)He 
ello!! :)H 

我做了大部分工作的完成,但我不能让它完全一样我是说 我TS送给我一句话减少,而不是增加

我的代码:

#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

您是否需要使用2d数组?通过使用单个长度为2P的数组,您可以实现与O(P)空间复杂度相同的效果。 –

回答

0

在代码中array1输入的所在外部循环的第一次运行期间是正确的,但对于第二次则在array1[1][0]=array2[1];插入值意味着array2的第二元素,以便使用此

array1[i][j] = array2[(j+P-i)%P]; 
0

array1[i][j] = array2[j+i];array1[i][j] = array2[(j+P-i)%P];