c语言高手请进,请用C语言帮小弟搞定它,不胜感激!!!如果全对,加分100!!!

编写一程序P777.C实现以下功能方阵的主对角线之上称为“上三角”,设计一个用于填充n(n从键盘读入,约定其取值范围为3~20)阶方阵的上三角区域的程序。填充的规则是:使... 编写一程序P777.C实现以下功能
  方阵的主对角线之上称为“上三角”,设计一个用于填充n(n从键盘读入,约定其取值范围为3~20)阶方阵的上三角区域的程序。填充的规则是:使用1,2,3……的自然数列,从左上角开始,按照顺时针方向螺旋填充。输出时要求每个数据宽度为4、右对齐。
  编程可用素材:printf("Please input n: ")、printf("\nResult is:\n")、printf("%4d"...、printf("\n")。
  程序的运行效果应类似地如图1所示,图1中的第1个6是从键盘输入的内容。
展开
 我来答
adoqq_bd
2012-06-07 · TA获得超过7051个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1816万
展开全部

#include <stdio.h>

#include <malloc.h>

int main()

{

int n,l;

int i,j,t;

printf("Please input n: ");

scanf("%d",&n);

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

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

{

mt[i]=(int*)malloc(sizeof(int)*n);

for(j=0;j<n;j++)

{

mt[i][j]=0;

}

}

l=n*(n+1)/2;

i=j=0;

for(t=1;t<=l;)

{

while(i<n&&j<n&&mt[i][j]==0)

{

mt[i][j++]=t++;

}

i++;j-=2;

while(i<n&&j>=0&&mt[i][j]==0)

{

mt[i++][j--]=t++;

}

i-=2;j++;

while(i>=0&&j>=0&&mt[i][j]==0)

{

mt[i--][j]=t++;

}

i++;j++;

}

printf("\nResult is:\n");

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

{

for(j=0;j<n;j++)

{

if(mt[i][j])

printf("%4d",mt[i][j]);

}

printf("\n");

}

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

free(mt[i]);

free(mt);

return 0;

}

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式