C语言如何编写旋转矩阵源代码
从1,2,3,.....10这10个数字中选6个全组合,然后实现中六保五结果类似下面01-04-05-06-07-0801-02-03-04-05-0701-02-03-...
从1,2,3,.....10这10个数字中选6个全组合,然后实现中六保五结果
类似下面
01-04-05-06-07-08
01-02-03-04-05-07
01-02-03-04-06-08
01-02-03-04-09-10
01-02-03-05-06-09
01-02-03-05-08-10
01-02-03-06-07-10
01-02-03-07-08-09
01-02-04-05-06-10
01-02-04-05-08-09
01-02-04-06-07-09
01-02-04-07-08-10
01-02-05-07-09-10
01-02-06-08-09-10
02-03-05-06-07-08
03-04-05-06-07-09
03-04-05-06-08-10
03-04-07-08-09-10
05-06-07-08-09-10
高手进来指导 展开
类似下面
01-04-05-06-07-08
01-02-03-04-05-07
01-02-03-04-06-08
01-02-03-04-09-10
01-02-03-05-06-09
01-02-03-05-08-10
01-02-03-06-07-10
01-02-03-07-08-09
01-02-04-05-06-10
01-02-04-05-08-09
01-02-04-06-07-09
01-02-04-07-08-10
01-02-05-07-09-10
01-02-06-08-09-10
02-03-05-06-07-08
03-04-05-06-07-09
03-04-05-06-08-10
03-04-07-08-09-10
05-06-07-08-09-10
高手进来指导 展开
2个回答
展开全部
这里以顺时针旋转90°为例:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 4
void main()
{
int i,j;
int a[N*N],b[N][N];//这里设置旋转为4*4的矩形,自己在这里改成其它的矩形
int *p=a;//用指针来指向这个一维数组。这样在旋转赋值的时候会轻松很多
srand(time(NULL));
for(i=0;i<N*N;i++)
{
a[i]=rand()%100;//随机生成0~99
printf("%d\t",a[i]);
if((i+1)%4==0)
printf("\n");
}
for(i=N-1;i>=0;i--) //旋转赋值,这里可修改旋转的方向和角度
for(j=0;j<N;j++,p++)
b[j][i]=*p;
printf("顺时针旋转90度后:\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
}
这种旋转矩形的,个人建议生成一维数组,用指针指向改数组,再用指针来赋值;也可生成二维数组,再定义数组指针来指向,这样稍麻烦一些些。
展开全部
#include <stdio.h>
void main()
{
int M;
int N;
int flag=0;
int num1=0;
int num2=1;
int i=0;
int j=0;
char str='A';
char Array[31][31];
printf("请输入矩阵的行M和矩阵的列N:");
scanf("%d%d",&M,&N);
Array[0][0]=str;
while(flag < M*N-1)
{
switch(num2%4)
{
case 1:
++j;
if(j == N-num1-1)
{
num2++;
}
break;
case 2:
++i;
if(i == M-num1-1)
{
num2++;
}
break;
case 3:
--j;
if(j == num1)
{
num2++;
}
break;
case 0:
--i;
if(i == num1+1)
{
num2++;
num1++;
}
break;
}
if(++str == 'Z'+1)
str='A';
Array[i][j]=str;
flag++;
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%c ",Array[i][j]);
}
printf("\n");
}
}
void main()
{
int M;
int N;
int flag=0;
int num1=0;
int num2=1;
int i=0;
int j=0;
char str='A';
char Array[31][31];
printf("请输入矩阵的行M和矩阵的列N:");
scanf("%d%d",&M,&N);
Array[0][0]=str;
while(flag < M*N-1)
{
switch(num2%4)
{
case 1:
++j;
if(j == N-num1-1)
{
num2++;
}
break;
case 2:
++i;
if(i == M-num1-1)
{
num2++;
}
break;
case 3:
--j;
if(j == num1)
{
num2++;
}
break;
case 0:
--i;
if(i == num1+1)
{
num2++;
num1++;
}
break;
}
if(++str == 'Z'+1)
str='A';
Array[i][j]=str;
flag++;
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%c ",Array[i][j]);
}
printf("\n");
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询