c语言---控制语句

目录

一、if语句

二、switch语句

三、while循环

四、for循环

五、do...while()循环

六、goto语句

简介

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;

2. 循环执行语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

一、if语句

else的匹配:else是和它离的最近的if匹配的。

C语言中,0就是假,非0就是真

int main()
{
	int a = 0;
	int b = !a;
	printf("b=%d\n", b);
	int flag = 5;
	if (flag)             //如果flag为真,做什么事情
		printf("hehe\n");
	if (!flag)            //如果flag为假,做什么事情
		printf("haha\n");
	return 0;
}

 当函数里面有两个return时的书写格式。

#include <stdio.h>
int test()
{
	int a = 5;
	if (a)
	{
		return 1;
	}
	else
	{
		return 0;
	}
int main()
{
	int ret = test();
	printf("ret = %d\n", ret);
	return 0;
}

 二、switch语句

在switch语句中的 break:

switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

#include <stdio.h>
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;    
        case 4:
            printf("星期四\n");
            break;    
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");    
            break;
   }
    return 0;
}

有时候我们的需求变了:

1. 输入1-5,输出的是“weekday”;

2. 输入6-7,输出“weekend”

所以我们的代码就应该这样实现了:

#include <stdio.h>
//switch代码演示
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0;
}

break语句的实际效果是把语句列表划分为不同的分支部分。

下面看一个函数里面break的实际使用:break可以让函数直接结束。

#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:
        m++;
    case 2:
        n++;
    case 3:
        switch (n)
        {//switch允许嵌套使用
        case 1:
            n++;
        case 2:
            m++; n++;
            break;
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}

最后的结果是m=5 , n=3

编程好习惯

在最后一个 case 语句的后面加上一条 break语句。

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

三、while循环

下面是一个死循环

//continue 代码实例1
#include <stdio.h>
int main()
{
     int i = 1;
     while(i<=10)
     {
         if(i == 5)
             continue;
         printf("%d ", i);
         i = i+1;
     }
     return 0;
}

这里代码输出的结果

1 2 3 4然后卡死了

//continue 代码实例2
#include <stdio.h>
int main()
{
     int i = 1;
     while(i<=10)
     {
        i = i+1;
        if(i == 5)
             continue;
        printf("%d ", i);
     }
     return 0;
}

这里代码输出的结果

2 3 4 6 7 8 9 10 11

再看几个代码:

//代码1 适当的修改是可以用来清理缓冲区的.
#include <stdio.h>
int main()
{
     int ch = 0;
     while ((ch = getchar()) != EOF)
           putchar(ch);
     return 0;
}

//代码2   只打印数字字符,跳过其他字符的、
#include <stdio.h>
int main()
{
    char ch = '\0';
    while ((ch = getchar()) != EOF)
    {
        if (ch < ‘0’ || ch > ‘9’)
            continue;
        putchar(ch);
    }
    return 0;
}

四、for循环

一些for循环的变种

#include <stdio.h>
int main()
{
     //代码1
     for(;;)
     {
         printf("hehe\n");
     }    
    //代码2
    int i = 0;
    int j = 0;
    //这里打印多少个hehe?
    for(i=0; i<10; i++)
    {
        for(j=0; j<10; j++)
        {
             printf("hehe\n");
        }
   }
    
    //代码3
    int i = 0;
    int j = 0;
    //如果省略掉初始化部分,这里打印多少个hehe?
    for(; i<10; i++)
    {
        for(; j<10; j++)
        {
             printf("hehe\n");
        }
    }
    
    //代码4-使用多余一个变量控制循环
    int x, y;
    for (x = 0, y = 0; x<2 && y<5; ++x, y++)
    {
        printf("hehe\n");
    }
    return 0;
}

五、do...while()循环

#include <stdio.h>
int main()
{
     int i = 10;
     do
    {
        if(5 == i)
            break;
        printf("%d\n", i);
    }while(i<10);
    return 0;
}

#include <stdio.h>
int main()
{
     int i = 10;    
     do
     {
        if(5 == i)
            continue;
        printf("%d\n", i);
     }while(i<10);  
     return 0;
}

六、goto语句

简单介绍一下goto

        C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。 例如:一次跳出两层或多层循环。 多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;
       }
   }
    …
error:
 if(disaster)
         // 处理错误情况

下面是使用goto语句的一个例子,然后使用循环的实现方式替换goto语句:

一个关机程序

#include <stdio.h>
int main()
{
    char input[10] = {0};
    system("shutdown -s -t 60");  //这是电脑关闭的指令 60代表60秒后关闭
again:
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s", input);
    if(0 == strcmp(input, "我是猪"))   
    //strcmp的返回值是数字,所以说要用==来进行比较
    {
        system("shutdown -a");   //这是把前面的关闭指令结束的指令
    }
    else
    {
        goto again;
    }
    return 0;
}

而如果不适用goto语句,则可以使用循环:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char input[10] = {0};
    system("shutdown -s -t 60");
    while(1)
   {
        printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
        scanf("%s", input);
        if(0 == strcmp(input, "我是猪"))
       {
            system("shutdown -a");
            break;
       }
   }
    return 0;
}

最后再把上面这个程序里面用到的shutdown的链接放上。

shutdown_百度百科 (baidu.com)https://baike.baidu.com/item/shutdown/10469108?fr=aladdin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值