选择结构的程序设计

这篇博客介绍了C语言中的选择结构,包括if语句的使用,如二次函数求根问题和数值比较排序。文章详细阐述了if语句的一般形式、嵌套使用,以及关系和逻辑运算符的应用。还提到了条件运算符和switch语句在实现多分支选择结构时的作用,特别是如何通过switch简化多分支的处理。示例代码展示了如何在实际编程中应用这些概念。
摘要由CSDN通过智能技术生成

选择结构的程序设计

if语句的选择结构

  • 二次函数求根的if语句

#include<stdio.h>
#include<stdio.h>
int main()
{
    double a,b,c,x1,x2,p,q,disc;
    scanf("%lf%lf%lf",a,b,c);
    disc=b*b-4*a*c;
    if(disc<0)
        printf("This equation hasn't real roots");
    else
    {
        p=-b/z*a;
        q=sqrt(disc)/z*a;
        x1=P+q;
        x2=p-q;
        printf("real roots:\nx1=%7.2f\nx2=%7.2f\n",x1,x2);     
    }
    return 0;
    
    
}
  • 涉及比较数的大小并排序时,也可以用if语句,然后用一个中间变量暂存

if(a>b)
{
    t=a;
    a=b;
    b=t;
}

if 语句的一般形式

  • if(表达式)

    语句

  • if(表达式)

    语句

    else

    语句

  • if(表达式)

    语句;

    else if(表达式)

    语句;

    else if(表达式)

    语句;

    ......

    else if (表达式)

    语句;

    else

    语句;

    //这是if语句的嵌套使用

    //注意:表达式后面不用分号,而语句后面要分号

    //语句如果是复合语句的要用花括号括起来

关系运算符

  • 优先次序

    算术运算符>关系运算符>赋值运算符

  • 六种关系运算符

    • < >

    • <=(小于或等于) >=(大于或等于)

    • ==(等于)*一个等于号的是赋值

    • !=(不等于) remember!!!!

  • d=a>b(若a>b,则d的值为1;else d=0)

逻辑运算符和逻辑表达式

  • 逻辑运算符和优先次序

    • 有三种逻辑运算符:and(&&)、or(||)、Not(!)

    • a&&b : 如果a和b都为真,则结果为真,否则为假

    • a||b :如果a和b有一个以上为真,则结果为真;二者都为假时,结果为假

    • 如果a为假,则!a为真;如果a为真,则!a为假

  • 优先次序:!>算术运算符>关系运算符>(&&和||)>赋值运算符

  • 逻辑表达式

    • 若a=4,则!a的值为0

    • 若a=4,b=5,则a&&b的值为1,a||b的值为1,!a||b的值为1

    • 若a=4,b=0,则a&&b的值为0,a||b的值为1

      通过上面几个例子可发现,由系统给出的逻辑运算结果不是0就是1

    • 逻辑运算符两侧的运算对象还可以是字符型、浮点型、枚举型或指针型纯量型数据

条件运算符和条件表达式

  • c语言唯一一个三目运算符

    表达式1?表达式2:表达式3(条件运算符有两个符号组成:? 和:)

    • max=(a>b)?a:b 若a>b则max=a;若a!>b则max=b

    #include<stdio.h>
    int main()
    {
        char ch;
        scanf_s("%c",&ch);
        ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
        printf("%c\n",ch);
        return 0;
        //输入一个字符,大写转小写,小写正常输出
    }

选择结构的嵌套

if()
    if() 语句1//内嵌if
    else 语句2  
else
    if() 语句3//内嵌if
    else 语句4    
  • 应当注意if与else的配对关系,else总是与它上面离它最近的未配对的if配对

用switch语句实现多分支选择结构

  • switch语句都可以用嵌套if语句来处理,但如果分支较多,则嵌套的if语句层数较多,程序冗长而且可读性降低,而switch可以直接处理多分支选择

  • eg:

    #include<stdio.h>
    int main()
    {
        char grade;
        scanf_s("%c",&grade);
        printf("You score:");
        switch(grade)
        {
                case'A':printf("85~100\n");break;
                case'B':printf("70~84\n");break;
                case'C':printf("60~69\n");break;
                case'D':printf("0~60\n");break;
            default:printf("enter date error!\n");
        }
        return 0;
            //等级grade定义为字符变量,从键盘输入一个大写字母,赋给变量grade,switch得到grade的值并把它和各case中给定的值('A','B','C','D'之一)相比较,如果和其中之一相同,则执行该case后面的语句,输出相应的信息
    }
  • 在执行一个case子句后,应当用break语句使流程跳出switch结构,即终止switch语句的执行

  • 多个case标号可以共用一组执行语句

    • case 'A':
      case 'B':
      case 'C':printf(">60\n");break;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值