蛇形方阵详细分析【经典之得一看哈】_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 蛇形方阵详细分析【经典之得一看哈】

蛇形方阵详细分析【经典之得一看哈】

 2010/11/19 9:18:31  qinweiping  http://qinweiping.javaeye.com  我要评论(0)
  • 摘要:1.#include<stdio.h>voidmain(){inti,j,a[100][100],n,k;printf("请输入列数n=");scanf("%d",&n);k=1;for(i=1;i<=n;i++)for(j=1;j<=i;j++)//每一层输入i个元素,故j<=i.{a[i+1-j][j]=k;//在内循环,并且与j有关。//第i层的第一个数的横坐标为i+1-j,然后随着j++而横坐标渐渐斜上输入,//数组第二个下标以j作为基值
  • 标签:蛇形方阵详细分析

1.#include<stdio.h>

void main()

{

?????? int i,j,a[100][100],n,k;

?????? printf("请输入列数n= ");

?????? scanf("%d",&n);

?????? k=1;

?????? for(i=1;i<=n;i++)

????????????? for(j=1;j<=i;j++) //每一层输入 i 个元素,故j<=i.

????????????? {

?????? ?????? a[i+1-j][j] = k; //在内循环,并且与j有关。

//i层的第一个数的横坐标为i+1-j,然后随着j++而横坐标渐渐斜上输入,

???????????????????? ?? //数组第二个下标以 j 作为基值,随着j++纵坐标向右延伸。

???????????????????? k++;

????????????? }

????????????? for(i=1;i<=n;i++)

????????????? {

???????????????????? printf("\n");

???????????????????? for(j=1;j<=n+1-i;j++) //每一行输出 n+1-i 个元素

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

????????????? }

?????? printf("\n");

}

2 代码:与上一个程序相比只仅仅改变了:a[i+1-j][j] > a[j][i+1-j].

#include<stdio.h>

void main()

{

?????? int i,j,a[100][100],n,k;

?????? printf("请输入列数n= ");?

??scanf("%d",&n);

k=1;

?????? for(i=1;i<=n;i++)

????????????? for(j=1;j<=i;j++)

????????????? {

???????????????????? if(i%2==0)?? a[i+1-j][j]=k;

????????????? ??? else ????????a[j][i+1-j]=k; ??????????

???????????????????? k++;

????????????? }

????????????? for(i=1;i<=n;i++)

????????????? {

???????????????????? printf("\n");

???????????????????? for(j=1;j<=n+1-i;j++)

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

????????????? }?

???? printf("\n");?

?}

?

5、代码:

#include<stdio.h>

void main()

{

?????? int i,j,a[100][100],n,k;

?????? printf("请输入列数n= ");

?????? scanf("%d",&n);

?????? k=1;

//输出上三角

?????? for(i=1;i<=n;i++)

????????????? for(j=1;j<=i;j++)

????????????? {

???????????????????? if(i%2==0)? a[i+1-j][j]=k;

????????????? ??? else??????? a[j][i+1-j]=k;??????????

???????????????????? k++;

????????????? }

//输出下三角

???? for(i=n+1;i<2*n;i++)

????????????? ?for(j=1;j<=2*n-i;j++)

?????? ?? {

???????????????????? if(i%2==0)? a[n+1-j][i-n+j]=k; ??//n+1在这里是定值了

????????????? ??? else??????? a[i-n+j][n+1-j]=k;???????

???????????????????? k++;

????????????? }

?

????????????? for(i=1;i<=n;i++)

????????????? {

???????????????????? printf("\n");

???????????????????? for(j=1;j<=n;j++)

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

????????????? }

?????? printf("\n");

}

?

?

6、代码:只是把上面5代码中两个地方交换位置

#include<stdio.h>

void main()

{

?????? int i,j,a[100][100],n,k;

?????? printf("请输入列数n= ");

?????? scanf("%d",&n);

?????? k=1;

?????? for(i=1;i<=n;i++)

????????????? for(j=1;j<=i;j++)

????????????? {

???????????????????? if(i%2==0)? a[j][i+1-j]=k;

????????????? ??? else??????? a[i+1-j][j]=k;?????????

???????????????????? k++;

????????????? }

???? for(i=n+1;i<2*n;i++)

????????????? ?for(j=1;j<=2*n-i;j++)

?????? ?? {

???????????????????? if(i%2==0)?? a[i-n+j][n+1-j]=k;

????????????? ??? else???????? a[n+1-j][i-n+j]=k;??????

???????????????????? k++;

????????????? }

????????????? for(i=1;i<=n;i++)

????????????? {

???????????????????? printf("\n");

???????????????????? for(j=1;j<=n;j++)

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

????????????? }

?????? printf("\n");

}

?

?

?

?

?

?

?

?

#include<stdio.h>

void main()

{

?????? int i,j,a[100][100],n,k;

?????? printf("请输入列数n= ");

?????? scanf("%d",&n);

?????? k=1;

?????? for(i=1;i<=n;i++)

????????????? for(j=1;j<=i;j++)??????????

{

???????????????????? a[j][i+1-j]=k;????????

?????? k++;

????????????? }

????????????? for(i=1;i<=n;i++)

????????????? {

???????????????????? printf("\n");

???????????????????? for(j=1;j<=n+1-i;j++) //每一行输出 n+1-i 个元素

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

????????????? }

?????? printf("\n");

}

3、代码:与上一个相比加了一个奇偶数层的if判断,这正好就是“拐点”的关键!

#include<stdio.h>

void main()

{

?????? int i,j,a[100][100],n,k;

?????? printf("请输入列数n= ");

?????? scanf("%d",&n);

?????? k=1;

?????? for(i=1;i<=n;i++)

????????????? for(j=1;j<=i;j++)

????????????? {

???????????????????? if(i%2==0)? a[j][i+1-j]=k;

????????????? ??? else ???????a[i+1-j][j]=k;??????????

???????????????????? k++;

????????????? }

????????????? for(i=1;i<=n;i++)

????????????? {

???????????????????? printf("\n");

???????????????????? for(j=1;j<=n+1-i;j++)

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

????????????? }

?????? printf("\n");

}

?

?

?

4、代码:与上一相比只是交换了一下位置。

发表评论
用户名: 匿名