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

举报
周棋洛 发表于 2022/05/25 23:23:23 2022/05/25
【摘要】 文章目录 小叙单分支 if 语句二分支 if else 语句多分支 else if 语句多层嵌套的 if 语句逻辑运算符条件运算符(三目运算符)break 和 continue多重选择:switc...


小叙

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

在这里插入图片描述


单分支 if 语句

语法:

if (关系表达式)
	语句;

  
 
  • 1
  • 2

栗子:

if (i<8)
	printf("小屁孩");//简单语句

  
 
  • 1
  • 2
if (i<8)
{
	i+=18;
	printf("\n");//复合语句
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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 */
       
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

在这里插入图片描述


二分支 if else 语句

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

语法:

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

  
 
  • 1
  • 2
  • 3
  • 4

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

实例:

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

多分支 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");
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

多层嵌套的 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?");
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

逻辑运算符

&&		//逻辑与(and)
||		//逻辑或(or)
!		//逻辑非(no)

  
 
  • 1
  • 2
  • 3
a && b	//a和b都为真,整体才为真
a || b	//a或b有一个为真,则整体就为真
! a>b	//如果a>b是成立的,为真,那么,!a>b就为假

  
 
  • 1
  • 2
  • 3
1>2 && 2>1  //假,只有左右同时为真才为真,一个为假就为假
1>2 || 2>1	//真,有一个为真就为真1>2		//真,因为1<2

  
 
  • 1
  • 2
  • 3

这里有一个头文件

#include <ios646.h>

  
 
  • 1

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

练习输出&&时间 == 完美
在这里插入图片描述


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

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

语法:

a?b:c;

  
 
  • 1
  • 如果条件a为真那么执行b,否则执行c
  • 需要3个运算对象,每个运算对象都是一个表达式
  • 当然,任何事物都有优点缺点,月有阴晴圆缺。
  • 那么优点就是简洁,缺点就是表达式不能是复合语句了,只能是一个表达式。

break 和 continue

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

continue语句

  1. 在3种循环都可使用,执行到该语句时,就会跳过本次迭代的剩余部分,并开始下一轮的迭代
  2. 如果在嵌套循环内里使用,则只会影响包含该语句的内层循环
continue;

  
 
  • 1

break语句

  1. 程序在执行到循环中的break语句时,会终止包含它的循环,并去执行下一阶段,
  2. break 语句位于嵌套循环内,它只会影响包含它的当前循环
break;

  
 
  • 1

多重选择: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;
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

多重标签

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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


goto 语句

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

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

goto part1;

……

part1: printf("出错了");

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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


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

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

ch = getchar();

//与下面语句的效果相同

scanf("%c",&ch);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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

putchar(ch);

//与下面语句的效果相同


printf("%c",ch);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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


ctype.h 系列的字符函数

在这里插入图片描述


小结

  1. 重点掌握 C的 两大分支结构 if else 和 switch及嵌套,以及 break 和 continue的使用
  2. 一些运算符和库函数的记忆和使用
  3. goto 语句的了解及用法

在这里插入图片描述
天气什么的,就这样疯狂下去吧,我只是想,再一次的,见到她啊!


文章来源: blog.csdn.net,作者:周棋洛ყ ᥱ ᥉,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_53321320/article/details/118540815

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。