2-23

2017.23 周四

homework:
寫一個簡單的加,減,乘,除,四則運算的計算器程序。

程序的三大結構:
1.順序結構:程序從上往下,從左往右,順序執行

2.分支結構:做出判斷,選擇要執行的分支語句

3.循環結構:反復執行一段代碼

分支結構:做判斷,執行判斷正確的那一路
1.簡單if語句
...
if(條件)
{
語句塊;
}
...
注:先判斷條件,如果條件成立(真的),則執行對應的語句塊,否則,則執行{}之后的語句。
例:

include <stdio.h>

void main()
{
int a=1;
if(a==2)
{
printf("yes\n");
}
printf("xxx\n");

}
/*
注:一個等號“=”表賦值
兩個等號"=="表判斷
不要在if后面加";"
*/
2.2路分支結構
if(條件1)
{
語句塊1;
}
else
{
語句塊2;
}
注:如果條件1成立,則只執行語句塊1;否則,只執行語句塊2.

include <stdio.h>

void main()
{
int a=1;
if(a==2)
{
printf("條件成立\n");
}
else
{
printf("條件不成立\n");
}
printf("xxx\n");

}
/*
程序書寫的格式:
1.同一層次的語句左對齊,不同層次的語句,一個tab鍵的縮進。程序應該是鋸齒狀的,即層次分明。
2.書寫的普通代碼通常都是小寫字符,遇到特殊意義的字符要大寫,如宏定義的字符。
3.一個合格的程序應該是有適當的注釋,便于閱讀,但是注釋不是文檔,不要太多。
*/
3.多重if語句
if(條件1)
{
語句塊1;
}
else if(條件2)
{
語句塊2;
}
else if(條件3)
{
語句塊3;
}
...
else
{
語句塊n;
}
例:

include <stdio.h>

void main()
{
int a=5;
if(a==2)
{
printf("2\n");
}
else if(a==5)
{
printf("3\n");
}
else if(a==5)
{
printf("1\n");
}
else if(a==4)
{
printf("4\n");
}
else
{
printf("haha\n");
}
}
注:程序自上往下一次執行,對條件依次做出判斷,如果條件不成立,就繼續判斷下一個條件,直到遇到成立的條件,則執行相應的分支語句,之后的條件將不再判斷與執行;如果所有的條件都不成立,則執行else對應的分支語句。
4.嵌套if語句
if(條件)
{
if()
{
if()
{
if()
{}
}
}
else
{

}

}
else
{
if()
{
if()
{}
}
}

注:if...else..中嵌套if...else..結構
例:

include <stdio.h>

void main()
{
int a=10;
if(a>5)
{
if(a>7)
{
if(a>10)
{
printf("10\n");
}
else
{
printf("a=%d\n",a);
}
}
else
{
if(a>6)
{
printf("6\n");
}
}
}
else
{
printf("xxx\n");
}
}

注:分支結構格式書寫自由,各種格式可以自由切換。
if后面可以沒有大括號,但是只會顧及到后面的第一條指令.
else后面可以沒有大括號,但是只會顧及到后面的第一條指令.
if...else..結構,如果if中有多條指令,則必須加上大括號,因為這個結構要求if后面的語句都必須是if分支的。

練習:輸入一個數,判斷是奇數還是偶數

include <stdio.h>

void main()
{
int data;
printf("input a data:");
scanf("%d",&data);
if(data%2 == 0 )
printf("是偶數\n");
else
printf("是奇數\n");
}
練習:從鍵盤上輸入3個數,輸出最大值。
a b c
1 2 3

include <stdio.h>

void main()
{
int a,b,c,max;
printf("please input 3 data:");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(max<c)
max=c;
printf("max:%d\n",max);
}

邏輯運算符:與(&&) 或(||) 非(!)
與:條件1 && 條件2
兩個條件同時成立,整個表達式才成立
0(假的,不成立)
非0(1,真的,成立)
例:程序的三大結構:
1.順序結構:程序從上往下,從左往右,順序執行

2.分支結構:做出判斷,選擇要執行的分支語句

3.循環結構:反復執行一段代碼

分支結構:做判斷,執行判斷正確的那一路
1.簡單if語句
...
if(條件)
{
語句塊;
}
...
注:先判斷條件,如果條件成立(真的),則執行對應的語句塊,否則,則執行{}之后的語句。
例:

