优秀的架构是演进出来的,本课程将手把手带你从项目架构到系统架构,从代码重构到源码原理解析不断演进,逐步提高你驾驭大项目的能力,让你的编程思维和架构能力得到双重提升,助你迈好高级工程师之路的第一步!
适合人群及技术储备要求
正处于开发进阶阶段,拥有一定的项目开发经验,想要进一步提升自己的编程思想和架构设计能力,却找不到
好的方法或指点,本门课程非常适合你!如果你还缺乏项目经验,可先学习《 Java大牛 带你从0到上线开发企
业级电商项目》这门课程,有助于稳固Java项目开发的基础知识和提升项目功能实现的能力!
学前必备技术
为了更顺利的完成本课程的学习与实战,希望你储备以下技术:Linux、MySQL、Git、Maven、Java、
Spring、SpringMVC、Mybatis等基本概念,同时需要掌握Redis 、Spring Schedule、Tomcat集群、
Nginx负载均衡等基础知识
剖析:由於當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共轭復根。其程序段如下:
d=bb-4a*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
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
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