阅读 21

Web前端架构师

download:Web前端架构师

超大复杂项目+高端技术+大厂规范+全局架构思维
系统培养大厂P7技术专家/中小厂前端Leader
6~8个月,让3年+前端完成质的飞跃

剖析:由於當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共轭復根。其程序段如下:

d=b

b-4

a*c;

if(d>=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf("x1=%8.4f,x2=%8.4f\n",x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf("x1=%8.4f+%8.4fi\n"r, i);

printf("x2=%8.4f-%8.4fi\n"r,i);

}

③ if...else if语句
其语句格式爲:

if(條件1) {分支1};

else if(條件2) {分支2}

else if(條件3) {分支3}

……

else if(條件n) {分支n}

else {分支n+1}

意義是,從上到下依次檢測判別條件,當某個判別條件成立時,則執行其對應的分支,然後跳到整個 if else 语句之外繼續執行其他代码。假如一切判別條件都不成立,則執行语句塊n,然後繼續執行後續代码。

也就是說,一旦遇到可以成立的判別條件,則不再執行其他的分支,所以最終只能有一個分支被執行。

嵌套分支语句雖可處理多個入口和出口的問題,但超越3重嵌套後,语句構造變得十分復雜,關於程序的阅讀和了解都極爲不便,倡議嵌套在3重以内,超越3重能夠用下面的语句。

例如,運用多個 if else 语句判別輸入的字符的類別:

#include <stdio.h>

int main(){

char c;

printf("Input a character:");

c=getchar();

if(c<32)

printf("This is a control character\n");

else if(c>='0'&&c<='9')

printf("This is a digit\n");

else if(c>='A'&&c<='Z')

printf("This is a capital letter\n");

else if(c>='a'&&c<='z')

printf("This is a small letter\n");

else

printf("This is an other character\n");

return 0;

}

運轉結果:

Input a character:e↙

This is a small letter

在運用 if 语句時還應留意以下兩點:

在 if 语句中,判別條件必需用括號括起來。

语句塊由{ }包圍,但要留意的是在}之後不需求再加分號;(當然加上也沒錯)。

④if嵌套分支语句
當if语句中的執行语句又是if语句時,則構成了if语句嵌套。

if(條件表達式)

if语句;

或者

if(條件表達式)

if语句;

else

if语句;

demo:修正下面的程序使程序:輸入a和b的值,判別最大值能否大於100,是則輸出最大值。

int main(void)

{

int a = 0;

int b = 0;

printf("請依次輸入a和b的值:");

scanf("%d%d",&a,&b);

if(a < b)

if(b > 100)

printf("max:%d\n",b);

else

if(a > 100)

printf("max:%d\n",a);

return 0;

}

留意:C言语規則,else總是與它前面最近的爲配對的if配對。

所以修正後應爲:

int main(void)

{

int a = 0;

int b = 0;

printf("請依次輸入a和b的值:");

scanf("%d%d",&a,&b);

if(a < b)

{

if(b > 100)

printf("max:%d\n",b);

}

else

{

if(a > 100)

printf("max:%d\n",a);

}

return 0;

}

demo:輸入a、b、c的值,判別並輸出最大值

int main(void)

{

int a = 0;

int b = 0;

int c = 0;

int max = 0;

printf("請依次輸入a、b、c的值:");

scanf("%d%d%d", &a, &b,&c);//

if (a > b)

{

if (a > c)

max = a;

else

max = c;

}

else//b > a

{

if (b > c)

max = b;

else

max = c;

}

printf("max:%d\n", max);

return 0;

}

2、switch開關语句
C言语固然沒有限製 if else 可以處置的分支數量,但當分支過多時,用 if else 處置會不太便當,而且容易呈現 if else 配對出錯的狀況。關於這種狀況,實践開發中普通運用 switch 语句替代。

該语句也是多分支選择语句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路。

switch 是另外一種選择構造的语句,用來替代简單的、具有多個分枝的 if else 语句,根本格式如下:

switch(表達式){

case 整型數值1: 语句 1;

case 整型數值2: 语句 2;

......

case 整型數值n: 语句 n;

default: 语句 n+1;

}

它的執行過程是:

  1. 首先計算“表達式”的值,假定爲 m。

  2. 從第一個 case 開端,比擬“整型數值1”和 m,假如它們相等,就執行冒號後面的一切语句,也就是從“语句1”不斷執行到“语句n+1”,而不論後面的 case 能否匹配勝利。

  3. 假如“整型數值1”和 m 不相等,就跳過冒號後面的“语句1”,繼續比擬第二個 case、第三個 case……一旦發現和某個整型數值相等了,就會執行後面一切的语句。假定 m 和“整型數值5”相等,那麼就會從“语句5”不斷執行到“语句n+1”。

  4. 假如直到最後一個“整型數值n”都沒有找到相等的值,那麼就執行 default 後的“语句 n+1”。

需求重點強調的是,當和某個整型數值匹配勝利後,會執行該分支以及後面一切分支的语句。例如:

#include <stdio.h>

int main(){

int a;

printf("Input integer number:");

scanf("%d",&a);

switch(a){

case 1: printf("Monday\n");

case 2: printf("Tuesday\n");

case 3: printf("Wednesday\n");

case 4: printf("Thursday\n");

case 5: printf("Friday\n");

case 6: printf("Saturday\n");

case 7: printf("Sunday\n");

default:printf("error\n");

}

return 0;

}

運轉結果:

Input integer number:4↙

Thursday

Friday

Saturday

Sunday

error

文章分类
前端
文章标签