C语言选择结构程序设计

一、关系运算符和关系表达式

1. 关系运算符

关系运算符 解释
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于

2. 关系表达式

如果一个表达式最后进行的是关系运算,则该表达式就是关系表达式。

关系表达式的值是一个逻辑值,数学中用“真”、“假”来表示,C语言中用1和0来表示。

二、逻辑运算符和逻辑表达式

1. 逻辑运算符

逻辑运算符 解释 优先级
! 否定、取反 最高
&& 两边为真结果为真 较高
|| 一边为真结果为真 较低

 2. 逻辑表达式

C语言中,任何表达式(包括变量、常量)都有逻辑值,只要表达式的值非0,则认为它的逻辑值为“真”(即1),只有表达式的值为0时,其逻辑值才为“假”(即0)。

①3+2的值是5,若参与逻辑运算,则取它的逻辑值1;

②-5参与逻辑运算时,逻辑值也是1;

③float x=1.2; 则x的逻辑值是1;

④!’A‘的逻辑值为0。

三、if语句

1. 简单if语句

#include
int main()
{
    int a=2,b=3;
    if(a>b)
        printf("a大于b");
    else
        printf("a小于等于b");
    return 0;
}

2. 条件运算

表达式1 ? 表达式2 :表达式3

含义:若表达式1的值非0,则该条件表达式的值是表达式2的值,否则是表达式3的值。

#include
int main()
{
    int a,b,max;
    printf("Input a,b:");
    scanf("%d,%d",&a,&b);
    max = a>b?a:b;    //用条件表达式计算两个整数的最大值
    printf("max = %d\n",max);
    return 0;
}

 3. 多分支控制if语句

#include
int main()
{
    int x;
    scanf("%d",&x);
    if(x>=90)
        printf("优");
    else if(x>=80)
        printf("良");
    else if(x>=70)
        printf("中");
    else if(x>=60)
        printf("及格");
    else
        printf("不及格");
    return 0;
}

 4. 嵌套if语句

#include
#include
#define EPS 1e-6
int main()
{
    float a,b,c,disc;
    scanf("%f,%f,%f",&a,&b,&c);
    disc = b*b-4*a*c;    //计算判别式
    if(fabs(a)<=EPS)    //a=0时,输出不是二次函数
    {
        printf("这个函数不是二次函数");
    }
    else
    {
        if(fabs(disc)<=EPS)
        {
            printf("这个方程有两个相等的根");
        }
        else
        {
            printf("这个方程有两个不相等的根");
        }
    }
    return 0;
}

在这段代码中,为什么不直接将实数与0比较呢?

因为在这个例子中,实数在内存中是以浮点形式存储的,所占的位数是有限的,比如说,float(0.0000000000001)=0.000000,浮点数并非真正意义上的实数,只是在某种范围内的近似,因此也只能用近似的方法将实数与0进行比较。

四、switch语句

#include
int main()
{
    int x;
    char grade;
    scanf("%d",&x);
    switch(x/10)
    {
        case 10:
        case 9: grade='A';break;    //用break终止switch语句的执行
        case 8: grade='B';break;
        case 7: grade='C';break;
        case 6: grade='D';break;
        default: grade='E';
    }
    return 0;
}
       

 常见错误:

①switch后面的表达式不加括号,如switch x/10 应该是switch (x/10);

②switch后面多写了分号,如“switch (x/10);”应该是“switch (x/10)”;

③case与后面的表达式之间不写空格,如“case10:”应该是“case 10:”;

④漏写break;。

 

你可能感兴趣的:(c语言,开发语言)