蛇形填数
来源:互联网 发布:罗马全面战争 for mac 编辑:程序博客网 时间:2024/05/22 18:23
/*本程序解决了以下几个问题:
1、利用for循环控制蛇形走向,本程序的关键所在
2、输入n,输出控制是便不能用n,n在执行过程中会发生变化,最后如何保持输出时是n次
3、绕行次数问题,偶数循环一半次,奇数循环2*n+1次*/
#include<stdio.h>
int main(void)
{
int m,n,i,j,k;
int x,y;
while(scanf("%d",&n)!=EOF)
{
int a[100][100]={0},sum=1;
x=n;
if(n%2==0)
y=n/2; //n为偶,循环n/2次
else
y=n/2+1; //n为奇,循环y次,或者y=(n+1)/2
for(m=0,k=1;k<=y;m++,n--,k++) //刚开始为k<=n-2,此处控制循环次数错误,不能用n作为标准,因为k会每次变化,n又自减,相当于两方面变化
{
for(i=m,j=n-1;i<n;i++)
a[i][j]=sum++;
for(i=n-1,j=n-2;j>=m;j--)
a[i][j]=sum++;
for(i=n-2,j=m;i>=m;i--)
a[i][j]=sum++;
for(i=m,j=m+1;j<n-1;j++)
a[i][j]=sum++;
}
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
printf(" %d\t",a[i][j]);
printf("\n\n\n");
}
}
return 0;
1、利用for循环控制蛇形走向,本程序的关键所在
2、输入n,输出控制是便不能用n,n在执行过程中会发生变化,最后如何保持输出时是n次
3、绕行次数问题,偶数循环一半次,奇数循环2*n+1次*/
#include<stdio.h>
int main(void)
{
int m,n,i,j,k;
int x,y;
while(scanf("%d",&n)!=EOF)
{
int a[100][100]={0},sum=1;
x=n;
if(n%2==0)
y=n/2; //n为偶,循环n/2次
else
y=n/2+1; //n为奇,循环y次,或者y=(n+1)/2
for(m=0,k=1;k<=y;m++,n--,k++) //刚开始为k<=n-2,此处控制循环次数错误,不能用n作为标准,因为k会每次变化,n又自减,相当于两方面变化
{
for(i=m,j=n-1;i<n;i++)
a[i][j]=sum++;
for(i=n-1,j=n-2;j>=m;j--)
a[i][j]=sum++;
for(i=n-2,j=m;i>=m;i--)
a[i][j]=sum++;
for(i=m,j=m+1;j<n-1;j++)
a[i][j]=sum++;
}
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
printf(" %d\t",a[i][j]);
printf("\n\n\n");
}
}
return 0;
}
- 蛇形填数
- 算法:蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数问题
- 蛇形填数
- C++蛇形填数
- 蛇形填数
- 蛇形填 数
- 蛇形填数
- NYOJ - 蛇形填数
- 蛇形填数
- 各种蛇形填数
- 蛇形填数
- 蛇形填数
- ACM-蛇形填数
- 蛇形填数
- SQL中的相关表的同时删除
- C语言学习笔记6
- 【实用技术】“位于XDB的服务器localhost要求用户名和密码”解决办法
- OpenGL进阶(十六) - GLSL纹理(Texture)
- jsp代码页面窗口固定最大化
- 蛇形填数
- apache ftpClient 文件上传
- android、ios与服务器端php使用rsa加密解密通讯
- 导入安卓工程时出现红色叹号的几种解决办法。
- 直接拿来用!最火的Android开源项目(完结篇)
- 基于java的SHA1加密算法
- jasmine入门
- Lucene、Nutch、Solr
- volatile关键字作用