include <stdio.h>

void main()
{
int a=1;
if(a==2)
{
printf("yes\n");
}
printf("xxx\n");

}
/*
注:一個等號“=”表賦值
兩個等號"=="表判斷
不要在if后面加";"
*/
2.2路分支結構
if(條件1)
{
語句塊1;
}
else
{
語句塊2;
}
注:如果條件1成立,則只執行語句塊1;否則,只執行語句塊2.

include <stdio.h>

void main()
{
int a=1;
if(a==2)
{
printf("條件成立\n");
}
else
{
printf("條件不成立\n");
}
printf("xxx\n");

}
/*
程序書寫的格式:
1.同一層次的語句左對齊,不同層次的語句,一個tab鍵的縮進。程序應該是鋸齒狀的,即層次分明。
2.書寫的普通代碼通常都是小寫字符,遇到特殊意義的字符要大寫,如宏定義的字符。
3.一個合格的程序應該是有適當的注釋,便于閱讀,但是注釋不是文檔,不要太多。
*/
3.多重if語句
if(條件1)
{
語句塊1;
}
else if(條件2)
{
語句塊2;
}
else if(條件3)
{
語句塊3;
}
...
else
{
語句塊n;
}
例:

include <stdio.h>

void main()
{
int a=5;
if(a==2)
{
printf("2\n");
}
else if(a==5)
{
printf("3\n");
}
else if(a==5)
{
printf("1\n");
}
else if(a==4)
{
printf("4\n");
}
else
{
printf("haha\n");
}
}
注:程序自上往下一次執行,對條件依次做出判斷,如果條件不成立,就繼續判斷下一個條件,直到遇到成立的條件,則執行相應的分支語句,之后的條件將不再判斷與執行;如果所有的條件都不成立,則執行else對應的分支語句。
4.嵌套if語句
if(條件)
{
if()
{
if()
{
if()
{}
}
}
else
{

}

}
else
{
if()
{
if()
{}
}
}

注:if...else..中嵌套if...else..結構
例:

include <stdio.h>

void main()
{
int a=10;
if(a>5)
{
if(a>7)
{
if(a>10)
{
printf("10\n");
}
else
{
printf("a=%d\n",a);
}
}
else
{
if(a>6)
{
printf("6\n");
}
}
}
else
{
printf("xxx\n");
}
}

注:分支結構格式書寫自由,各種格式可以自由切換。
if后面可以沒有大括號,但是只會顧及到后面的第一條指令.
else后面可以沒有大括號,但是只會顧及到后面的第一條指令.
if...else..結構,如果if中有多條指令,則必須加上大括號,因為這個結構要求if后面的語句都必須是if分支的。

練習:輸入一個數,判斷是奇數還是偶數

include <stdio.h>

void main()
{
int data;
printf("input a data:");
scanf("%d",&data);
if(data%2 == 0 )
printf("是偶數\n");
else
printf("是奇數\n");
}
練習:從鍵盤上輸入3個數,輸出最大值。
a b c
1 2 3

include <stdio.h>

void main()
{
int a,b,c,max;
printf("please input 3 data:");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(max<c)
max=c;
printf("max:%d\n",max);
}

邏輯運算符:與(&&) 或(||) 非(!)
與:條件1 && 條件2
兩個條件同時成立,整個表達式才成立
0(假的,不成立)
非0(1,真的,成立)
例:
if(0)
{}
if(1)
{}
if(2)
{}
1 && 1 => 1 真的,成立
0 && 1 => 0 假的
1 && 0 => 0 假的
0 && 0 => 0 假的。

或:條件1 || 條件2
兩個條件,只要有一個條件成立,整個表達式就成立
1 || 1 => 1
1 || 0 => 1
0 || 0 => 0
0 || 1 => 1

非: !條件
如果條件是假的,整個表達式就是真的
如果條件是真的,整個表達式就是假的

include <stdio.h>

void main()
{
int a;
a=0 || 0;
//a=1 && 1
printf("%d\n",a);
}
//邏輯運算符是會有運算結果的,如果整個表達式是真的,那么返回1,如果整個表達式是假的,則會返回0.
//0表示假的,非0表示真的。

a+=b <=> a=a+b
練習:編寫一個程序,根據輸入的學生成績給出相應的判定。大于等于90輸出“優”,大于等于80小于90輸出“良”,大于等于60小于80輸出“中”,否則輸出“差”。

