请使用此代码检查问题 当我在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;
}
答案 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;
}