9月26日第四次上课记录
1,程序设计补充
程序设计错误:
- 语法错误
- 运行错误
- 逻辑错误
调试程序:
- 单步追踪:调试工具逐句执行语句查看结果。
- 进入或跳过一个函数:可进入一个函数进行单步追踪或跳过函数。
- 设置断点:可在特定位置设置断点暂停程序。
- 显示变量值:调试工具可显示一些选定的变量的值,使用单步追踪时这些值会不断变化方便查找bug。
- 显示调用栈:调试工具跟踪函数条用并列出执行中的函数。
- 修改变量:调试工具可以在调试过程中修改变量。
2,逻辑运算
运算符 | 作用 | 运算数 | 结合性 | 优先级 |
---|---|---|---|---|
&& | 逻辑与 | 双目 | 左结合 | 5 |
ll | 逻辑或 | 双目 | 左结合 | 4 |
! | 逻辑非 | 单目 | 右结合 | 14 |
C语言不能进行两个以上的判断,要用逻辑运算符来进行。
C语言中的短路原则:条件判断从左到右,遇到能确定结果的条件,就不再继续判断。
3,选择结构
- 单分支if
语法格式:
if(表达式)
语句;
如果表达式成立(非0值),则执行语句。
- 双分支if
语法格式:
if(表达式)
语句1;
else
语句2;
- 嵌套if
1)
if(条件1)
if(条件2)
语句1;
else
语句2;
else
语句3;
2)
if(条件1)
语句1;
else if(条件2)
else if(条件3)
…
使用多个if和else时,else会匹配上一个未配对的if。 - switch语句
语法格式:
switch(表达式)
{
case 常量1:语句或语句组1;
case 常量2:语句或语句组2;
…
case 常亮n:语句或语句组n;
default:语句或语句组n+1;
}
先判断表达式,如果有符合的,就从第一个case开始往下执行全部,如果没有就执行default。
- 条件运算符
语法结构:
表达式1?表达式2:表达式3;
4,随机数
rand函数会产生一个随机数,如果种子不变,产生的随机数就一样。
srand函数可以用于改变随机数种子:void srand(unsigned int seed)
为了保证每次的种子不同,可以使用系统时间作为随机数的种子。time(0)包括在头文件time.h中,rand和srand包含在头文件stdlib.h中。
5,循环结构
- while语句
语法结构:
while(表达式)
语句;
当表达式中为真时,执行后续语句,再次进入循环,如果表达式中为假,则结束循环。
循环体只能包含一条语句,当循环体需要更多的时候使用复合语句。
如果条件一直为真,会出现死循环。
while先判断表达式,再执行语句,所以语句可能一次都不被执行。
- do-while语句
语法结构:
do
{
语句;
}
while(表达式);
需要多条语句时,要用复合语句。
do-while先执行再判断,所以至少会执行一次
- for语句
语法结构:
for(进行初始化;控制循环条件;执行完后计算)
语句;
需要多条语句时,要用复合语句。
for语句时先判断再执行,所以可能一次也不执行。
-
循环语句使用要点:
1)如果循环次数已经知道,使用for。
2)循环次数不确定使用while。
3)如果需要检查循环前执行一次,用do-while。 -
改变循环流程的方法
1)break语句
break语句可以用于跳出switch,while,do-while和for。它用于结束直接包含它的最内层的循环语句。
2)continue语句
continue语句可以用于结束switch,while,do-while和for的本次执行,转去再次判定循环条件 -
goto语句
goto也称为无条件转移语句,语法格式
goto 语句标号;
语句标号的作用类似标识符,标号后加冒号,用于标识语句。
因为goto容易造成程序混乱,所以一般不推荐使用。
6,数组
数组是一组有序数据的集合,这组数组拥有同一个名字,即数组名。数组中的一个数据称为数组元素,每个元素都有一个唯一的编号,称为下标。每个数组元素的数据类型都是相同的,不能错误摆放。
语法格式
数据类型说明符 数组名[整型表达式]
1)数据类型说明符制定了数组中存放数据的数据类型。
2)数组名的命名规则和变量一样。
3)数组名后面方括号中说明了可以存放的元素个数。
4)数据存放超出空间并不会报警,但是会对存储造成影响。这种行为称为越界,C不能识别。
引用数组时,语法格式
数组名[下标]
1)下标如果是浮点数系统会去掉小数部分。
2)下标范围要合理,超出称为下标越界。
3)一个数组元素的使用方式与同类型的变量一样。
数组的初始化,语法格式
int a [10]={1,2,3,4,5,6,7,8,9,10}
上面是给全部元素赋值,也可以只输入一部分,给前几个赋值。对数组初始化的时候,可以不用写下标,系统会根据所需要的元素自动分配空间