C语言基础语法-教案06(从小白到劝退-数组初阶)

基本概念

  • 逻辑:一次性定义多个相同类型的变量,并存储到一片连续的内存中
  • 示例:
int a[5] = {1,2,3,4,5};
a[0] = 2;
  • 语法释义:
  1. a 是数组名,即这片连续内存的名称
  2. [5] 代表这片连续内存总共分成5个相等的格子,每个格子称为数组的元素
  3. int 代表每个元素的类型,可以是任意基本类型,也可以是组合类型,甚至可以是数组
  • 初始化:在定义的时候赋值,称为初始化
// 正常初始化
int a[5] = {100,200,300};

int a[5] = {100,200,300,400,500,600}; // 错误,越界了
int a[ ] = {100,200,300}; // OK,自动根据初始化列表分配数组元素个数
int a[5] = {100,200,300}; // OK,只初始化数组元素的一部分

数组元素的引用

  • 存储模式:一片连续的内存,按数据类型分割成若干相同大小的格子
  • 元素下标:数组开头位置的偏移量

  • 示例:
int a[5]; // 有效的下标范围是 0 ~ 4
a[0] = 1;
a[1] = 66;
a[2] = 21;
a[3] = 4;
a[4] = 934;

a[5] = 62; // 错误,越界了
a    = 10; // 错误,不可对数组名赋值 

字符数组

  • 概念:专门存放字符的数组,称为字符数组
  • 初始化与元素引用:
char s1[5] = {'a', 'b', 'c', 'd', 'e'};       // s1存放的是字符序列,非字符串
char s2[6] = {'a', 'b', 'c', 'd', 'e', '\0'}; // s2存放了一个字符串

char s[6] = {"abcde"}; // 使用字符串直接初始化字符数组
char s[6] =  "abcde" ; // 大括号可以省略

s[0] = 'A'; // 索引第一个元素,赋值为 'A'

多维数组

  • 概念:若数组元素类型也是数组,则该数组称为多维数组
  • 示例:
int a[2][3];

// 代码释义:
// 1, a[2]   是数组的定义,表示该数组拥有两个元素
// 2, int [3]是元素的类型,表示该数组元素是一个具有三个元素的整型数组

  • 多维数组的语法跟普通的一维数组语法完全一致
  • 初始化:
int a[2][3] = {{1,2,3}, {4,5,6}}; // 数组的元素是另一个数组

