1. 程式人生 > >C語言:if語句的巢狀

C語言:if語句的巢狀

任務程式碼:

關於分段函式的求解:

題目:

#include <stdio.h>  
#include <math.h>  
int main ( )  
{  
    double x, y;  
    scanf("%lf", &x);  
    if (x<2)  
        y=x;  
    else if(x<6)  //此處已經自然滿足x>=2的條件  
        y=x*x+1;  
    else if(x<10)  
        y=sqrt(x+1);  
    else //自然是x>=10的時候執行下一語句  
        y=1/(x+1);  
    printf("%lf\n", y);  
    return 0;  
}  

油量監控:
#include <stdio.h>

int main ( )  
{  
    double fuel_reading;  
  
  
    printf("輸入油量表讀數(0-1): ");  
    scanf("%lf", &fuel_reading);  
  
  
    //下面加上花括號使if-else能夠正確匹配  
    if (fuel_reading < 0.75)  
    {  
        if (fuel_reading < 0.25)  
            printf("油量低,注意!\n");  
    }  
    else  
    {  
        printf("高油量,不必停!\n");  
    }  
    return 0;  
}  
}

一元二次方程的求解:


#include <stdio.h>  
#include <math.h>  
int main ( )  
{  
    float a,b,c,d,pr,pi,x1,x2;  
    scanf("%f %f %f",&a,&b,&c);  
    printf("a=%f,b=%f,c=%f\n",a,b,c);  
    if(a==0)  
    {  
        if(b!=0)  
            printf("only one solution x=%f\n", -c/b);  
        else if(c!=0)  
            printf("no solution\n");  
        else  
        printf("x is any value\n");  
    }  
    else  
    {  
        d=b*b-4*a*c;  
        if(d>=0)  
        {  
            x1=(-b+sqrt(d))/(2*a);  
            x2=(-b-sqrt(d))/(2*a);  
            printf("x1=%6.2f, x2=%6.2f\n",x1,x2);  
        }  
        else  
        {  
            pr=-b/(2*a);  
            pi=sqrt(-d)/(2*a);  
            printf("x1=%6.2f +%6.2fi\n",pr,pi);  
            printf("x2=%6.2f -%6.2fi\n",pr,pi);  
        }  
    }  
    return 0;  
}  


執行情況:


知識總結:

多分支結構經常用於求分段函式的值。


另外能用多分鐘儘量拒絕單分支因為這樣可以實誠徐避免重複運算!


為了避免誤用,最好使每一層內嵌的if語句都有對應的else

心得體會:

iif語句的巢狀,很考驗一個人的邏輯歸納能力,網內網運用很好的if語句巢狀,能將繁瑣的程式碼簡化很多,這是一種有效的程式碼優化過程的!

在未來的學習中,多實用if語句的巢狀,可以馴良一個人統籌事情的完整能力!