• C语言基础学习day05


    顺序结构

    示例一:

    输入三角形的三边长,求三角形面积

    已知三角形的三边长a,b,c,则该三角形的面积公式为

    #include<math.h>
    #include<stdio.h>
    void main()
    {
        double a,b,c,s,area;
        scanf("%lf,%lf,%lf",&a,&b,&c);
        s=(a+b+c)/2.0;
        area=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("a=%7.2f,b=%7.2f,c=%7.2f
    ",a,b,c,s);
        printf("area=%7.2f
    ",area);
    }

    分支程序设计

    关系运算符和表达式比较大小

     

     关系表达式的值是真和假,用1和0表示

    #include<stdio.h>
    int main(void)
    {
        int true_val, false_val;
        true_val = (10 > 2); // 关系为真的值
        false_val = (10 == 2); // 关系为假的值
        printf("true = %d; false = %d 
    ", true_val, false_val);
        return 0;
    }

    逻辑运算符和表达式

    与运算:&&        参与运算的两个值都为真,结果才为真,否则为假

    或运算:||           参与运算的两个值只要有一个为真,结果就为真,两个都为假,结果为假

    非运算:!         参与运算量为真,结果为假,参与运算量为假,结果为真

    void main()
    {    
        int score;
        printf("请输入一个分数:
    ");
        scanf("%d",&score);
        if(score < 60)
        {
            printf(" the score is E");
        }
        //else if(60<=score<70)
        else if ((score>60 || score==60)&&score<70)
        {
            printf("the score is D");
        }
        else if((score>70||score==70)&&score<80)
        {
            printf("the score is C");
        }
        else if((score>80||score==80)&&score<90)
        {
            printf("the score is  B");
        }
        else
        {
            printf("the score is A");
        }
        
    }
    void main()
    {
        int a,b,c,temp;
        printf("请输入三个数:
    ");
        scanf("%d%d%d",&a,&b,&c);
        if(a>b)
        {
            temp=a;
            a=b;
            b=temp;
        }
        if(a>c)
        {
            temp=a;
            a=b;
            b=temp;
        } 
        if(b>c)
        {
            temp=b;
            b=c;
            c=temp;
        }
        printf("%d %d %d
    ",a,b,c);
    }

    if语句的嵌套

    在嵌套内的if语句可能又是if-else型的

    为了避免二异性,C语言规定,else总是与它前面最近的if配对

    条件表达式通常用于赋值语句中

    例如条件语句

    if(a>b)max=a;

    else max=b;

    可用条件表达式写为 max=(a>b)?a:b;

    执行该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max

    使用条件表达式时,还应注意以下几点:

    1. 条件运算符的运算优先级低于关系运算符和算数运算符,但高于赋值符,因此,max=(a>b)?a:b;可以去括号写为max=a>b?a:b;

    2. 条件运算符?和:是一对运算符,不能分开单独使用

    3. 条件运算符的结合方向是自右向左

    switch语句

    C语言还提供了另一个用于多分支选择的switch语句,其一般形式为:

    switch ( 整型表达式)
    {
            case 常量1:语句 <--可选
            case 常量2:语句 <--可选
            default : <--可选
            语句 <--可选
    }

    其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断

                      继续执行后面所有case后的语句,如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句

    void main()
    {
        int a;
        printf("请输入一个整数:");
        scanf("%d",&a);
        switch(a)
        {
            case 1:printf("星期一");break;
            case 2:printf("星期二");break;
            case 3:printf("星期三");break;
            case 4:printf("星期四");break;
            case 5:printf("星期五");break;
            case 6:printf("星期六");break;
            case 7:printf("星期日");break;
            default:printf("错误");
        }
     } 

    注意以下几点:

    1. 在case后的各常量表达式的值不能相同,否则会出现错误

    2. 在case后,允许有多个语句,可以不用{}括起来

    3. 各case和default子句的先后顺序可以变动,而不会影响程序执行结果

    4. default子句可以省略不写

    tips:全选然后按alt+F8会排整好代码的顺序

    void main()
    {
        double a,b;
        char c;
        printf("请输入要计算的公式:");
        scanf("%lf%c%lf",&a,&c,&b);
        switch(c)
        {
            case '+':
                printf("%lf
    ",a+b);
                break;
            case '-':
                printf("%lf
    ",a-b);
                break;
            case '*':
                printf("%lf
    ",a*b);
                break;
            case '/':
                printf("%lf
    ",a/b);
                break;
            default:
                printf("您输入的公式有误"); 
        }
        
    }
    void main()
    {
        double p,w,s,d; 
        printf("请输入基本运费:
    ");
        scanf("%lf",&p);
        printf("请输入货物重:
    ");
        scanf("%lf",&w);
        printf("请输入距离:
    ");
        scanf("%lf",&s);
        if (s<250)
        {
            d=0;
        }
        else if(s>250||s==250 &&s<500)
        {
            d=0.02;
        }
        else if(s>500||s==500 &&s<1000)
        {
            d=0.05;
        }
        else if(s>1000||s==1000 &&s<2000)
        {
            d=0.08;
        }
        else if(s>2000||s==2000 &&s<3000)
        {
            d=0.10;
        }
        else if(s>3000||s==3000 )
        {
            d=0.15;
        }
        printf("总运费是:%lf
    ",p*w*s*(1-d));
    }

    循环程序设计

    特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止

    给定的条件成为循环条件,反复执行的程序段称为循环体

    C语言提供了多种循环语句,可以组成各种不同形式的循环结构

    1. 用goto语句和if语句构成循环

    2. 用while语句

    3. 用do-while语句

    4. 用for语句

    goto语句以及goto语句构成循环

    goto语句是一种无条件转义语句,与BASIC中的goto语句相似,goto语句的使用格式:

    goto 语句标号;

    其中标号是一个有效的标识符,这个标识符加上一个":"一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句,另外标号必须在goto语句同处于一个函数中,但可以不在一个循环层中

    通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行

    但是注意:goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理

    实现从1+2+3+....+100

    #include<stdio.h>
    void main()
    {
        int i,sum=0;
        i=1;
        
        loop:if(i<=100)
        {
            sum=sum+i;
            i++;
            goto loop;
        }
        printf("%d
    ",sum);
     } 

    loop是语句标号

    while语句

    while语句的一般形式为:

    while(表达式)语句

    其中表达式是循环条件,语句为循环体

    while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句,其执行过程可用下图表示

    注意:如果表达式的值一开始就为0,则语句一次也不会执行

    实现从1+2+3+....+100

    #include<stdio.h>
    void main()
    {
        int n,sum;
        n=1;
        sum=0;
        while(n<=100)
        {
            sum+=n;
            n+=1;
        }
        printf("%d",sum);
     } 

     使用while语句应注意以下几点:

    1. while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环

    2. 循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句

    do-while语句

    一般形式:

    do
    
        语句
    
    while(表达式);

    这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断是否为真,如果为真则继续循环,如果为假,则终止循环,因此,do-while循环至少要执行一次循环语句

    实现从1+2+3+....+100

    ude<stdio.h>
    void main()
    {
        int n,sum;
        n=1;
        sum=0;
        do
        {
            sum+=n;
            n+=1;
        }while(n<=100);
        printf("%d",sum);
     } 

    for语句

    一般形式:

    for (表达式1;表达式2;表达式3)语句

    执行过程如下:

    1. 先求解表达式1

    2. 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3步;若其值为假(0),则循环结束,转到第5步

    3. 求解表达式3

    4. 转回上面第2步继续执行

    5. 循环结束,执行for语句下面的一个语句

    for(循环变量赋初值;循环条件;循环变量增量)语句

    循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值,循环条件是一个关系表达式,它决定什么时候退出循环,循环变量增量,定义循环控制变量

    每循环一次后按什么方式变化,这三个部分之间用  ;  隔开

    for(i=1;i<=100;i++)
    {
           sum=sum+i;
    }

    先给i赋初值1,判断i是否小于100,若是则执行语句,之后值增加1,再重新判断知道条件为假,即i>100时,结束循环

    #include<stdio.h>
    void main()
    {
        int n,sum;
        n=1;
        sum=0;
        for(n=1;i<=100;n++)
        {
            sum+=n;
        }
     } 

    注意:

             1. for循环中的表达式1,表达2和表达式3都是选择项,即可以缺省,但  ;  不能缺省

             2. 省略了表达式1,表示不对循环控制变量赋初值

             3. 省略了表达式2,则不做其他处理时便成死循环

             4. 如果省略了表达式3,则不对循环控制变量进行操作,这时可在语句中加入修改循环控制变量的语句

    #include<stdio.h>
    void main()
    {
        int n,sum;
        n=1;
        sum=0;
        for(n=1;n<=100;)
        {
            sum+=n;
            n++;
        }
        printf("%d",sum);
     } 

                5.  3个表达式都可以省略

                    for(; ;)语句相当于while(1)语句

                6. 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式

    #include<stdio.h>
    void main()
    {
        int n,sum;
        for(n=1,sum=0;;n<=100;)
        {
            sum+=n;
            n++;
        }
        printf("%d",sum);
     } 

               7. 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式

               8. 表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值非零,就执行循环体

    #include<stdio.h>
    void main()
    {
        int i,j;
        for(i=1;i<=6;i++)
        {
            printf("
    ");
            for(j=1;j<=i;j++)
            {
                putchar('*');
            }
        }
    }

    程序1. 有1,2,3,4数字,能组成多少个互不相同且不重复的三位数,都是多少 

    void main()
    {
        int i,j,k;
        printf("
    ");
        for(i=1;i<5;i++)
        {
            for(j=1;j<5;j++)
            {
                for(k=1;k<5;k++)
                {
                    if(i!=k&&i!=j&&j!=k)
                    {
                        printf("%d%d%d
    ",i,j,k);
                    }
                }
            }
        }
        
     } 

    break和continue语句

    break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句

    一般形式:break;

    break语句不能用于循环语句和switch语句之外的任何其他语句中

    注意:

            1, break语句对if-else的条件语句不起作用

            2, 在多层循环中,一个break语句只向外跳一层

    void main()
    {
        int r;
        float area;
        float pi=3.14159;
        for(r=1;r<=10;r++)
        {
            area=pi*r*r;
            if (area>100)
            {
                break;
            }
            printf("r=%d,area=%f
    ",r,area);
        }
    }

    break跳出for循环

    continue语句

    作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定

    continue语句和break语句的区别

    continue语句只结束本次循环,而不是终止整个循环的执行

    break语句则是结束整个循环过程,不再判断执行循环的条件是否成立

    例题把100~200之间的不能被3整除的数输出

    void main()
    {
        int n;
        for (n=100;n<=200;n++)
        {
            if(n%3==0)
                continue;
            printf("%d
    ",n);
        }
    }

    例题2 求π

    #include<math.h>
    void main()
    {
        int s;
        float n,t,pi;
        t=1;
        pi=0;
        n=1.0;
        s=1;
        while(fabs(t)>1e-6)
        {
            pi=pi+t;n=n+2;s=-s;t=s/n;
        }
        pi=pi*4;
        printf("pi=%10.6f
    ",pi);
    }
  • 相关阅读:
    阅读 Android源码的一些姿势
    Unity3d UGUI 界面适配 实例解析 三种适配方式
    Unity3D Android手机开发环境配置
    DOTween教程
    DoTween 部分中文文档
    C# 委托、事件,lamda表达式
    EditText中输入信息的限制的方法
    Android中shape中的属性大全
    Android 高版本API方法在低版本系统上的兼容性处理
    python 绘制f(x)=x^2
  • 原文地址:https://www.cnblogs.com/yangyuqing/p/10267731.html
Copyright © 2020-2023  润新知