寒假也要好好学习啊,今天和TT一起来看看数字之间三角形和蛇形数组的写法吧。

先看看这个简单的,这是一个给定边长的等腰直角数字三角形。像这种还是比较简单的。

分析:两种方法;一种是用数组,还有一种是直接使用循环。这样的三角形既没对齐,又不需要过多地计算,所以使用第二种方法要简单一些。

【上代码】

#include<stdio.h>
void print(int n,int k)
{for (int i = 0; i < n; i++){if (k < 10){printf("0%d", k);k++;}else{printf("%d", k);k++;}}printf("\n");
}
int main()
{int k = 1;int n = 0;scanf("%d", &n);for (int i = n; i >=1; i--){print(i,k);k += i;}return 0;
}

值得注意的是:数字三角形一般都需要一个固定的长度来保持美观,比如数字是1,就要输出01或者 1(空格加1),写代码时要关注一下。

接下来是第二种比较花哨的,请看

这个也是同样的方法,就不过多赘述了。

#include<stdio.h>
void tri_print(int n)
{int out = 1;//要打印的数字,等会直接递增int j = 0;for (j = n; j > 0; j--){for (int k = 0; k < j - 1; k++)//打印空格{printf("  ");}for (int cou = 1; cou <= n - (j - 1); cou++)//计算剩下的位置,然后逐个打印数字{if (out < 10)printf("0%d", out);elseprintf("%d", out);out++;}printf("\n");//换行了}
}
int main()
{int n = 0;scanf("%d", &n);tri_print(n);return 0;
}

总结一下我的方法:由于数字都是连续递增的,所以我们先创建一个等于1的变量,每打印一次就把它加一,这样我们的关注点就只在于打印的格式了。按照格式我们需要把打印的内容分为两种:一种是空格或者别的间隔符,循环打印;第二种是数字,在前面的基础上也是循环打印即可。总之,还是比较简单的。剩下和样例对称的两种就不多说了。

接下来我们直接来看比较复杂的蛇型数组(9*9以内)

蛇形数组由于自身数字在旋转,有从左往右和从右往左、从上往下和从下往上四种递增方式。用第二种直接循环的方式显然不太适合。所以我们采用创建二维数组,直接在数组里面赋值,然后打印整个数组的方式。比较简单。

【c99以上编译器请忽略此条】难点之一就是创建二维数组,前面我给大家分享了malloc创建一维数组的方法。没想到这么快就要用它创建二维数组,都怪VS2022不支持变量定义数组长度!具体的我写在代码里面了,请往下看,

分析:这个数组的赋值是有规律的,好比是玩魔方,数字递增的方向有口诀是:右下左上。即从1开始先往右增加,然后往左>>>,所以我们完全可以把右下左上当成一个循环块,只要调整好循环条件,此题就迎刃而解了。

上代码

#include<stdio.h>
#include<stdlib.h>
int main()
{int n = 0;int count = 1;int tiao = 0;scanf("%d", &n);//创建(比较复杂但通俗易懂的malloc创建二维数组的方法)int** arr = (int**)malloc(n * sizeof(int*));//创建一个n行的指针数组for (int i = 0; i < n; i++){arr[i] = (int*)malloc(n * sizeof(int));//指针指向}//赋值for (int k = 0; k <= n / 2; k++){for (int i = 0+tiao; i < n-tiao; i++)//二维数组先行后列{arr[0+tiao][i] = count;//先往右count++;}for (int i = 1+tiao; i < n-tiao; i++){arr[i][n - 1-tiao] = count;//再往下count++;}for (int i = n - 2-tiao; i >= 0+tiao; i--){arr[n - 1-tiao][i] = count;//再往左count++;}for (int i = n - 2-tiao; i > 0+tiao; i--){arr[i][0+tiao] = count;//再往上count++;}tiao++;}//打印数组for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (arr[i][j] < 10)printf("  %d", arr[i][j]);elseprintf(" %d", arr[i][j]);}printf("\n");}free(arr);return 0;
}

希望与诸君共勉。

