设计层叠方阵(C语言)

    xiaoxiao2023-03-24  6

    题目要求如下图:

    设计程序如下:

    #include<stdio.h> int main() { int a,m,i,j,k; printf("a="); scanf("%d",&a); printf("the number of line is:"); scanf("%d",&m); int z[m][m]; z[0][0]=a; for(i=0;i<m-1;i++)      //!!!!! { z[0][i+1]=++a; for(j=1;j<=i+1;j++) { z[j][i+1]=++a; //printf("z[%d][%d]=%d\n",j,i+1,a); } for(k=i;k>=0;k--) { z[j-1][k]=++a; //printf("z[%d][%d]=%d\n",j-1,k,a); } for(i=0;i<m;i++)         //输出数组  { for(j=0;j<m;j++) printf("%4d",z[i][j]); printf("\n"); } return 0;  } 

    按照题目要求,a为初值即z[0][0]的值,共m层,a和m都由运行者手动输入。每一层数字由顺时针方向递增,并且下一层第一个数由本层最后一个数加1得到,因此可以设置一个变量a,记录当时的数值,下一次只要加1就行。每层分3种位置,即第一个数,下面的一列数字,以及最后一列数往前一行。可以使用二重循环给数组赋值,最后打印输出。

    本人第一次出错的地方在循环的语句内变量i(控制每层的变量)的范围,开始写的是i<m。出现了下图这样的结果:

    程序中j和k的循环结构内各有1处注释掉的printf语句,那是用来寻找错误用的,在编写程序时如果自己寻找不到错误可以通过这种方法查找对比,这样可以节省时间,更快的发现问题所在。

    最后附上在Linux虚拟机上程序运行的结果:

    祝大家学习愉快,共同进步!!╰(*°▽°*)╯

    转载请注明原文地址: https://ju.6miu.com/read-1200888.html
    最新回复(0)