【问题标题】:input 1D array into 2D array in increasing order (C)将一维数组按升序输入二维数组 (C)
【发布时间】:2016-12-24 15:43:48
【问题描述】:

我需要构建一个程序,请求用户插入一个句子 比如“Hello World”之类的

然后将这句话输入到一维数组中

然后从那里将其输入到 2D 数组中,该数组将按以下顺序呈现他的句子:

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');
    }

}

我的错误在哪里?我该如何解决? 谢谢。

【问题讨论】:

  • 您需要使用二维数组吗?您可以通过使用长度为 2P 的单个数组来实现 O(P) 空间复杂度。

标签: c arrays matrix


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2017-01-03
      • 1970-01-01
      • 2013-11-23
      相关资源
      最近更新 更多