C语言 - day2 - 选择结构/循环结构/break/continue/运算符/goto语句
选择结构 - if语句
- 在C语言中选择结构主要由if语句实现的。
- if语句中的表达式可以是关系表达式,逻辑表达式,数值表达式,其中最容易理解的是关系表达式。
- 整个if语句可以写在多行上,也可以写在一行上。
- 复合语句要用花括号括起来。
- 在if语向中要对给定的条件进行检查,判定所给定的条件是否成立。判断的结果是一个逻辑值“是”或“否”。
if语句的一般形式(三种)(if)(if,else)(if,else if,else)
案例:
- 帮你们的数学老师做一个按分数评级的程序:
- 90分及以上:A
- 80 ~90分:B
- 70~80分:C
- 60~70分:D
- 低于60分:E
实例:
#include<stdio.h>
int main(){
int i;
printf("请输入分数:\n");
scanf("%d",&i);
if(i>=90){
printf("A\n");
}
else if(i>=80 && i<90){
printf("B\n");
}
else if(i>=70 && i<80){
printf("C\n");
}
else if(i>=60 && i<70){
printf("D\n");
}
else{
printf("E\n");
}
return 0;
}
选择结构 - switch语句(多分支选择语句)
- 如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。C语言提供switch语句直接处理多分支选择。
- switch语句是多分支选择语句。
- switch语句的作用是根据表达式的值,使流程跳到不同的语句。
- 注意:一般情况下,在执行一个case子句后,应当用break语句使流程跳出switch结构,即终止switch语句的执行。
switch语句的一般形式
实例
#include<stdio.h>
int main(){
char ch;
printf("请输入成绩∶");
scanf( "%c", &ch) ;
switch (ch){
case 'A': printf("你的成绩在90分以上!\n") ;
break ;
case 'B' : printf("你的成绩在80~90分之间\n");
break;
case 'C' : printf("你的成绩在70~80分之间\n");
break;
case 'D': printf("你的成绩在60~70分之间\n");
break;
case 'E': printf("你的成绩在60分以下\n");
break;
default: printf("请输入有效的成绩评级!\n");
break;
}
return 0;
}
选择结构 - 分支结构的嵌套(书本上叫选择结构的嵌套)
案例:
实例
#include<stdio.h>
int main(){
int a, b;
printf("请输入两个数︰");
scanf("%d %d", &a, &b );
if (a != b){
if (a > b){
printf("%d > %d\n", a, b);
}
else{
printf("%d < %d\n", a, b);
}
}
else{
printf("%d = %d\n", a, b);
}
return 0;
}
if嵌套 - Bug - 悬挂else
- else始终与同一对括号内最近的未匹配的if结合。
- 避免方法也相当简单,就是if或else条件后的语句块用大括号“封装”起来。
- <--详细实例-->(https://cloud.tencent.com/developer/article/1497324?ivk_sa=1024320u)
循环结构 - while语句(入口条件循环)
- 可以用while语句来实现循环结构
- while后面的语句称为循环体
- 循环体只能是一个语句,可以是一个简单的语句,还可以是复合语句(用花括号括起来的若干语句)。
- 执行循环体的次数是由循环条件控制的,“表达式”也称为循环条件表达式。当此表达式的值为“真”(以非0值表示)时,就执行循环体语句;为“假”(以0表示)时,就不执行循环体语句。
- while语句可简单地记为:只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。
- 注意:while循环的特点是先判断条件表达式,后执行循环体语句。
while语句的一般形式
while(表达式)
循环体
案例1:
实例1
#include<stdio.h>
int main(){
int i=1,sum=0;
while (i <= 100){
sum = sum+ i;
i = i +1;
}
printf("结果是: %d \n", sum) ;
return 0;
}
案例2:
实例2
#include<stdio.h>
int main(){
int count = 0;
printf("请输入一行英文字符:");
while (getchar() != '\n')
{
count = count + 1;
}
printf("你总共输入了%d个字符! \n", count);
return 0;
}
do...while语句
- do…while语句的执行过程是:先执行循环体,然后再检查条件是否成立,若成立,再执行循环体。这是和while语句的不同。
- 注意:do…while语句的特点是,先无条件地执行循环体,然后判断循环条件是否成立。
- 先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0(“假”)为止,此时循环结束。
do...while语句的一般形式
do
循环体
while(表达式);
while和do...while语句 - 比较
循环基本结构
for语句
- for语句灵活,不仅可以用于循环次数已经确定的情况,还可以用于循坏次数不确定而只给出循环结束条件的情况,完全可以替代while语句。
for语句的一般形式
for(表达式1;表达式2;表达式3)
循环体
三个表达式用分号隔开
- 表达式1是循环初始化表达式(只执行一次,可以为零个,一个或者多个变量设置初值)(如i=1)
- 表达式2是循环条件表达式(用来判断是否继续循环)
- 表达式3是循环调整表达式(循环的调整)
实例
#include<stdio.h>
int main(){
int count;
for (count =0; count < 10; count++){
printf( "FIshC! \n");
}
return 0;
}
案例
实例
#include<stdio.h>
int main(){
int i, num;
_Bool flag = 1;
printf("请输入一个整数∶");
scanf( "%d", &num);
for (i = 2; i < num / 2; i++){
if (num % i == 0){
flag = 0;
}
if (flag){
printf("%d是一个素数! \n", num);
}
else{
printf( "%d不是一个素数\n", num);
}
return 0;
} }
灵活的for语句
C99新标准
- C99允许在for语句的表达式1中定义变量
- 例:
for (int i =0; i<100;i++)
循环嵌套
案例(九九乘法表)
实例
#include<stdio.h>
int main(){
int i,j;
for (i = 1; i <= 9; i++){
for (j = 1; j <= i; j++){
printf("%d*%d=%-2d", i, j,i* j);
}
putchar('\n');
}
return 0;
}
break语句
- 用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。
- 实际上,break语句还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。
break语句的一般形式
break
- 其作用是使流程跳到循环体之外,接着执行循环体下面的语句。
- 注意:break语句只能用于循环语句和switch语句之中,而不能单独使用。
continue语句
- 有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环,这时可以用continue语句。
continue语句的一般形式
continue;
- 其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的“表达式3”,然后进行下一次是否执行循环的判定。
运算符(在day1也有写一部分)
赋值运算符
复合的赋值运算符
自增自减运算符(++)( - - )
- ++i,--i (使用i之前,先使i的值加(减)1)
- i++,i-- (使用i之后,使i的值加(减)1)
- 自增(++)自减( - - )运算符 常用于循环语句中,也用于指针变量,使指针指向下一个地址。
- 自增自减运算符只能作用于变量,而不能作用于常量或者表达式。
逗号运算符
- for语句的表达式1和表达式3可以通过使用逗号运算符来初始化多个值 或者 调整多个循环变量。
逗号运算符的语法
- 语法:
表达式1,表达式2,...,表达式n
- 逗号表达式的运算过程为从左往右逐个计算表达式
- 逗号表达式作为一个整体学它的值为最后一个表达式(也即表达式n)的值。
逗号运算符的实例
条件运算符
goto语句
- 语法:
goto 标签;
- 谨慎使用,甚至不要使用它。goto可能会破坏代码原有的逻辑。
Comments | NOTHING