【C语言】数字直角三角形,数字矩阵,蛇形数组相关推荐

  1. c语言数组蛇形编程,C语言每天小练(二)——蛇形数组

    C语言每日小练(二)--蛇形数组 例:在n*n方阵里输入1,2,3,...,n*n,要求填成蛇形.例如n=4时方阵为: 10 11 12  1 9 16 13  2 8 15 14  3 7   6 ...

  2. C语言:实现蛇形数组

    首先我们先看一下蛇形数组是什么 那么我们要实现这个数组,怎么实现呢? 我们可以看到,它每一圈的数字都是依次加1的,那么就很容易想到用圈来实现,先算除要求的数组有多少圈,然后每一圈可以分为4个循环,两行 ...

  3. Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离

    Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...

  4. c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组

    湖北理工学院14本科C语言实验报告实验四 数组.doc 实验四 数 组实验课程名C语言程序设计专业班级 14电气工程2班 学号 201440210237 姓名 熊帆 实验时间 5.12-5.26 实验 ...

  5. C语言——选择法排序_数组

    C语言--选择法排序_数组 问题描述 对于任意给定的含有十个数字的一维数组,如何进行排序? 编程思想: 让a[0]最小,分别与a[1].a[2]-a[9]比较: 让a[1]最小,分别与a[2]-a[9 ...

  6. c++ 返回数组中最大的值_Swift语言必学秘技:数组里面的使用方法

    ​Swift语言必学秘技:数组里面的使用方法 这一期我们来说一下Swift语言里面数组的应用方法. 在Swift语言中,数组中可以放入任何类型的数据.这些数据包括整型,字符串,甚至是对象. 第一部分, ...

  7. C语言---数字迷宫

    /*************************************** title: C语言–数字迷宫 Date: 2016/7/10 Description: 1. 系统主要地图为固定模式 ...

  8. C语言系列(11)——数组(02)

    C语言系列(11)--数组应用 一.一维数组最值(最大值max.最小值mix) 二.一维数组逆序 三.一维数组中出现频率最高的元素 四.删除指定值. 五.新增元素 六.排序:将一个乱序数组,升序排序 ...

  9. 二维数组在c语言中的作用,C语言中的二维数组

    1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...

最新文章

  1. 【Android View事件分发机制】滑动冲突
  2. 【Python】青少年蓝桥杯_每日一题_5.27_画菱形
  3. 【三种解法实现】剑指 Offer 03. 数组中重复的数字
  4. kafka topic制定规则
  5. AttributeError: 'Model' object has no attribute 'target_tensors'
  6. JS 数组和 Java 数组的区别
  7. Windows游戏编程 - 简单的弹球窗口
  8. unins000.exe自动更新vscode出错解决办法
  9. 计算机桌面时间设置,桌面的时钟怎么设置
  10. 安卓桌面软件_iOS便签软件求推荐,有可以在iOS系统上使用的桌面便签软件吗 - 学显...
  11. ip地址与MAC地址 中的 组播
  12. tesseract验证码训练部骤
  13. Hello,Mr.J——唠唠叨叨年终总结
  14. 看板管理方法的6大作用
  15. 11.16上海交大PMP试题每日一题
  16. 手把手讲解51单片机最小系统焊接、流水灯(跑马灯)编写以及烧录
  17. 【万里征程——Windows App开发】开发准备
  18. SCI-Hub论文下载可用网址链接 - 实时更新
  19. [渝粤教育] 西南科技大学 信息法律法规 在线考试复习资料2021版(1)
  20. ASP.NET MVC实现Excel文件的上传下载

热门文章

  1. Android Remote Service
  2. 高清免费壁纸网站推荐
  3. Win10更新系统,VirtualBox与win10不兼容处理办法
  4. 设计模式——策略模式
  5. Java基础知识(八) Java平台与内存管理
  6. 【Tornado】| 扫码签到系统雏形及思路
  7. Android之提示Could not find com.android.support:appcompat-v7:25.3.1
  8. 【hive】hive如何将Jan 1, 2021 12:40:46 PM时间格式转换为指定格式
  9. Android 内外边距
  10. 【What if 系列】拖住那架飞机!