if(表示式) {語句}
功能:如果表示式為真,就執行下面的語句;如果表示式為假,就不執行下面的語句。#include <stdio.h> int main(void) { if (3>2) { printf("I Love Youn"); } return 0; }執行結果:
# include <stdio.h> int main(void) { if (2) { printf("I Love Youn"); } return 0; }執行結果:
# include <stdio.h> int main(void) { int i; if (i = 2) { printf("I Love Youn"); } return 0; }執行結果:
# include <stdio.h> int main(void) { if (0) { printf("I Love Youn"); } return 0; }編譯並執行,什麼也不輸出。
# include <stdio.h> int main(void) { if (0) printf("I Love Youn"); printf("I Love You Toon"); return 0; }執行結果:
{}
。所以在上面這個程式中 if 只能控制第一個 printf,而 if 後的表示式為 0,所以第一個 printf 不會執行,所以“I Love You”不會輸出。而第二個 printf 不在 if 的控制範圍內,所以 if 語句執行完之後順序往下執行第二個 printf,所以“I Love You Too”會輸出。# include <stdio.h> int main(void) { if (0) { printf("I Love Youn"); printf("I Love You Toon"); } return 0; }這樣兩個printf都不會輸出。
{}
。這是規範問題,大家一定要記住。按規範書寫就不容易出錯,看著也舒服。
# include <stdio.h> int main(void) { int i, j; printf("請輸入兩個數:"); //提示輸入 scanf("%d %d", &i, &j); //注意取地址符& if (i>j) { printf("i大於jn"); } else { printf("i小於jn"); } return 0; }執行結果:
%d
之間為什麼要加空格呢?原因只有一個——“好看”。如果不加空格的話,看起來就很擠,不好看。但是儘管如此,仍然建議你們什麼都不要加,統一思維和用法。在實際程式設計中也是不要求加空格的,在這裡只是告訴你們可以這麼做。{}
。但是這裡再強調:if、else、for、while、do 後面的執行語句不論有多少行,就算只有一行也要加{}
。# include <stdio.h> int main(void) { int i, j; scanf("%d %d", &i, &j); if (i>j) { printf("i大於jn"); } ; else { printf("i小於jn"); } return 0; }這個程式你覺得有沒有錯?編譯一下發現有一個錯誤:
illegal else without matching if
意思是:不合法的 else 沒有匹配的 if。表示式1 ? 表示式2 : 表示式3
它就相當於:
if (表示式1)
{
表示式2;
}
else
{
表示式3;
}
# include <stdio.h> # include <math.h> int main(void) { //將三個係數儲存到計算機中 int a = 1; //“=”不表示相等,而是表示賦值 int b = 2; int c = 1; double delta; //delta存放的是b*b - 4*a*c的值 double x1, x2; //分別用於存放一元二次方程的兩個解 delta = b*b - 4*a*c; if (delta > 0) { x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); printf("該一元二次方程有兩個解,x1 = %f, x2 = %fn", x1, x2); } else if (0 == delta) { x1 = (-b) / (2*a); x2 = x1; //左邊值賦給右邊 printf("該一元二次方程有一個唯一解,x1 = x2 = %fn", x1); } else { printf("無解n"); } return 0; }if…else if…else 比 if…else 複雜一點,但也很好理解。if…else if…else 的意思就是:“如果”第一個成立,就執行第一個;“否則如果”第二個成立就執行第二個;“否則”就執行第三個。這個應該很好理解吧,與我們平時講話時的思維邏輯一樣。
#include <stdio.h> int main(void) { float score; printf("請輸入您的考試成績:"); scanf("%f", &score); if (score>=90 && score<=100) { printf("優秀!n"); } else if (score>=80 && score<=89) { printf("良好!n"); } else if (score>=60 && score<=79) { printf("及格!n"); } else if (score>=0 && score<=59) { printf("補考!繼續努力!n"); } else { printf("請重新輸入!n"); } return 0; }
score>=90 && score<=100
千萬不能寫成90<=score<=100
,這樣寫是錯誤的。這是數學中的寫法,在C語言中是不能這麼寫的。但我並不是說這樣寫語法有問題,而是說這樣寫無法實現我們所需要的功能。90<=score<=100
這種寫法是允許的,編譯的時候不會報錯。但如果寫成90<=score<=100
,那麼不管輸入多少分,輸出都是“優秀!”。大家想想為什麼?90<=score<=100
永遠都成立,所以輸出的永遠都是“優秀!”。所以不能那麼寫。# include <stdio.h> int main(void) { float score = 1000; int i = (90<=score<=100); printf("i = %dn", i); return 0; }執行結果:
90<=score<=100
永遠都成立,所以 i 永遠都是 1。