输入n*n的字符矩阵,把它旋转90度后输出??用c语言写,拜托了,急啊!!
3个回答
展开全部
#include <stdio.h>
#include <malloc.h>
void main()
{
char **p;
int i,j,n,a;
printf("请输入n*n矩阵的n值:");
scanf("%d",&n);
getchar();
p = (char**)malloc(n*sizeof(char*));
for(i=0;i<n;i++)
{
p[i] = (char*)malloc(n*sizeof(char));
for(j=0;j<n;j++)
{
p[i][j] = getchar();
}
getchar(); //换行输入,去掉回车符的影响
} //动态分配n*n的数组空间,并逐行输入字符串
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%c",p[i][j]);
}
printf("\n");
}
printf("请输入选择方向\n1.顺时针\n2.逆时针\nmake your choice! (1 or 2)\n");
scanf("%d",&a);
switch(a)
{
case 1:
printf("顺时针旋转90后的矩阵为: \n");
for(i=0; i<n; ++i)
{
for(j=0; j<n; ++j)
printf("%c ", p[n-1-j][i]);
printf("\n");
}
break;
case 2:
printf("逆时针旋转90后的矩阵为: \n");
for(i=0; i<n; ++i)
{
for(j=0; j<n; ++j)
printf("%c ",p[j][n-1-i] );
printf("\n");
}
break;
default:
printf("input error!\n");
break;
}
}
如上已测试运行成功,
输入 2
ab
cd
1 //选择1顺时针输出
ca
bd
2 //选择2逆时针输出
bd
ac
中间有空格模式的话,再输入过程修改成空格输入即可。
#include <malloc.h>
void main()
{
char **p;
int i,j,n,a;
printf("请输入n*n矩阵的n值:");
scanf("%d",&n);
getchar();
p = (char**)malloc(n*sizeof(char*));
for(i=0;i<n;i++)
{
p[i] = (char*)malloc(n*sizeof(char));
for(j=0;j<n;j++)
{
p[i][j] = getchar();
}
getchar(); //换行输入,去掉回车符的影响
} //动态分配n*n的数组空间,并逐行输入字符串
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%c",p[i][j]);
}
printf("\n");
}
printf("请输入选择方向\n1.顺时针\n2.逆时针\nmake your choice! (1 or 2)\n");
scanf("%d",&a);
switch(a)
{
case 1:
printf("顺时针旋转90后的矩阵为: \n");
for(i=0; i<n; ++i)
{
for(j=0; j<n; ++j)
printf("%c ", p[n-1-j][i]);
printf("\n");
}
break;
case 2:
printf("逆时针旋转90后的矩阵为: \n");
for(i=0; i<n; ++i)
{
for(j=0; j<n; ++j)
printf("%c ",p[j][n-1-i] );
printf("\n");
}
break;
default:
printf("input error!\n");
break;
}
}
如上已测试运行成功,
输入 2
ab
cd
1 //选择1顺时针输出
ca
bd
2 //选择2逆时针输出
bd
ac
中间有空格模式的话,再输入过程修改成空格输入即可。
2012-01-31
展开全部
#include <stdio.h>
#define N 4
int main()
{
int i, j;
int m[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&m[i][j]);
printf("输入的矩阵为: \n");
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%d ", m[i][j]);
printf("\n");
}
printf("旋转后的矩阵为: \n");
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%d ", m[j][N-1-i]);
printf("\n");
}
return 0;
}
#define N 4
int main()
{
int i, j;
int m[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&m[i][j]);
printf("输入的矩阵为: \n");
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%d ", m[i][j]);
printf("\n");
}
printf("旋转后的矩阵为: \n");
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%d ", m[j][N-1-i]);
printf("\n");
}
return 0;
}
更多追问追答
追问
额,我说的是字符矩阵啊,是字符啊!!!
追答
呵呵,疏忽了,用这个吧:
#include
#define N 4
int main()
{
int i, j;
char m[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
m[i][j]=getchar();
fflush(stdin);
}
printf("输入的矩阵为: \n");
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%c ", m[i][j]);
printf("\n");
}
printf("旋转后的矩阵为: \n");
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%c ", m[j][N-1-i]);
printf("\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个其实是打了5行,没有赋值的,其中1,3行没有内容,所以是空格。要想没有空格,if(i%2==1){printf("\n");}只要偶数行,就没有空格。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询