简单学C——次日

                       控制结构(-)spa

 

 

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

一.选择结构:blog

    先贴出通常用于选择结构的语法知识:排序

     1:数学

  

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

   2:io

#include<stdio.h>
//第二种
int main()
{
   if()  //若是括号内的条件知足,则进行if下面的操做
   {
       
   }
   else//不然,则进行else下面的操做
   {
       
   }
}

3:class

#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\n",a);
     printf("%d    %d   %d\n",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\n",d);
     printf("%d    %d   %d\n",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\n",a);
    }
     if(b>a&&b>c)  //若是b既比a大,又比c大,输出b
    {
        printf("%d\n",b);
    }
     if(c>a&&c>b)  //若是c既比a大,又比b大,输出c
    {
        printf("%d\n",c);
    }
    printf("%d   %d   %d\n",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\n",a);
    }
     if(b>a)  //若是b比a大
    { //若是b比c大,输出b
        if(b>c)
        printf("%d\n",b);
    }
     if(c>a)  //若是c比a大
    {    //若是c比b大,输出c
        if(c>b)
        printf("%d\n",c);
    }
    printf("%d   %d   %d\n",a,b,c); //输出a,b,c
    return 0;
}

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

 

看了上面的,应该会对判断语句有一个更深刻的理解。能够作其余的一些例题了。

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

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

相关文章
相关标签/搜索