求救:C语言 编程高手进!!
发布网友
发布时间:2023-08-25 12:23
我来回答
共2个回答
热心网友
时间:2024-02-12 04:12
基本上,这需要先定义一个二维数组(矩阵)
matrix[10][10]
然后获得用户输入n(n<10),可以用这样的方式获得
int n;
printf("Please input n(n<%d): ", 10);
scanf("%d", &n);
那到n之后我们开始填充matrix,过程是这样
先把起点定在1,1位置,然后先向右填,填到1,n处,转弯,向下填,到了n,n处,再转为向上。。。。这样一直旋转的填下去,直到填入的数字是n*n,这也就意味着填写结束了
最后,输出matrix就是了。
先试试吧,有问题再补充上来。
其实代码偶已经做好了,只是不想简单的授人以鱼,希望你能体会偶的这番用心^_^
加油!
----------------------------------------------------------------------
这么快就做出来啦,不错嘛^_^
下面是我的,这里分享给大家
-----------------------------------------------------
#include <stdio.h>
//Up,Down,Left,Right
#define U 'U'
#define D 'D'
#define L 'L'
#define R 'R'
const int MAX = 10;
int main(int argc, char *argv[]){
int matrix[MAX][MAX];
int n, x, y, k;
char direction; //Up,Down,Left,Right
// get input
printf("Please input n(n<%d): ", MAX+1);
scanf("%d", &n);
// invalid input
if(n>MAX || n<1) return -1;
// initializations
for (y=0;y<n;y++)
for (x=0;x<n;x++)
matrix[x][y]=0;
for (y=n;y<MAX;y++)
for (x=n;x<MAX;x++)
matrix[x][y]=-1;
x=y=k=0;
direction = R;
// build the matrix
while(1){
if (matrix[x][y]==0){
matrix[x][y]=++k;
switch (direction){
case U:y--;break;
case D:y++;break;
case L:x--;break;
case R:x++;break;
default:break;
}
}else{
switch (direction){
case U:direction=R;y++;x++;break;
case D:direction=L;y--;x--;break;
case L:direction=U;y--;x++;break;
case R:direction=D;y++;x--;break;
default:break;
}
}
// finished
if (k==n*n) break;
}
// output
for (y=0;y<n;y++){
for (x=0;x<n;x++)
printf("%3d", matrix[x][y]);
printf("\n");
}
// exit with no error
return 0;
}
-----------------------------------------------------
此外,对于楼主一边说“大家可以把自己的做法写下来哈,大家一起交流一哈!”一边并未给出自己做法的举动,偶感到十分费解。。。。
热心网友
时间:2024-02-12 04:12
// It is so easy. Just use five FOR sentences with high efficiency and simplest.
void fun(int **p, unsigned char n) // create a screw matrix with n
{ // return by pointer p
unsigned char k, i, l = (n+1)/2;
int c = 1;
p[l-1][l-1] = n * n;
for(k=0; k<l; k++, n-=2)
{
for(i=0;i<n-1;i++) p[k][k+i]=c++;
for(i=0;i<n-1;i++) p[k+i][k+n-1]=c++;
for(i=n-1;i>0;i--) p[k+n-1][k+i]=c++;
for(i=n-1;i>0;i--) p[k+i][k]=c++;
}
} // end of fun
// You can write a main function to test it, which is so simple even without using one IF sentence.