小何不想敲代码


私信TA

用户名:dotcpp0610006

访问量:161

签 名:

等  级
排  名 9259
经  验 1104
参赛次数 0
文章发表 1
年  龄 25
在职情况 在职
学  校 合肥学院
专  业

  自我简介:

解题思路:(1)观察蛇形矩阵存在两个规律:①行和列都存在一个递增关系;②每行首数据可以用一个递增值加上一个值得到。

              (2)可以先把每行首元素输出,在处理首元素后面的数据,第一行首元素处理则是首元素+2+递增变量来处理;第二行同理,只不过2是一个递增变量,也                就是加3再加递增变量;

              (3)第一层循环用一个变量递减,用来刷新每行元素个数判断

              (4)外层循环处理行,内存循环处理列;内层循环用一个if判断,输出\n来换行


注意事项:①内层变量记得清零,在进循环处理

               ②内存循环从每行第二个数开始

参考代码:


#include <stdio.h>


int main(void)

{

    int x,y,N;                                                      //x-列控制;y-行控制;N-输入数据

    int printf_num,first_num=1;                       //printf_num-输出的单个数据;first_num-每行的首个数据

    scanf("%d",&N);

    int N_flag=N;                                             //N_falg-用来刷新每行减少输出的数

    int add_flag=0;                                          //行递增

    int flag;                                                      //内层循环,递增变量,控制每次加的数值

    int z=2;                                                      //第一行,第一个到第二个元素变化的差值,行列转换规律都需要用它处理


    for(y=1;y<=N;y++)

    {

        first_num+=add_flag;

        printf_num=first_num;

        flag=0;

        printf("%d ",first_num);

        for(x=2;x<=N_flag;x++)

        {

                printf_num+=z+flag;

                printf("%d", printf_num);

                    if (x==N_flag)

                    {

                        printf("\n");

                    }

                    else {

                        printf(" ");

                    }

                flag++;    

                }

        add_flag++;

        N_flag--;

        z++;

    }      

}



 

0.0分

1 人评分

  评论区