zoukankan      html  css  js  c++  java
  • 简单学C——第二天

                           控制结构(-)

     

     

    相信大家对流程图肯定很熟悉。下面我将介绍的正是关于此方面的,c语言中,控制结构大体分为选择结构和循环结构。

    一.选择结构:

        先贴出一般用于选择结构的语法知识:

         1:

      

    #include<stdio.h>
    //第一种
    int main()
    {
       if()
       {
           
       }
    }

       2:

    #include<stdio.h>
    //第二种
    int main()
    {
       if()  //如果括号内的条件满足,则进行if下面的操作
       {
           
       }
       else//否则,则进行else下面的操作
       {
           
       }
    }

    3:

    #include<stdio.h>
    //第三种
    int main()
    {
       if()  //如果if括号内的条件满足,则进行if下面的操作,如不满足则跳过这一语句
       {
           
       }
       else if()//如果else if括号内的条件满足,则进行else if下的操作
       {
           
       }
       else//如果上面两个语句都不满足,则进行else 内的操作
       {
           
       }
    }

        或许这样看有些虚幻。

        还是例题说着方便,下面就用例题来解释吧。

        从键盘上输入三个数,找出其中最大的一个数。

        画一个流程图出来,很容易就能得出,可是如何用C语言程序来表示这个流程图??

       

    #include<stdio.h>
    int main()
    {
        int a,b,c;//定义了三个整数类型的变量
        scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
        /*现在假设a是最大值,分别与b,c比较,如果a<b,吧b的值赋值
        给a,现在a就是a与b中的最大值,同理,与c比较,可得三个数的最值。
        */
        //需要注意的是:c语言中的等号不是”=“,而是”==“
        //”=“,在c中是赋值的意思,即把右边的值,赋值给左边
         if(a<b)
            a=b;
         if(a<c)
            a=c;
         printf("%d",a);
    }

    运行结果:

     此程序虽然比较简单,但是它是有缺点的,如过a不是最大的,b或者c都可能会把它们的值给a,那么a以前的值是什么呢?

    此时,电脑已经不知道了,因为你用了赋值语句把a以前的值覆盖了,不信可以试试。

    #include<stdio.h>
    int main()
    {
        int a,b,c;//定义了三个整数类型的变量
        scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
        /*现在假设a是最大值,分别与b,c比较,如果a<b,吧b的值赋值
        给a,现在a就是a与b中的最大值,同理,与c比较,可得三个数的最值。
        */
        //需要注意的是:c语言中的等号不是”=“,而是”==“
        //”=“,在c中是赋值的意思,即把右边的值,赋值给左边
         if(a<b)
            a=b;
         if(a<c)
            a=c;
         printf("%d
    ",a);
         printf("%d    %d   %d
    ",a,b,c);//输出现在a,b,c的值
    }

    运行结果:

    那么,还有没有其他的方法呢?当然有。现在就列举出如下几种方法,不改变a,b,c的值,但是同时又能找到a,b,c中的最值。

    方法一:

     

    #include<stdio.h>
    int main()
    {
        int a,b,c,d;//增加了一个d变量
        scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
        /*现在假设d是最大值,分别与a,b,c比较较,可得三个数的最值。
        先要让d等于a,b,c三个数当中的某一个值,因为在定义时,a,b,c,d
        都会被随机的赋予一个随机值,然后我们又从键盘里输入值,给了a,b,c;
        但是d还是一个随机数。这个随机数可能比a,b,c都要大。
        */
           d=a;
         if(d<b)
            d=b;
         if(d<c)
            d=c;
         printf("%d
    ",d);
         printf("%d    %d   %d
    ",a,b,c);//输出现在a,b,c的值
         return 0;
    }

    运行结果:

     方法二:

     

    #include<stdio.h>
    int main()
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);   //从键盘输入三个数
        if(a>b&&a>c)   //如果a既比b大,又比c大,输出a
        {
            printf("%d
    ",a);
        }
         if(b>a&&b>c)  //如果b既比a大,又比c大,输出b
        {
            printf("%d
    ",b);
        }
         if(c>a&&c>b)  //如果c既比a大,又比b大,输出c
        {
            printf("%d
    ",c);
        }
        printf("%d   %d   %d
    ",a,b,c); //输出a,b,c
        return 0;
    }

    运行结果,可以试一下与上面的运行结果是一样的

    从上面的代码中,可以看到一个陌生又并不陌生的符号“&&”。  或许一个“&”,看到会很熟悉,它是取地址符,可以在scanf中用到。但是两个“&”,是什么意思呢? 它是数学中的且,即“&&”符号两边的式子都要同时满足,然后整体才满足。与“&&”对应的符号是“||”,即数学中的或,它表示在“||”两边的式子有一个满足就可以。

    方法三:

    #include<stdio.h>
    int main()
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
        if(a>b)   //如果a比b大
        { //如果a比c大,输出a
            if(a>c)
            printf("%d
    ",a);
        }
         if(b>a)  //如果b比a大
        { //如果b比c大,输出b
            if(b>c)
            printf("%d
    ",b);
        }
         if(c>a)  //如果c比a大
        {    //如果c比b大,输出c
            if(c>b)
            printf("%d
    ",c);
        }
        printf("%d   %d   %d
    ",a,b,c); //输出a,b,c
        return 0;
    }

    同样,运行结果是一样的,但是我们能从上面学到什么呢?从上面可以看到,if语句里面还有一个if,用来补充上面的条件.由此可知if语句是可以嵌套使用的。

    看了上面的,应该会对判断语句有一个更深入的理解。可以做其他的一些例题了。

    上机练习:1.从键盘上输入a,b,c。对a,b,c,进行从大到小排序。运行结果如下。

                 2.从键盘上输入五个数,找到其中的最大值和最小值,并输出.

  • 相关阅读:
    c++ 动态生成string类型的数组
    c++ string类型的定义及方法
    c++数字和字符串的转换
    c++ 怎么输出保留2位小数的浮点数
    c++中结构体sort()排序
    O(N)时间的排序
    复杂链表的复制
    反转链表
    判断是否为平衡二叉树
    学习笔记_过滤器详细_2(过滤器JavaWeb三大组件之一)
  • 原文地址:https://www.cnblogs.com/stffer/p/4851676.html
Copyright © 2011-2022 走看看