终于到了想听的地方了
一维数组/二维数组略
二维数组由若干个一维数组组成,顺序为:先顺序排列每个一维元素,构成一维数组;再将各个一维数组排列,构成二维数组
eg int M[2][3]
先分别将三个int元素排列组成2个一维数组M[0],M[1]。
1 | M[0]:M[0][0],M[0][1],M[0][2] |
然后合成一个
1 | M:M[0],M[1] |
字符数组:存放字符,其余类似
每个元素为一个字符
一个一维数组可以存放一个字符串
定义与初始化
定义
1 | char str[10]; |
初始化
用字符串常量初始化时后,余下的空要用
1 | \0 |
补足
输入输出模板
1 | char str[10]; //char 前缀 int仅常量 |
或者
1 | get(word);//字符数组名 |
易错举例
1 | int a[3] = {1,2,3},b[3],i; |
——
1 |
|
字符串的合并与比较
strcmp (s1,s2)
规则:
当’>’,返回1
当’=’,返回0
当’<’,返回-1
举例:猜数程序
要求:
1,猜不对三次就换一个数猜
2,最多十次猜对的机会
3,猜对立刻结束
分析:知道最大次数可以用for
,再用一个变量来记录次数,到break退出循环
1 |
|
数组应用举例 查询名字
编写一个程序输入n个人的姓名
(n<=10,且姓名长度少于20个字符),
然后统计其中由多少个以M 开头的名字和最长的姓名显示出来
分析
输入:
人数;这些人的姓名
输出:M开头的人的姓名以及最长姓名
算法:
读入并存储所有人的姓名
读入的时候判断是否比最长姓名还长,如是,则更新最长姓名名字跟长度
依次判断每个人的递归字母和M是否相同,如是,则输出
代码示例
1 |
|
结构与结构变量
1 | struct student//结构变量名 |
不同类型之间即使相互同型,也不能相互赋值
引用结构变量
1 | stu1.name//“.”是成员运算符 可读作“的” |
初始化
1 | struct weather today ={32.5, 5} |
对结构变量today如上初始化
结构数组
一个数组元素是同一种结构类型的变量,就叫结构数组
想要定义这种结构数组,必须先定义一个结构类型,然后再定义具有这种结构类型的一个数组
例如
时钟模型
定义一个时钟结构体类型
1 | struct clock |
指针
公认难学 实际是与数组函数等的组合的灵活性导致的复杂性
数组元素的等价定义与引用形式
1 | int *pa = a; |