簡單學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.從鍵盤上輸入五個數,找到其中的最大值和最小值,並輸出.

相關文章
相關標籤/搜索