当前课程知识点:C语言程序设计(上) > 数组(二) > 5.6 二维数组的输入输出 > 5.6 二维数组的输入与输出
大家好
我们接下来看一下
二维数组的输入与输出
其实前面我们在
讨论
二维数组的初始化定义
实际上呢
已经
用到了它的输入和输出
这里边呢
我们为什么还要再接着说它呢
大家一看这个矩阵
就是一个很有意思的矩阵
我们看
以对角线为界
上边的数据是一样的
都是1
下边的数据尽管不一样
但是也是很有意思的
很对称
以斜杠为界
2 3 4 5
也是非常有规律的数据
那这一块我们是想说什么呢
我们生成一个数组的时候
其实
我们是有很多种方式
把数据放在这个数组里的
前边我们讨论的是说
我们可以用scanf给它赋值
我们还可以说把
成批的数据用初始化的方式
给它放进去
那我们
这是在说第三种方式
我要生成一个数组
把数据放进去
是通过它自动的
算法
把数据放到这个数组里边的
每一个元素里
这样
我们就生成了这个数组
当然
我要输出这个数组的时候
跟以前的二维数组没什么
两样
也就是说
两重循环把这个
矩阵输出
就可以了
那么我们先看
怎么生成这个数组呢
看就是说
它的数据的规律
斜杠为界
全是1
那它表达了什么呢
我们拿任意一行看一下
比如说我们拿这一行
这四个1
是怎么
给谁的位置上都是1呢
我们说
讨论数组的问题
有一个关键词
不可以忽略
位置
那么
我们先看这第一个1
它的位置是谁呢
它的位置是不是是
下标为
下标为1的这个行
下标为1的这个列
下标为1的行 1的列
那就是说
行下标和列下标是相等的
那我们再看下一个
行下标没有变
列下标变成2了
行下标没有变
列下标变成3了
列下标变成4了
如果我们数组再大
变成5了 变成6了
往后变
那么
列下标
最小的下标就是跟行下标相等的
那我们
看出来规律了吗
是不是可以说
这四个1是怎么得来的呢
行下标的值是
小于等于
列下标的值
全部赋值的是1
那么
这一行符合这个
条件
每一行
应该都是符合这个条件的
行下标的
值
小于等于列下标的值
那么就给这个元素里边
自动赋值的是1
那这就程序可以做了
不用我们scanf敲进去
也不用初始化进去啦
下半边是什么样的一个规律呢
尽管不是
1 2
这样的东西
但是是有规律的数据
这个规律我们看一下
先看这个4
怎么得来的呢
4是0 1 2 3
下标为3的这个行上
下标为0的这个列
3行0列的
这个位置上的数据是4
我们再看下边呢
行没有变
行还是
3行1列 3行2列
如果
数组大
那是3行3列 3行4列
往后数了
那现在
大家看
这个符合什么条件呢
行下标
一定是大于列下标的
行下标这个3一定是比
后边的列下标要大的
这样
每一个上面
也符合了
这样的条件
那么符合了这样的条件
给它赋值的这个4从哪来的呢
我们看
我们这里边的每一个元素
一定是
既与行有关
又与列有关
为什么呢
因为它不是
常量
4 3 2
5 4 3
也就是说
行越大这个数就越大
列越大
那行和列
决定了
这个位置上的一个数据
越往后的数据
列越大
这个数据就越小
也就是说我要的数据越小的时候
我应该把这个列给减掉
所以呢
我们满足了
行下标减列下标
行吗
不行加1
拿一个数据看一下4
行下标是3
减上0
加1得4
那再看这个3
行下标是
4
4
减列下标的是0 1 2
4减2加1
得这个3
也就是说
满足行下标的值
大于列下标的值的时候
我们赋值的是这么一个
表达式计算的结果
那这个思路
就很简单
生成
这个数组
就这件事情里边
形成并输出
这么一个矩阵
生成这个数组
生成a数组
这些数据是自动
被赋值进去的
然后把它输出
那输出
很简单
生成呢
也不麻烦
按我们刚才说的
你只要满足这个条件
咱赋值就是1
你只要满足这个条件
赋值就是
这样的表达式的结果
那我们把这个生成a数组
这件事情的思路
写出来的话是不是说
如果我这个
行下标小于等于列下标的话
就把1送到这个数组里边
否则的话
你就把i-j+1的结果
送进来
当然
我们把这个判断并赋值的事情
要做多少遍呢
要做
用两个循环
内循环
循环从0开始
到什么呢
到5
到小于5
也就到4
从0
到4
5个元素
这是内循环
而外循环从0行
到下标为4的行
一共是5行
在一个两重循环里
生成
做这件事情
做这个判断
这就生成了这个
数组
然后再把它输出
我们来看一下这个程序
我们看一下
这个程序里边
我们给的是10乘10的数组
然后呢大家看
在这里边
满足这个条件
i小于等于j的话
给这个数组元素里边
赋值的是1
是谁
i行j列
否则
赋值的是i-j+1
然后呢
这是
生成这个数组
用两重循环
然后输出这个数组
同样用两重循环
大家注意到输出的时候呢
在内循环结束了以后
一定有一个
换行
就是说当你把一行
做完了的时候
进入下一行的时候
换新的一行
我们来运行一下这个程序
这是我们
看到的这个
以斜杠为界
上边是1
下边是
这样非常对称的
非常好看的一个矩阵
我们大家说
如果是这里边的表达式给的不对
会怎么样呢
比如说我把这个
加号去掉
大家看一下
运行结果会变成什么样子
看上去跟刚才差不多
只是说
这一行全是1了
就差一个1嘛
那如果
我们还把这个再加回去
就是说
如果
你这里边赋值的不一样
比如说我现在
并没有
我给这上面赋值的是
这么一个数
也就是说
当我自动要给这一个
数组里边写数的话
你要写的是什么内容
是靠你这个表达式来确定的
比如说
我这个里边
赋值的是
else里边赋值的
是i+j
大家看出来的
那就是
始终都是
i+j的
这样的一个
结果
那我们
回来
说这件事
生成
这么一个数组
并输出
这是标准的二维数组的
输入和输出
那么这里边用的输入的方式是
自动生成的这个数据
我们还把这个程序回到
原来的这个题目上
那这是
我们刚才讨论的
这个矩阵
里边
它的一个方式
那我们
看一下
这就是
我们刚才看到过的程序
大家下去也可以运行一下
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html