分支与循环(上)

C语言的结构有顺序结构、选择结构、循环结构。我们可以使用if、switch

实现分支结构,使用for、while、do while实现循环结构。

一、if语句

1.1if

if(表达式)
  语句

表达式成立(为真),语句执行。反之不执行。

1.2 else

if(表达式)
    语句1
else
    语句2

1.3分支中包含多条语句

默认if和else语句中默认都只控制一条语句

if()
{    
    语句1
    语句2
}
else
{
   语句1
   语句2
}

1.4嵌套if

在if else语句中,else可以与另一个if语句连用,构成多重判断

1.5悬空else

else和if就近原则,即else总是跟最接近的if匹配

二、关系操作符

>, <, >=,<=

==:判断相等

!=:判断不相等

关系表达式通常返回0或1

eg.

int main()
{
    int r=6>5;
    printf("r=%d\n",r);
    return 0;
}

运行结果:1

i<j<k不支持连用,应从左向右依次

eg.

int main()
{
    int i=8;
    int j=10;
    int k=9;
    if(i<j<k)
        printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}

运行结果为:hehe

解析:

i=8,j=10,因为8<10,所以i<j为真,则i<j这一式子为1,。

1再和k=8比,1<j,则打印hehe

三、逻辑操作符:&&,||,!

!:逻辑取反运算符(改变单个表达式的真假)

&&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。

||:或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)。

3.1短路

C语言逻辑运算还有一个特点,它总是先对左侧的表达式求值,在对右边的表达式求值。

如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

四、switch语句

4.1

switch语句是一种特殊形式的if...else结构,用于判断有多个结果的情况。

switch(expression){
case value1:statement
case value2:statement
default:statement
}

根据表达式expression不同的值,执行相应的case分支。如果找不到对应的值,就执行default分支注:

1.switch后的expression必须是整型表达式。

2.case后的值,必须是整型常量表达式。

3.根据需求在每个分支后加上 break,再加上分号。

#include <stdio.h>
int main()
{
    int day=0;
    scanf("%d",&day);
    switch(day)
    {
    case1:
    case2:
    case3:
    case4:
    case5:
        printf("工作日\n");
        break;
    case6:
    case7:
        printf("休息日\n");
        break;
    default:
        print("输入错误,请输入1-7的数字\n");
    }
    return 0;
}

4.2switch语句中的case和default的顺序问题

没有顺序要求,通常把default子句放在最后处理

五、while循环

5.1if和while的对比

if(表达式)
    语句;

while(表达式)
    语句;//如果循环体想包含更多的语句,可以加上大括号

if后边条件满足,打印一次

while后边条件满足,死循环的打印

5.2打印1-10

#include <stdio.h>
int main()
{
    int  i=1;
    while(i<=10)
{
        printf("%d",i);
        i++;
}
    return 0;
}

5.3打印逆序数

#include <stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    while(n)   //1
    {
        printf("%d",n%10);
        n=n/10;
    }
    return 0;
}

六、for循环

6.1语法形式

for(表达式1;表达式2;表达式3)
语句;    //如果循环体想包含更多的语句,可以加上大括号

表达式1:用于循环变量的初始化

表达式2:用于循环体结束条件的判断

表达式3:用于循环变量的调整

6.2打印1-10

#include <stdio.h>
int main()
{
    int i=0;
    for(i=1;i<=10;i++)
    {
        printf("%d",i);
    }
    return 0;
}

七、do-while循环

7.1语法形式

do
    语句;
while(表达式);

7.2打印1-10

int main()
{
    int i=1;
    do
    {
        printf("%d",i);
        i++;
    }while(i<=10);
    return 0;
}

八、break和continue语句

break的作用是永久的终止循环,只要break被执行,直接跳出循环,继续往后执行

continue的作用是跳过本次循环continue后面的代码,在for循环和while循环中有所差异的

九、循环的嵌套

循环支持嵌套

判断i是否是素数(只能被1和本身整除 ):

使用2——i-1之间的数字去试除i

如果i被整除了,不是素数

如果2——i-1之间没有数字可以整除i,是素数

#include <stdio.h>
int main()
{
    int i=0;
    for(i=100;i<=200;i++)
    {
        int j=0;
        int flag=1;//假设i是素数
        for(j=2;j<=i-1;j++)
        {
            if(i%j==0)
            {
                flag=0;
                break;
            }
        }
        if(flag==1)
        {
            printf("%d",i);
        }
    }
    return 0;
}

十、goto语句

goto语句可以实现在同一个函数内跳转到设置好的标号处。

goto end 直接跳到end所在的地方

#include <stdio.h>
int main()
{
    printf("hehe\n");
goto end;
    printf("haha\n");
end:
    printf("跳过haha的打印,直接来到这里\n");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值