解题思路:(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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复