一文搞定C控制语句:分支和跳转

简介: 一文搞定C控制语句:分支和跳转

文章目录


小叙


单分支 if 语句


二分支 if else 语句


多分支 else if 语句


多层嵌套的 if 语句


逻辑运算符


条件运算符(三目运算符)


break 和 continue


多重选择:switch 和 break


goto 语句


字符输入输出函数 getchar() 和 putchar()


ctype.h 系列的字符函数


小结


小叙



随着循环的学习,我们可以用程序循环重复执行任务,要知道计算机最擅长做计算和循环了,为了解决更复杂的问题,C还提供了控制和组织程序的分支结构。还将学习逻辑运算符,使用逻辑运算符使得条件判断体系更加完善。一点点积累吧。



单分支 if 语句


语法:


if (关系表达式)
  语句;


栗子:


if (i<8)
  printf("小屁孩");//简单语句
if (i<8)
{
  i+=18;
  printf("\n");//复合语句
}


if 语句由复合语句构成时,整个 if 语句仍然被视为一条语句。


#include<stdio.h>
int main()
{
    int a;
    printf("请输入你的成绩\n");
    while (scanf("%d",&a)<100)
    {
    if (a>0 && a<60)
        printf("不及格\n");
    if (a>=60 && a<80)
        printf("良好\n");
    if (a>=80 && a<=100)
        printf("牛啊\n");
    if(a==0)
        printf("wc!!!\n");
        return 0;
    }/* code */
}


不难发现使用单分支还是有点不够意思,下面 if else解决你的烦恼。




二分支 if else 语句



if else 可以实现在两条语句之间进行选择


语法:


if (关系表达式)
  语句1;
else
  语句2;


如果条件为真,就去执行语句1,否则就去执行语句2


这里提醒自己一下,C并没有要求代码一定要缩进,但是好的缩进的代码看着一目了然,维护也容易,Python就是严格要求缩进的语言,我觉得它是追求极致的简洁,用缩进来省略掉花括号。可以理解一下


实例:


if(a>0)
  printf("逗号");
  a++;
else
  printf("sg");


上面代码就会出错,因为if和else之间只允许有一条语句(可以是简单语句也可以是复合语句)


修改:加上花括号就构成了一条复合语句


if(a>0)
{
  printf("逗号");
  a++;
}
else
  printf("sg");


多分支 else if 语句


#include<stdio.h>
int main()
{
    int i;
    printf("请输入\n");
    scanf("%d",&i);
    if(i>0 && i<60)
        printf("不及格\t");
    else if (i>=60 && i<70)
        printf("及格\t");
    else if (i>=80 && i<100)
        printf("得奖\t");
    else if (i==100)
        printf("李云龙向你竖起大拇指\t");
    else
        printf("wc\t");
}


多层嵌套的 if 语句


#include<stdio.h>
int main(){
    int i;
    printf("请输入");
    scanf("%d",&i);
    if(i>3)
        if(i<=8)
            printf("xiao hai");
        else
            printf("da hai?");
}


逻辑运算符



&&  //逻辑与(and)
||  //逻辑或(or)
!  //逻辑非(no)
a && b  //a和b都为真,整体才为真
a || b  //a或b有一个为真,则整体就为真
! a>b //如果a>b是成立的,为真,那么,!a>b就为假
1>2 && 2>1  //假,只有左右同时为真才为真,一个为假就为假
1>2 || 2>1  //真,有一个为真就为真
!1>2  //真,因为1<2


这里有一个头文件


#include <ios646.h>


引入这个头文件后,可以使用and代替&&,or代替||,not代替!


练习输出&&时间 == 完美


条件运算符(三目运算符)



C提供了条件表达式作为表达if else语句的一种便捷方式


语法:

a?b:c;


如果条件a为真那么执行b,否则执行c

需要3个运算对象,每个运算对象都是一个表达式