include <stdio.h>

void main()
{
float score;
printf("please input score:");
scanf("%f",&score);
if(score>=90)
printf("優!\n");
else if(score>=80)
printf("良!\n");
else if(score>=60)
printf("中!\n");
else
printf("差!\n");
}

練習:接受用戶輸入的三種商品的價格,如果其中有商品價格大于50或者三種商品價格之和大于100,則用戶享受15%的優惠,問用戶應付多少錢

include <stdio.h>

void main()
{
float a,b,c;
printf("請輸入3種商品的價格:");
scanf("%f %f %f",&a,&b,&c);
if(a>50 || b>50 || c>50 || (a+b+c)>100)
printf("用戶應付:%.1f\n",(a+b+c)*0.85);
else
printf("用戶應付:%.1f\n",a+b+c);
}

練習:輸入一個年份,判斷是否為閏年
閏年:能被4整除但不能被100整除,或者是能夠被400整除

include <stdio.h>

void main()
{
int year;
printf("請輸入一個年份:");
scanf("%d",&year);
if(year%4==0 && year%100!=0 || year%400==0)
printf("是閏年!\n");
else
printf("不是閏年!\n");
}

練習:輸入一個5位數,判斷它是不是回文數,
12321 wan=12321/10000=1
qian=12321%10000/1000=2
shi=12321%100/10=2
ge=12321%10

include <stdio.h>

void main()
{
int data,wan,qian,shi,ge;
printf("請輸入一個5位數:");
scanf("%d",&data);
wan=data/10000;
qian=data%10000/1000;
shi=data%100/10;
ge=data%10;
if(wan==ge && qian==shi)
printf("是回文數!\n");
else
printf("不是回文數!\n");
}

練習:輸入2個整數a,b,輸出較大的那個數

includ <stdio.h>

void main()
{
int a=1,b=2,max;
if(a>b)
{
max=a;
printf("max is: %d\n",max);
}
else
{
max=b;
printf("max is: %d\n",max);
}
}
=>

include <stdio.h>

void main()
{
int a=1,b=2,max;
max=a>b ? a : b;
//如果a>b成立,那么整個表達式的結果就是a,否則就是b
//條件運算符(? :),c語言中唯一的一個三目運算符
printf("max is: %d\n",max);
}
條件運算符的優先級高于賦值運算符,

運算符的優先級:單算關邏三賦逗

switch...case..:多路分支語句開關語句
格式:
switch(表達式)
{
case 常量1:
語句塊1;
break;
case 常量2:
語句塊2;
break;
...
default:
語句
}
原理:先計算表達式的值,然后從第一個case語句開始,用case后面的常量和表達式的值進行比較,相等,則執行相應的case分支語句,不行等,就繼續用下面的case分支的常量與表達式的值比較。如果沒有一路case分支的常量與表達式的值相等,則默認執行default對應的語句。break的作用是負責跳出switch結構,是程序流程轉而執行switch結構后面的語句。

1.每一路case 后面接的常量都必須具有唯一性,
2.default語句可以不寫,也可以放在任何地方,除了最后,都必須加上break;
3.case分支對應的break,可以不寫,但是執行完這一路分支之后并不會跳出switch結構,而是會繼續往下執行,直到遇到break才會跳出switch.
4.case分支語句中可以不加{},但是當在分支語句中定義變量的時候,要加上{},限定變量的作用域。
例:

include <stdio.h>

void main()
{
int a;
printf("請輸入一個整數:");
scanf("%d",&a);
switch(a)
{
default:
printf("xxx!\n");
break;
case 1:
{
printf("1!\n");
int b=10;
printf("b=%d\n",b);
break;
}
case 2:
{
printf("2!\n");
int b=5;
printf("b=%d\n",b);
break;
}
case 3:
printf("3!\n");
break;
case 4:
printf("4!\n");
break;
}
printf("out of switch!\n");

}

練習:用戶輸入一個字母,判斷它是不是元音字母。(a,e,i,o,u,A,E,I,O,U).

include <stdio.h>

void main()
{
printf("輸入一個字符:");
char ch=getchar();
switch(ch)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("是元音字母!\n");
break;
default:
printf("不是元音字母!\n");
}
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容