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、代码:与上一相比只是交换了一下位置。