问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求N阶螺旋矩阵的思路 && 多行输入的问题

发布网友 发布时间:2022-04-26 10:43

我来回答

5个回答

热心网友 时间:2022-04-27 05:37

思路:
考虑走第一圈,分4段
记录第一段 开始的i0,j0 和 到达 的 i1
另3段走法 用 i0,j0,i1 描述

第二圈和后来圈的变化是i0 = i0+1;i1=i1-1;j0=j.

一共转 n/2 圈 就成功了。
每走一格,填入数值 v=v+1, v 初值1。

#include <stdio.h>
void main()
{
int x[25][25];
int ii,jj,n = 6;
int v=1;
int i0,i1,j0,j;

printf("Please enter n, n=3 to 25\n");
scanf("%d",&n);

i0=0; i1 = n -1;
for (j=0;j<=n/2;j++)
{
j0 = j;
for (ii=i0;ii<=i1;ii++) {x[j0][ii]=v; v++;};
for (jj=j0+1;jj<=i1;jj++) {x[jj][i1]=v; v++;};
for (ii=i1-1;ii >=i0;ii--) {x[i1][ii]=v; v++;};
for (jj=i1-1;jj >=i0+1;jj--) {x[jj][i0]=v; v++;};
i0 = i0+1;i1=i1-1;
}

for (jj=0;jj<n;jj++){
for (ii=0;ii<n;ii++) printf("%3d ",x[jj][ii]);
printf("\n");
}
}
====================
连续按两次回车键推出输入可以这样实现:
输入语句用 gets, 测字符串长度,长度0 则为回车,两次连续回车则退出,否则是数字,用sscanf 转字符串为数字。

void main(){

char str[20],str2[20];
int x;
Lab1:
printf("Enter value\n");
gets(&str[0]);
if ( strlen(str) == 0 ) {
gets(&str2[0]);
if (strlen(str2) == 0 ) {goto Lab2;} else { strcpy(str,str2);};
};
sscanf(&str[0],"%d",&x);
printf("x=%d\n",x);
goto Lab1;

Lab2:;
printf("finished\n");
}

你可以 把 x 赋给-> array[i]=x;i++;

热心网友 时间:2022-04-27 06:55

#include"stdio.h"
main()
{ int n,i,j,k,m,p,q1,q2,q3,q4,a[100][100];
scanf("%d",&n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
a[i][j]=0;
i=0;j=0;m=1;p=(int)(n/2.0+0.5);
for (k=1;k<=p;k++)
{ q1=j+(n-2*k+2);
for(j;j<q1;j++) {a[i][j]=m++; if(m>n*n)break;}
j--;
q2=i+(n-2*k+2);
for(i=i+1;i<q2;i++) {a[i][j]=m++; if(m>n*n)break;}
i--;
q3=j-(n-2*k+2);
for(j=j-1;j>q3;j--) {a[i][j]=m++; if(m>n*n)break;}
j++;
q4=i-(n-2*k+1);
for(i=i-1;i>q4;i--) {a[i][j]=m++; if(m>n*n)break;}
i++;
j++;
if(m>n*n)break;
}
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
我自己做了一下

热心网友 时间:2022-04-27 08:30

1.到我的空间来看看吧
2.用getchar来给int赋值是不行的。
你为啥一定要连续按两次确认退出循环?
一般来说,可以用EOF(Ctrl+Z)来结束输入。
while(scanf("%d",&array[i++])!=EOF);

热心网友 时间:2022-04-27 10:21

在这里说你也不清楚的

热心网友 时间:2022-04-27 12:29

想了半天也没想出来!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑音乐怎样保存到文件中怎样把歌曲放到文件夹里 电脑上如何把歌曲做成文件夹怎么把歌曲转化为文件 如何把音频加入到电脑文件夹上怎么把歌曲放到文件夹中 海参是不是吃多长时间以后可以不用在吃了 梦见一半黑色 电吉他买了音箱还要买效果器吗 有人去过资和信百货吗? 资和信百货企业理念 资和信百货家庭季家庭季简介 资和信是什么 梦见鱼在海上磞跳 螺旋矩阵pascal 求一个C语言程序设计:螺旋矩阵. c语言编程实现一个螺旋矩阵,例如输入 2 4 输出:1 2 3 4 8 7 6 5... 螺旋矩阵 求解 螺旋矩阵Pascal 帮帮忙 急求,用C语言实现N阶螺旋数字方阵,谢谢 螺旋矩阵C语言实现 在输出数字螺旋矩阵的时候遇到的问题 螺旋矩阵 流程图 C++螺旋矩阵 C语言螺旋矩阵 javascript输出一个数字有序组成的三角形 谁有螺旋矩阵的说明? 编写函数,实现螺旋矩阵的输出,要求顺时针完成,实在不会做,高人帮忙看看... 如何用JAVA实现螺旋矩阵 求助,用js怎么打印螺旋形矩阵 javascript利用二位数组打印n阶矩形螺旋方阵,如下 n=5 9 8 7_百度知... vivo手机声音孔进水了怎么办? 手机声音孔进水了怎么办(不想去店里修)? 梦见阴天海里好多鱼都乱跳? 一个5x5的螺旋矩阵如下所示,C语言编写程序输出N x N的螺旋矩阵 (N&lt;10... ...输入一个数然后打印相应的数螺旋矩阵(初学者) 做梦见大海好多鱼翻腾跳跃 梦到水里好多鱼,自己还跳到水里去,吓醒了? 梦见大海里跳出很多大鱼来可一条也没逮着 梦见水里有条很大的鱼跳了出来我抱走了 梦见海里的鱼在我身边活蹦乱跳 查询和取消手机号绑定过哪些手机软件? 梦见大海里大鱼活蹦乱跳预示着什么寓意? 梦见鱼从鱼缸里都跳出来了,什么意思? 我手机号码绑定过垃圾软件如何解除 电脑fn键在哪 键盘上的Fn键在哪? 怎么解绑手机号绑定的软件? fn键在那 泌园春长沙翻译及赏析 泌园春雪翻译 泌园春长沙 泌园春长沙的文体?