int a[2][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; // 错误,越界了
int a[2][3] = {{1,2,3}, {4,5,6,7}};        // 错误,越界了

int a[ ][3] = {{1,2,3}, {4,5,6}}; // OK,自动根据初始化列表分配数组元素个数
int a[2][3] = {{1,2,3}};          // OK,只初始化数组元素的一部分
  • 元素引用:
// a[0] 代表第一个元素,这个元素是一个具有 3 个元素的数组:{1,2,3}
// a[1] 代表第二个元素,这个元素也是一个具有 3 个元素的数组:{4,5,6}

printf("%d", a[0][0]); // 输出第一个数组的第一个元素,即1
printf("%d", a[1][2]); // 输出第二个数组的第三个元素,即6

数组万能拆解法

  • 任意的数组,不管有多复杂,其定义都由两部分组成。
    • 第1部分:说明数组名和元素个数
    • 第2部分:说明元素的类型,可以是任意的类型(除了函数)

  • 示例:
int   a[4];       // 第1部分:a[4]; 第2部分:int
int   b[3][4];    // 第1部分:b[3]; 第2部分:int [4]
int   c[2][3][4]; // 第1部分:c[2]; 第2部分:int [3][4]
int  *d[6];       // 第1部分:d[6]; 第2部分:int *
int (*e[7])(int, float); // 第1部分:e[7]; 第2部分:int (*)(int, float)
  • 注解:
  1. 上述示例中,a[4]、b[3]、c[2]、d[6]、e[7]本质上并无区别,它们均是数组
  2. 上述示例中,a[4]、b[3]、c[2]、d[6]、e[7]唯一的不同,是它们所存放的元素的不同
  3. 第1部分的声明语句,如果由多个单词组成,C语言规定需要将其拆散写到第2部分的两边
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机程序设计(C语言教案 " "计算机 "总学时 " " "程序设计 " " " " " " " " " " " " " " "简要回 "讲解实验四 "通过讲解实 " "顾 "复习printf和scanf函数,getchar()和putchar函数的用"验四回顾顺 " " "法 "序结构程序 " " " "设计方法 " "阐述主 "关系运算符和关系表达式 "强调重点和 " "题 "逻辑运算符和逻辑表达式 "难点 " " "条件运算符 " " " "if语句(重点、难点) " " " "switch语句(重点、难点) " " "关系运 "关系运算实际上是比较运算,两个值进行比较,判断比较 "强调关系运 " "算符和 "的结果是否符合给定的条件,如果符合比较的结果为真, "算符中等于 " "关系表 "否则结果为假。 "用==表示, " "达式 "用关系运算符将两个表达式(可以是算术表达式、关系表"注意与=的区" " "达式、逻辑表达式、赋值表达式、字符表达式)连接起 "别 " " "来的式子叫关系表达式。 " " " "关系运算符与其它运算符的优先次序。 " " " "C语言提供六种关系运算符: " " " " < 小于 " " " " <= 小于等于 " " " " > 大于 " " " " >= 大于等于 " " " " == 等于 " " " " != 不等于 " " "逻辑运 "用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑 "强调在逻辑 " "算符和 "表达式。 "表达式的求 " "逻辑表 "逻辑运算符与其它运算符的优先次序。 "解中,并不是" "达式 "逻辑表达式的值应该是一个逻辑量"真"或"假",以数值"1"所有的逻辑 " " ""或"0"表示.而在判断一个量是否为"真"时,以"0"代表假"运算都被执 " " ",以非"0"代表真。 "行。 " " "在逻辑表达式的求解中,并不是所有的逻辑运算都被执行" " " "。 " " " "&&逻辑与 " " " "" "逻辑或 " " " "!逻辑非 " " "实例分 "例:满足下列一个条件即为闰年: 能被4整除,不能被100"通过课堂提 " "析 "整除 能被4整除,又能被400整除. "问,引导学 " " "(year%4= =0&&year%100!=0) " " year%400= =0 "生参与思考 " " "!((year%4= =0&&year%100!=0) " "year%400= =0) " " " "(year%4!=0) " "(year%100= =0&&year%400!=0) " " "条件运 "格式:表达式1?表达式2:表达式3 "强调条件运 " "算符 "条件运算符要求有三个操作对象,称三目运算符,它是c"算符要求有 " " "语言中唯一的三目运算符。 "三个操作对 " " "条件表达式 max= (a>b)? a:b 相当于 "象,是三目 " " "if (a>b) max=a; else max=b; "运算符 " " "说明: " " " "条件运算符的执行顺序 " " " "条件运算符的优先级别,仅高于赋值运算 " " " "条件运算符的结合方向为右结合性 " " " "条件表达式不能取代if语句 " " " "条件表达式中的表达式类型可以不同 " " "实例分 "例:编程,输入一个字符,若是大写就转换成小写;若 "通过例题体 " "析 "不是就不转换,输出字符。main(){char "会条件运算 " " "a;scanf("%c",&a);if (a>='A'&&a<='Z') "符的使用 " " "a=a+32;printf("%c",a);} " " " "//a=(a>='A'&&a<='Z')?a+32:a; " " " "} " " "if "if语句是用来判定是否满足所给定条件,根据判定结果( "分析if语句 " "语句( "真或假)决定执行给出的两种操作之一。 "的三种形式 " "重点、 "if语句的三种形式: " " "难点) " if (表达式) 语句 " " " " if (表达式) 语句1 else 语句2 " " " " if (表达式1) 语句1 " " " "else if (表达式2) 语句2 " " " "else if (表达式3) 语句3 " " " "...... " " " "else if (表达式n) 语句n " " " "else 语句n+1 " " "if语句 "在if语句的内部使用if语句,例如: "if语句的嵌 " "的嵌套 "if ( )if ( ) 语句1else if ( ) 语句2else 语句3 "套,注意与i" " " "f语句的三种" " " "形式的区别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值