选择结构与循环结构

最近学的比较杂,选择结构和循环结构的很多语句经常被使用,在不熟练且又需要经常使用它们的情况下,参考学习资料后,我对它们进行了一些简单的整理。

一.选择结构。

1.if else语句:if 和 else 是两个关键字,if 意为“如果”,else 意为“否则”,用来对条件进行判断,并根据判断结果执行不同的语句。总结起来,if else 的结构为:
if(判断条件){
    语句块1
}else{
    语句块2
}

意思是,如果判断条件成立,那么执行语句块1,否则执行语句块2 。

ps:语句块的意思就是由{}包围的一个或多个语句的集合。如果语句块中只有一个语句,也可以省略{}。


eg:求两个数中的较大值
#include <stdio.h>
int main()
{
    int a, b, max;
    printf("输入两个整数:");
    scanf("%d %d", &a, &b);
    if(a>b) max=a;
    else max=b;
    printf("%d和%d的较大值是:%d\n", a, b, max);
    return 0;
}

 

2.if语句:有的时候,需要在满足某种条件时进行一些操作,而不满足条件时就不进行任何操作,这个时候可以只使用 if 语句。

单独使用 if 语句的形式为:
if(判断条件){
    语句块
}

意思是,如果判断条件成立就执行语句块,否则直接跳过。

eg:只使用 if 语句来求两个数中的较大值
#include <stdio.h>
int main()
{
    int a, b, max;
    printf("输入两个整数:");
    scanf("%d %d", &a, &b);
    max=b; 
    if(a>b) max=a; 
    printf("%d和%d的较大值是:%d\n", a, b, max);
    return 0;
}

3.多个if else语句:if else 语句也可以多个同时使用,构成多个分支。

结构如下:
if(判断条件1){
    语句块1
} else  if(判断条件2){
    语句块2
}else  if(判断条件3){
    语句块3
}else  if(判断条件m){
    语句块m
}else{
     语句块n
}

意思是,从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。一旦遇到能够成立的判断条件,则不再执行其他的语句块,所以最终只能有一个语句块被执行。

4.if语句的嵌套:在使用时要注意if和else的配对问题,else总是与它前面最近的if配对。

5.switch语句:当选择结构分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。实际中一般使用 switch 语句代替。


switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句。基本形式如下:

switch(表达式){
    case 整型数值1: 语句 1;
    case 整型数值2: 语句 2;
    case 整型数值n: 语句 n;

     ......
    default: 语句 n+1;
}

它的执行过程是:
1) 首先计算“表达式”的值,假设为 m。

2) 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。

3) 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。

4) 如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。

default是最后一个分支,不是必须的,匹配后不会再执行其他分支。case后面必须是一个整数,或者是结果为整数的不包含任何变量的表达式。

需要注意的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。

这时就需要使用break关键字来用于跳出switch语句。
例如:
#include <stdio.h>
int main(){
    int a;
    printf("Input integer number:");
    scanf("%d",&a);
    switch(a){
        case 1: printf("Monday\n"); break;
        case 2: printf("Tuesday\n"); break;
        case 3: printf("Wednesday\n"); break;
        case 4: printf("Thursday\n"); break;
        case 5: printf("Friday\n"); break;
        case 6: printf("Saturday\n"); break;
        case 7: printf("Sunday\n"); break;
        default:printf("error\n"); break;
    }

    return 0;
}

二.循环结构

1.while循环

while循环的一般形式为:
while(表达式){
    语句块
}

意思是,先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。循环条件不成立的话,while循环一次也不会执行。

ps:通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。

eg:用 while 循环计算1加到100的值
#include <stdio.h>
int main(){
    int i=1, sum=0;
    while(i<=100){
        sum+=i;
        i++;
    }
    printf("%d\n",sum);
    return 0;
}

2.do-while循环

一般形式为:
do{
    语句块
}while(表达式);

do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。

eg:用do-while计算1加到100的值:
#include <stdio.h>
int main(){
    int i=1, sum=0;
    do{
        sum+=i;
        i++;
    }while(i<=100);
    printf("%d\n", sum);
    return 0;
}

3.for循环

一般形式为:
for(表达式1; 表达式2; 表达式3){
    语句块
}

它的运行过程为:
1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。

“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。

由此也可以总结出for循环的一般形式:
for(初始化语句; 循环条件; 自增或自减){
    语句块
}

 


 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值