课堂笔记
1.算数运算符
算术运算符分为+(加法运算符)、-(减法运算符)、* (乘法运算符)、\(除法运算符)、%(求余运算符或模运算符)
- 算数运算规则:除法的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;取余的运算对象必须是整数,结果是整除后的余数,且其余数的符号与被除数相同。
- C语言允许在表达式中进行混合运算,系统将自动进行类型转换。 2.关系运算符
关系运算符有<(小于)、<=(小于等于)、>(大于)、>=大于等于)、==(等于)、!=(不等于)
- C语言中没有逻辑型数据,规定用1表示逻辑"真”,用0表示逻辑“假” 3.逻辑运算符
逻辑运算符有!(逻辑非)、&&(逻辑与)、||(逻辑或)
- a&&b:若a、b都为真,则a&&b为真;若a、b之一为假,则a&&b为假。a||b:若a、b之一为真,则a||b为真;若a、b都为假,则a||b为假。!a:若a为真,则!a为假;若a为假,则!a为真。 4.赋值运算符
赋值运算符的作用是讲一个数据赋给“=”左边的变量
- 算数运算符、位运算符与赋值号“=”结合在一起,形成复合的赋值运算符。如:a+=b等价于 a=a+b;a/b等价于a=a/b;a>>=b等价于a=a>>=b。 5.自增自减运算符
自增自减运算符的格式:++变量或变量++,如++i或i++;--变量或变量--,如--i或i--。其作用是使变量的值增1或减1
- 无论是i++还是i--,对i而言都有i+1的运算,++的位置对i的值没有影响,但影响了i参与运算表达式的值 6.三目运算符
条件运算符是唯一个三元运算符,即有三个操作数参加运算的运算符,条件表达式的一般格式:表达式1?表达式2:表达式3
- 表达式1?表达式2:表达式3。表达式1?中的问号也是对前面表达式1进行发问,问表达式1成立否?成立则选择表达式2的值;不成立则选择表达式3的值。 7.- 运算符优先级
任意一个运算符都具有优先级和结合方向这两个重要属性。C语言的运算符种类共有15级。大概可以记忆为括号优先级>算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符 注意:遇到优先级问题时,为提高代码可读性,尽量使用括号,不要写出有歧义的代码。一行代码不要出现多个自增自减符号,这会被视作垃圾代码。
流程控制
- 定义:程序代码执行的顺序。
- 分类:顺序执行;选择执行,某些代码可能执行,也可能不执行,有选择的执行某些代码;循环执行。 1.if else语句
- 格式:if (表达式) 语句;功能:如果表达式为真,执行语句,如果表达式为假,不执行语句
- if的范围问题1:
if (表达式)
语句A
语句B
解释:if默认只能控制语句A的执行或不执行,if无法控制语句B的执行或不执行,即语句B一定能执行
- if的范围问题2:if (表达式){
语句A,语句B},此时if可以控制语句A和语句B
if默认只能控制一个语句的执行或不执行,如果想要控制多个语句的执行或不执行,就必须要用花括号括起来
2.for语句
更适用于循环次数已经确定的情况
- 一般格式:for(表达式1;表达式2;表达式3) 循环体语句
一般来说,“表达式1”用于提供循环的初始值,“表达式2”用于提供循环的条件,“表达式3”用于改变循环的条件 3.while 语句 while可以翻译为:当......的时候
- while的一般格式为:while(表达式) 循环语句;
4.switch 语句
switch语句被称为开关语句,switch括号里的表达式的值只能是整形或字符型,case后面的常量表达式的类型必须与之匹配
- switch的一般格式:
switch(表达式)
{
case 常量表达式1:语句组1 [break ;]
case 常量表达式2:语句组2 [break ;]
......
case 常量表达式n:语句组n [break ;]
[defaukt :语句组n+1]
}
5.do while 语句
主要用于人机交互
- do while 语句的一般形式:
do
循环语句;
while (表达式);
6.break与continue区别
-
break如果用于循环是终止循环;break如果用于switch,则是用于终止switch;break不能直接用于if,除非if属于循环内存中的一部分;break只能用于终止距离它最近的循环。
-
continue用于跳过本次循环余下的语句,转去判断是否需要执行下次循环。
break语句与continue语句的区别:continue语句只结束本次循环,而不是终止整个循环的执行;break语句则是结束整个循环,使程序转到循环语句后的下一条语句
课程中出现的代码
1.测试取模运算符的例子
#include <stdio.h>
int main( )
{
printf("%d %d %d %d %d %d \n",3%3,13%-3,-13%3,-13%-3,-13%23,3%5);
return 0;
}
2.逻辑运算符举例1
#include <stdio.h>
int main( )
{
int i = 10;
int k = 20;
int m;
m = (3>2) && (k = 8);
printf ( "m = %d, k = %d\n", m, k);
return 0;
}
3.逻辑运算符举例2
#include <stdio.h>
int main( )
{
int i = 10;
int k = 20;
int m;
m = (1>2) || (k = 5); /*不含有分号的是表达式,含有分号的是语句*/
printf ( "m = %d, k = %d\n", m, k);
return 0;
}
4.if的范围问题
#include <stdio.h>
int main( )
{
if(1>2);
{
printf("AAAA\n");
printf("BBBB\n");
}
printf("CCCC\n");
return 0;
}
5.if举例:求分数的等级
#include <stdio.h>
int main( )
{
float score;
printf("请输入您的考试成绩:");
scanf("%d",&score);
if (score>100)
printf("这是做梦!\n");
else if(score>=90 && score<=100)
printf("优秀!\n");
else if(score>=80 && score<90)
printf("良好!\n");
else if("score>=60 && score<80")
printf("及格!\n");
else
printf("输入的分数过低,不要如此自卑!\n");
return 0;
}
6.对任意三个数字排序
#include <stdio.h>
int main( )
{
int a,b,c,t;
printf("请输入三个整数(中间以空格分割)");
scanf("%d %d %d ,&a &b &c");
if (a<b)
{
t = a;
a = b;
b = t;
}
if (a<c)
{
t = a;
a = c;
c = t;
}
if (b<c)
{
t = b;
b = c;
c = t;
}
return 0;
}
课后习题
5.10 第七题
输出结果为:so:8 30.00
5.10 第十三题
5.11 第三题运行结果
5.11 第八题运行结果
6.16 第五题运行结果
6.16 第十二题运行结果
6.16 第十八题运行结果
7.11 第二题
7.11 第十题运行结果