C语言:从键盘输入n(正整数n<10),在屏幕上显示从左上角起由外向里的右旋方阵,怎么写?

 我来答
White_MouseYBZ
2020-07-02 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6624万
展开全部

代码文本:

#include "stdio.h"

#include <stdlib.h>

int main(int argc,char *argv[]){

int **p,*q,n,i,t,x,m;

printf("Enter n(int 10>n>0)...\nn=");

if(scanf("%d",&n)==1 && n>0 && n<10){

q=(int *)malloc(sizeof(int)*n*n);

if(q && (p=(int **)malloc(sizeof(int *)*n))){

for(i=0;i<n;p[i]=q+n*i++);

for(m=n>>1,t=x=1;t<=m;t++){//形成顺旋

for(i=t-1;i<n-t;i++)//左至右

p[t-1][i]=x++;

for(i=t-1;i<n-t;i++)//上至下

p[i][n-t]=x++;

for(i=n-t;i>=t;i--)//右至左

p[n-t][i]=x++;

for(i=n-t;i>=t;i--)//下至上

p[i][t-1]=x++;

}

if(n&1)//奇数时处理最后一个数

p[t=n>>1][t]=x;

for(i=0;i<n;i++){

for(t=0;t<n;printf("%3d",p[i][t++]));

putchar('\n');

}

free(q);

free(p);

}

else{

printf("Application memory failure, exit...\n");

if(q)

free(q);

if(p)

free(p);

}

}

else

printf("Input error, exit...\n");

return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式