当然,任何事物都有优点缺点,月有阴晴圆缺。


那么优点就是简洁,缺点就是表达式不能是复合语句了,只能是一个表达式。


break 和 continue


一般来说,程序进入循环,在下一次循环测试之前会执行循环体中的所有语句。break 和 continue 语句可以根据循环体中的测试结果来忽略一部分的循环内容,甚至结束循环。


continue语句


在3种循环都可使用,执行到该语句时,就会跳过本次迭代的剩余部分,并开始下一轮的迭代


如果在嵌套循环内里使用,则只会影响包含该语句的内层循环


continue;


break语句


程序在执行到循环中的break语句时,会终止包含它的循环,并去执行下一阶段,

break 语句位于嵌套循环内,它只会影响包含它的当前循环


break;


多重选择:switch 和 break


if else if 可以实现多个选项中进行选择,但是,大多数情况下,使用switch语句更方便。

switch 括号中的测试表达式的值应该是一个整数值(包括 char 类型)


case标签必须是整数类型(包括char类型)的常量或整型常量表达式(表达式中只含整型常量)


不能用变量做case标签


如果没有break就会从匹配标签开始执行到switch末尾

default就是都没有匹配成功的情况下执行default里的语句


构造:


#include<stdio.h>
int main(){
    switch (expression)
    {
    case /* constant-expression */:
        /* code */
        break;
    default:
        break;
    }
}


多重标签



switch (expression)
    {
    case 'a'/* constant-expression */:
    case 'A'    
            /* code */
        break;
    default:
        break;
    }


如果expression是字母大写A或小写a都执行下面的code


goto 语句


goto语句建议“谨慎使用”或者说根本用不到


goto语句分为两部分:goto和标签名,标签🏷的命名遵循变量名的命名规则。比如:


goto part1;
……
part1: printf("出错了");


原则上,在C程序不需要用到 goto 语句。

C程序员可以接受一种 goto 的用法,出现问题时从一组嵌套循环中跳出(一条brea语句只能跳出一侧层循环)


字符输入输出函数 getchar() 和 putchar()


getchar()函数不带任何参数,它从输入队列中返回下一个字符。例如:


ch = getchar();
//与下面语句的效果相同
scanf("%c",&ch);


putchar()函数打印它的参数。例如:


putchar(ch);
//与下面语句的效果相同
printf("%c",ch);


这些函数只处理字符,所以它们比通用的scanf()和printf()更快,更简洁,且不需要转换说明,通常定义在stdio.h的头文件里


ctype.h 系列的字符函数


20210707153431591.png


小结



1.重点掌握 C的 两大分支结构 if else 和 switch及嵌套,以及 break 和 continue的使用


2.一些运算符和库函数的记忆和使用


3.goto 语句的了解及用法



相关文章
|
3月前
|
Go C语言
分支语句与循环语句,详细讲解
分支语句与循环语句,详细讲解
|
4月前
|
C语言
分支和循环语句
分支和循环语句
32 1
|
9月前
分支和循环语句(2)补充goto语句
分支和循环语句(2)补充goto语句
47 1
|
1月前
|
编译器 C语言
语句、分支与循环详解
语句、分支与循环详解
|
4月前
|
缓存 编译器 Go
分支语句和循环语句
分支语句和循环语句
64 0
|
10月前
|
编译器 C语言 C++
分支语句和循环语句上
分支语句和循环语句
52 0
分支语句和循环语句上
|
9月前
|
数据安全/隐私保护 C语言
分支语句与循环语句(2)
分支语句与循环语句(2)
53 0
|
9月前
|
C语言
分支语句和循环语句(1)
分支语句和循环语句(1)
44 0
|
10月前
|
缓存 Go 数据安全/隐私保护
分支语句和循环语句下
分支语句和循环语句
70 0
|
10月前
|
算法 数据安全/隐私保护
分支语句与循环语句——练习
分支语句与循环语句——练习
43 0