zoukankan      html  css  js  c++  java
  • 【C语言入门教程】3.3 条件控制语句

    在程序的 3 种基本结构中,第二种是选择结构,选择结构是根据程序运行时获得的条件,决定程序执行情况。条件控制语句可用来实现这种结构,C 语言提供了 if 语句和 switch 语句两种条件控制语句,if 语句用于二选一的情况,而 switch 语句用于多选一的情况。

    3.3.1 if 语句

    if 语句通过表达式的值判读是否执行与其关联的代码,当表达式结果为 0 时,不执行关联的代码,当表达式结果为非 0 时,则执行关联的代码。使用 if 语句的格式为:

    if (表达式) { 语句 }

    如下例所示:

    int a, b;									// 声明两个整型变量
    printf("请输入数值,格式为:a,b
    ");			// 提示数据输入的格式
    scanf("%d,%d", &a, &b);						// 输入两个数值,存入变量 a 和 b 中
    if (a > b)									// 判读变量 a 是否大于 b
    {
    	printf("数值 a 大于数值 b");				// 当变量 a 大于变量 b 时,执行此输出语句
    }
    
    if (a <= b)									// 判读变量 a 是否不大于 b
    {
    	printf("数值 a 不大于数值 b");
    }

    该代码的作用是比较输入的两个变量的大小,其中使用了两组 if 语句实现,将问题分解为两种不同的条件。在这种情况下,可加入 else 语句简化代码,else 的作用是在前面的 if 条件表达式为 非0 的情况下,执行其后一组关联的代码。如下例所示:

    if (a > b)
    {
    	printf("数值 a 大于数值 b");
    }
    else
    {
    	printf("数值 a 不大于数值 b");
    }

    if 语句也可以实现多选一的条件判读。在比较两个数值的大小时,如果需要考虑两个数值相等的情况,则可以使用 else if 语句实现。如下例所示:

    if (a > b)
    {
    	printf("数值 a 大于数值 b");
    }
    else if (a == b)
    {
    	printf("数值 a 等于数值 b");
    }
    else
    {
    	printf("数值 a 小于数值 b");
    }
    

    if 语句可多层嵌套,即在关联代码中,包含另外的 if 语句。需要注意的是,没组 if 语句要与同一层次的 else if 语句 和 else 语句条件相对应,否则会出现程序逻辑错误。前面的数值比较问题没有判读输入数值是否合法,可加入一组 if 语句解决此问题,如下例代码所示:

    if (scanf("%d,%d", &a, &b) != 2)		// 根据 scanf()函数的返回值,检查输入是否为 2 个数值
    {
    	printf("输入的数值格式不合法");
    }
    else
    {
    	if (a > b)
    	{
    		printf("数值 a 大于 数值 b");
    	}
    	else if (a == b)
    	{
    		printf("数值 a 等于数值 b");
    	}
    	else
    	{
    		printf("数值 a 小于数值 b");
    	}
    }

    上例利用了 scanf() 函数的返回值判读输入的数据是否合法,scanf() 函数会返回有效取得数值的个数。在第一组的 if 语句内,嵌套了比较两个变量大小的 if 语句。

    注意:被嵌套的代码可增加每行前的空格缩进,这种书写习惯能提高代码的可读性,避免混淆了不同层次的条件语句。

    3.3.2 switch 语句

    当需要使用多选一的选择结构时,可使用 switch 语句实现相当于 if 语句与多个 else if 语句的组合,并且能实现将多个满足条件的分支执行。switch 语句的基本结构如下:

    switch (表达式)
    {
        case 常量表达式 1 :
            关联代码 1;
            <break 终止命令>
        case 常量表达式 2 :
            关联代码 2;
            <break 终止命令>
        .
        .
        .
        case 常量表达式 n :
            关联代码 n;
            <break 终止命令>
        default : 关联代码 n+1;
    }

    switch 语句的表达式与 case 子语句的常量表达式进行比较。如果结果相等,则执行 case 子语句内相关联的代码。switch 语句会依次执行每个满足条件的 case 子语句,当一个 case 子语句条件满足后,如果希望终止 switch 语句的执行,可加入 break 命令。break 命令执行后,其后的 case 子语句 和 default 子语句 和 default 子子语句都被跳过。default 子语句是默认执行条件,如果没有 case 子语句满足条件,或者 执行的case 子语句没有使用 break 命令终止 switch 语句执行,则 default相关联的代码被执行。如下例所示:

    int c;
    printf("请输入五分制成绩:");
    scanf("%d", &c);
    switch (c)
    {
    	case 5 :
    		printf("
    成绩为 优秀");
    		break;
    	case 4 :
    		printf("
    成绩为 良好");
    		break;
    	case 3 :
    		printf("
    成绩为 及格");
    		break;
    	default :
    		printf("
    成绩为 不及格");
    }

    switch 语句可嵌套使用,与 if 语句一样需要注意没组语句的对应关系。另外,case 子语句必须用常量表达式作为条件,否则会造成语法错误。

  • 相关阅读:
    javascript进阶,从表达式到引用类型,变量监听
    nodejs和es6,es5等关系
    前后端分离工程带来的问题
    vue难点解析
    angular框架及其UI使用
    Javascript入门和TypeScrip入门
    从熟悉项目到开发项目
    昌平某公司入职一周感想
    css和前端UI框架设计ElementUI
    2020新征程
  • 原文地址:https://www.cnblogs.com/52php/p/5681187.html
Copyright © 2011-2022 走看看