69,373
社区成员
发帖
与我相关
我的任务
分享
代码如下:
#include <stdio.h>
#include <stdlib.h>
//int arr[10][2]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
//int arr[10][1]={1,2,3,4,5,6,7,8,9,10}; //one column
//int arr[1][10]={9,8,7,6,5,4,3,2,1,0}; //one row
//int arr[3][2]={1,2,3,4,5,6}; //Rectangular matrix
int arr[2][3]={1,2,3,4,5,6};
void matrix_printf(int start_r,int end_r,int start_c,int end_c)
{
if( start_r > end_r || start_c > end_c )
return;
int r = start_r,c =start_c;
while( c <= end_c )
{
printf("%d\t",arr[r][c]);
c++;
}
if( start_r == end_r ) //如果只有一行
return;
c--; //列下标不自减会越界
r++; //去除拐点
while( r <= end_r )
{
printf("%d\t",arr[r][c]);
r++;
}
if( start_c == end_c ) //如果只有一列
return;
r--;//行下标不自减会越界
c--;//去除拐点
while( c >= start_c )
{
printf("%d\t",arr[r][c]);
c--;
}
c++;//行下标不自加会越界
r--;//去除拐点
while( r > start_r )
{
printf("%d\t",arr[r][c]);
r--;
}
putchar(10);
matrix_printf(++start_r,--end_r,++start_c,--end_c);
}
void main()
{
matrix_printf(0,1,0,2);
return;
}
#include <iostream>
#define MaxEdge 10
using namespace std;
void f(int start_edge)
{
int Matrix[MaxEdge][MaxEdge];
int curt_edge;
curt_edge=start_edge;
int max_value=start_edge*start_edge;
int cur_row=1,cur_col=1;
int cur_value=1;
while (curt_edge>0)
{
int ctr_right=curt_edge;
int ctr_down=curt_edge-1;
int ctr_left=curt_edge-1;
int ctr_up=curt_edge-2;
//write right side
while (ctr_right>0)
{
Matrix[cur_row][cur_col]=cur_value;
cur_col++;
cur_value++;
ctr_right--;
}
//chage to down
cur_row++;
cur_col--;
//write down side
while (ctr_down>0)
{
Matrix[cur_row][cur_col]=cur_value;
cur_row++;
cur_value++;
ctr_down--;
}
//chage to left
cur_col--;
cur_row--;
//write left side
while (ctr_left>0)
{
Matrix[cur_row][cur_col]=cur_value;
cur_col--;
cur_value++;
ctr_left--;
}
//chage to up
cur_row--;
cur_col++;
//write up side
while (ctr_up>0)
{
Matrix[cur_row][cur_col]=cur_value;
cur_row--;
cur_value++;
ctr_up--;
}
//chage to right
cur_col++;
cur_row++;
if (cur_value>max_value)
{
break;
}
curt_edge-=2;
}
//show matrix
int i,j;
for (i=1;i<=start_edge;i++)
{
for (j=1;j<=start_edge;j++)
{
cout<<Matrix[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
int start_edge;
cin>>start_edge;
while (start_edge>0)
{
f(start_edge);
cin>>start_edge;
}
return 0;
}
#include <stdio.h>
#include <string.h>
int a[20][20];
void Translate(int n);
void Output(int n);
int main()
{
int n;
while (printf("Please Input a Num: "),scanf("%d",&n)!=EOF)
{
Translate(n);
Output(n);
printf("\n");
}
return 0;
}
void Translate(int n)
{
int i,j,count=0;
memset(a,0,sizeof(a));
a[i=0][j=0]=++count;
while(count<n*n)
{
while (j+1<n&&a[i][j+1]==0)
{
a[i][++j]=++count;
}
while (i+1<n&&a[i+1][j]==0)
{
a[++i][j]=++count;
}
while (j-1>=0&&a[i][j-1]==0)
{
a[i][--j]=++count;
}
while(i-1>=0&&a[i-1][j]==0)
{
a[--i][j]=++count;
}
}
}
void Output(int n)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
#include<stdio.h>
void fill_matrix(int a[][100], int n);
void print_matrix(int a[][100], int n);
int main()
{
int matrix[100][100];
int n;
printf("n=");
scanf("%d", &n);
if(n<=0 || n>100)
{
printf("out of range, n is a positive integer not bigger than 100\n");
return 1;
}
fill_matrix(matrix, n);
print_matrix(matrix, n);
return 0;
}
void fill_matrix(int a[][100], int n)
{
int i, j, l;
j = 1; //填充的数字
l = 0; //标示正在处理第几层,依次0,1,2……
while(1)
{
//n=1和n=2特殊情况,直接填充进去
if(n==1)
{
a[l][l] = j;
break;
}
else if(n==2)
{
a[l][l] = j + 0;
a[l][l+1] = j + 1;
a[l+1][l+1] = j + 2;
a[l+1][l] = j + 3;
break;
}
else
{
for(i=0; i<n; i++, j++)
a[l][l+i] = j;
for(i=1; i<n; i++, j++)
a[l+i][l+n-1] = j;
for(i=n-2; i>-1; i--, j++)
a[l+n-1][l+i] = j;
for(i=n-2; i>0; i--, j++)
a[l+i][l] = j;
n=n-2;
l++;
}
}
}
void print_matrix(int a[][100], int n)
{
int i, j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[100][100];
int temp=1;
for(int i=0;i<n;i++)
{
for(int j=i;j<n-i;j++)
{
a[i][j] = temp++;
}
for(int k=i+1;k<n-i;k++)
{
a[k][j-1] = temp++;
}
for(int x=j-2;x>=i;x--)
{
a[k-1][x] = temp++;
}
for(int y=k-2;y>i;y--)
{
a[y][x+1] = temp++;
}
}
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[100][100];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin >>a[i][j];
for(i=0;i<n;i++)
{
for(int j=i;j<n-i;j++)
{
cout<<a[i][j]<<" ";
}
for(int k=i+1;k<n-i;k++)
{
cout<<a[k][j-1]<<" ";
}
for(int x=j-2;x>=i;x--)
{
cout<<a[k-1][x]<<" ";
}
for(int y=k-2;y>i;y--)
{
cout<<a[y][x+1]<<" ";
}
}
cout<<endl;
return 0;
}
#include <stdio.h>
#include <malloc.h>
void helix(int start, int d, int n, int **arr, int line)
{
int i, j;
if(d <= 0)
{
if(line % 2 != 0)
arr[start][start] = ++n;
return;
}
i = start;
for(j = start; j < start + d; ++j)
arr[i][j] = ++n;
for(; i < start + d; ++i)
arr[i][j] = ++n;
for(; j > start; --j)
arr[i][j] = ++n;
for(; i > start; --i)
arr[i][j] = ++n;
d -= 2;
helix(++start, d, n, arr, line);
}
int main()
{
int n = 4, i, j;
int **array;
array = (int**)malloc(sizeof(int*)*n);
for(i = 0; i < n; ++i)
array[i] = (int*)malloc(sizeof(int)*n);
helix(0, n-1, 0, array, n);
for(i = 0; i < n; ++i)
{
for(j = 0; j < n; ++j)
printf("%5d", array[i][j]);
printf("\n");
}
for(i = 0; i < n; ++i)
free(array[i]);
free(array);
return 0;
}
#include <stdio.h>
void go(int n);
void fun(int frist,int num,int row);
int a[100][100];
int sum;
int main(){
int n;
scanf("%d",&n);
getchar();
sum=n*n;
go(n);
getchar();
return 0;
}
void fun(int frist,int num,int row){
int i=frist;
for(;i<row;i++)a[frist][i] = ++num;
if(num==sum)return;
for(i=frist+1;i<row;i++)a[i][row-1] = ++num;
for(i=row-2;i>=frist;i--)a[row-1][i] = ++num;
for(i=row-2;i>=frist+1;i--)a[i][frist] = ++num;
if(num != sum)fun(frist+1,num,row-1);
}
void go(int n){
fun(0, 0, n);
int i=0, j=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf(" %3d ",a[i][j]);
}
puts("");
}
}
int array[N][N];
static s,n;
int i,j;
for(s = 0,n= N-1;s <= n;s++,n--) {
for(i = 0,j = 0;i <= n;i++)
printf("%d",array[j][i]);
for(;j<=n;j++)
printf("%d",array[j][i]);
for(;i>=s;i--)
printf("%d",array[j][i]);
for(;j>=s;j--)
printf("%d",array[j][i]);
}