nullnull主要针对C语言的语句部分null关系运算符和关系表达式1.关系运算符及其优先次序:
< (小于)
<= (小于或等于)
> (大于)
>= (大于或等于)
== (等于)
!=(不等于)优先级相同(高)优先级相同(低)算术运算符>>关系运算符>>赋值运算符关系运算符的结果只有0和1两种,即为逻辑值。选择结构程序设计null逻辑运算符和逻辑表达式1. 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。2. 逻辑运算符及其优先次序:
(1) && 逻辑与
(2) || 逻辑或
(3) ! 逻辑非
“&&”和“||”是“双元(目)运算符”,它要求有两个运算量(操作数)。如(a>b)&&(x>y)
“ ! ”是一元运算符,只要求有一个运算量。如
!(a>b)3.逻辑运算符的优先次序:
(1)!>> && >> ||
(2)!>> 算术运算符 >>关系运算符 >> &&和 || >> 赋值运算符
4.逻辑表达式的值将一个非0的数值认作为“真”5.例如: 5>3 &&8<4--!0
解答思路:
表达式是从左至右扫描求解的,首先处理“5>3”(因为关系运算符优于 &&)的结果“1”;再处理
“1&&8<4-!0” (由于“<”优于“&&”)所以先处理
“8<4-!0”现在4的左边为“<”,右边为“-”,由于(算术运算符优于关系运算符)所以先处理“4-!0”由于“ !”的等级最高,故先算“ !”也即是“4-1”=3;
再进行“8<3”得到结果为“0”,再算“1&&0”的结果为“0”,既为原表达式的值。null条件运算符 if 语句中当判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。
例如:
If(a>b)
max=a;
else
max=b;
当a>b时将a的值赋给max,当a<=b时将a的值赋给max,可以看到无论a>b是否满足,都相同一个变量赋值。可以用下面的条件运算符来处理。
max=(a>b)? a:b;其中“(a>b)?a:b” 是一个“条件表达式”
它的执行过程:若(a>b)条件为真,则条件表达式取a,否则取值b.
条件运算符要求有3个操作对象,称三目运算符。
条件表达式的一般形式:
表达式1?表达式2:表达式3表达式1条件表达式去
表达式2的值条件表达式去
表达式3的值假(0)真(非0)null(1)条件运算符的优先级优于赋值运算符,但是比关系运算符和算术运算符都低。
(2)条件运算符的结合方向是
“自右至左”
例如:a>b?a:c>d?c:d
若 a=1, b=2, c=3, d=4
则先算(c>d)?c:d 结果:d=4
再算(a>b)?a:4 结果:d=4
条件表达式还可以写成以下形式:
a>b? (a=100):b=100)
或 a>b? printf(“%d”,a) : printf(“%d”,b)
即表达式2和表达式3不仅可以是数值表达式,还可以赋值表达式或函数表达式。例: 输入一个字符,判别它是否大写字母,若是,将它转换成小写字母;若不是,不转换。然后输出最后得到的字符。Main()
{ char c1;
scanf(“%c”,&c1);
c1=(c1>=‘A’&&c1<<=‘Z’)?(c1+32):c1;
printf(“%c”,c1);
}nullIf 语句If语句的三种形式:
(1)if(表达式) 语句
例如: if(x>y)printf(“%d”,x);
表达式假(0)语句真(非0)(2) if(表达式)语句1 else 语句2
例如: if(x>y) printf(“%d”,x);
esle printf(“%d”,y);表达式语句2语句1假真(3) if(表达式) 语句1
else if (表达式2)语句 2
else if (表达式3)语句 3
......else if(表达式m) 语句m
else 语句n说明:(1)3种形式的if后面都有表达式,一般为逻辑表达式或关系表达式。在执行if语句时先对表达式求解。若表达式为真,则执行后面的语句。若为假则执行else后的语句。
(2)第二、三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一个分号。nullSwitch 语句1.Switch语句是多分支选择语句。而if 语句只有两个分支选择。
2. Switch的一般形式:
switch(表达式)
{ case 常量表达式 1: 语句1
case 常量表达式 2: 语句2
case 常量表达式 n: 语句n
default : 语句n+1
}
......3. Switch 后面括号内的表达式,ANSI标准允许它为任何类型。
4.当表达式的值与某一个case后面的常量表达式相等,就执行此case后面的语句,若所有的case后面的表达式都没有与表达式相等,就执行defaulth后面的语句。5.每一个case的常量表达式的值必须互不相同。
6.各个case和default得出现次序不影响执行结果。
7.在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就继续执行下去,不再进行判断。
例如:
Switch(grade)
{ case ‘A’:printf(”85~100\n”);
case ‘B’:printf(“70~84\n”);
case ‘C’:printf(“60~69\n”);
case ‘D’:printf(”<60\n”);
default: printf (“error\n”);
}输出结果:85~100
70~84
60~69
<90
errornull为了解决这一问
,即在执行一个case分支后,使流程跳出 switch 结构。
可以用一个 break 语句来达到此目的。
例如:
Switch(grade)
{
case ‘A’:printf(”85~100\n”); break;
case ‘B’:printf(“70~84\n”); break;
case ‘C’:printf(“60~69\n”);break;
case ‘D’:printf(”<60\n”);break;
default: printf (“error\n”);
}最后一个分支可以不加 break 语句。如果
grade 的值为‘B’,则只输出“70~84”,null goto 语句以及用goto 语句构成的循环 循环控制1.goto 语句为无条件转向语句,它的一般形式:
goto 语句标号;
语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,第一个字符必须为字母或下划线。不能用整数来作标号。
例如: goto label_1;
2.结构化程序设计方法主张限制使用 goto 语句,因为滥用 goto 语句将使程序流程无规律、可读性差。
3. goto语句的两个用途:
(1)与if 语句一起使用,构成循环结构。
(2) 从循环体中调到循环体外。
但可以用 break 和 continue 跳出本层循环和结束本次循环。故使用机会少。例题:
用 If 语句和 goto语句构成循环,求 1+2+3+……+100;
main( )
{ int i,sum;
i=1;
loop:if(i<=100)
{ sum =sum+i;
i++;
goto loop;
}
}nullwhile 语句1.while 语句是用来实现“当型”循环结构的。
其表达式: while (表达式)
{ 循环语句
}
功能:当表达式的值为“真”时,执行循环体语句。
2.例题:计算1+2+3……+100;
main( )
{int a,sum;
sum=0; a=1;
while(a<=100)
{ sum=sum+a;
a++;}
printf(“%d”,sum);
}3.使用 while 语句需注意的几点:
(1)表达式是控制循环的条件,可以是任何类型的表达式。
(2)while 语句循环是先判断、后执行。若表达式一开始就是假的,则一次循环都不执行。
(3)循环体中必须有使循环趋于结束的语句,否则会出现死循环。
nulldo while 语句do while 语句用于实现直到型循环结构。
其一般形式:do
{ 循环体语句
}while (表达式);
其执行特点:先执行循环体中的语句,然后判断表达式,当表达式的值为“真”时,就返回重新执行循环体语句,如此反复,直到表达式的值为“0”为止,此时循环结束。
无论如何,do while 循环至少执行一次循环语句。
2.用 do while 计算1+2+3+……+100; main( )
{ int a, sum;
sum=0;
a=1;
do
{
sum=sum+a;
a++;
} while (a<=100);
printf(“%d”, sum);
}
null用 for 语句实现循环1.for 语句的一般表达式:
for (表达式1;表达式2;表达式3)
{ 循环语句}
执行过程:
(1)先求解表达式1;
(2)求解表达式2,若值为真 ,则执行for语句中的循环语句,然后在执行表达式3;
若表达式2的值为假,则结束循环。
(3)求解表达式3后再执行第(2)步。
2. for 语句的表达式也可以理解成为:
for (循环变量赋初值;循环条件;循环变量增量) 语句
3.例如: for (i=1; i<=10; i++) i=1;
{ sum=sum+1;} while(i<=10)
【for 与 while 语句的等效】 { sum=sum+i; i++; }4.(1)如果表达式2省略了,即不判断循环条件,循环无止境的进行下去。
(2)表达式2 一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表式,只要其值非零,就执行循环体。
(3)表达式一般是关系表达式(i<10)或逻辑表达(a