打印2D字符阵列的镜像

时间:2015-06-05 23:11:14

标签: c arrays multidimensional-array

请使用此代码检查问题 当我在mycodeschool IDE上运行时,它显示编译错误。 问题陈述是 问题陈述 给定一个二维数组,如果镜像沿阵列的一侧放置,则打印其镜像。

输入 第一行输入将包含一个数字T =测试用例数。每个测试用例将在由空格分隔的单个行上包含两个正整数n和m(1 <= n,m <= 50)。接下来,n行将包含一个正好为m个字符的字符串。下一行将包含字符'V'或'H'。如果字符为V,则镜像沿最右侧列垂直放置。如果字符为H,则镜像沿最底部的行水平放置。

输出 对于每个测试用例,打印n * m镜像 - n行,每行包含m个字符。输出每个测试用例后打印一个额外的空行。

示例输入 2 3 3 ABC 高清 GHI V 3 4 1234 5678 9876 H 样本输出 CBA 美联储 洲际

9876 5678 1234

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    char a[10][10];
    int i,j,t,m,n;
    char s;
    scanf("%d\n",&t);
    for(j=0;j<t;j++)
    {
    scanf("%d%d\n",&m,&n);

    for(i=0;i<m;i++)
    {
        scanf("%s",&a[i]);
    }

    scanf("\n%c",&s);
    if(s=='V')//for image along rightmost vertical line
    {
        for(i=0;i<m;i++)
        {
            strrev(a[i]);
        }

    }  
    else if(s=='H')//for image along lowermost horizontal line
    {
        int t=0;
        int b=m-1;
        while(t<b)
            {
                char *temp = (char *)malloc((strlen(a[t]) + 1) *   sizeof(char));//temporary variable to swap
                strcpy(temp, a[t]);
                strcpy(a[t], a[b]);
                strcpy(a[b], temp);
                free(temp);
                t++;
                b--;
            }
        }

for(i=0;i<m;i++)
{
    printf("%s\n",a[i]);
}
printf("\n");}
return 0;
}

1 个答案:

答案 0 :(得分:0)

我认为输入字符数组n行正好有m个字符存在问题...这是我的代码........

int main()
{
    int tt,i,j,r,c,t,ch;
    char a[20][20];
    scanf("%d",&t);

    for(tt=1;tt<=t;t++)
    {
        scanf("%d\t%d",&r,&c);

        for(i=0;i<r;i++)
        {
            for(j=0;j<c;j++)
            {
                scanf("%c",&a[i][j]);
            }
            printf("\n");
        }
        scanf("%c",&ch);

        if(ch=='V')
        {
            for(i=0;i<r;i++)
            {
                for(j=(c-1);j>=0;j--)
                {
                    printf("%d",a[i][j]);
                    printf("\t");
                }
                printf("\n");
            }
        }
        else if(ch=='H')
        { 
            for(i=(r-1);i>=0;i--)
            {
                for(j=0;j<c;j++)
                {
                    printf("%d",a[i][j]);
                    printf("\t");
                }
                printf("\n");
            }
        }
        else
            printf("error");
    }
    printf("");
    getchar();
    return 0;
}