




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Start
甯Algorithm
.「ArraysandPointersDataStructure
GettingStartedBasicTypes
■MemoryManagement?
StatementsFunctionsVisualComputingMultimedia9
臉FAQ
UserDefinedTypes41
CloudComputingMobile
■
0
ObjectOriented
ProgrammingAbstractDataTypesGraphicalUserInterface
Video
c程序設(shè)計(jì)ISBN978-7-30228011-8
第3章程序控制結(jié)構(gòu)
?3.1語(yǔ)句
3.2輸入與輸出
?3.3程序順序結(jié)構(gòu)
?3.4程序選擇結(jié)構(gòu)
3.5程序循環(huán)結(jié)構(gòu)
un程序設(shè)計(jì)2
3.1語(yǔ)句
語(yǔ)句(statement)是C程序的最小單位
程序由一條一條語(yǔ)句組成
語(yǔ)句執(zhí)行的次序則稱為流程
C語(yǔ)言語(yǔ)句分為簡(jiǎn)單語(yǔ)句、復(fù)合語(yǔ)句和控制語(yǔ)句
un程序設(shè)計(jì)3
3.1.1簡(jiǎn)單語(yǔ)句
1.表達(dá)式語(yǔ)句
表達(dá)式;//用分號(hào)結(jié)束
x=a+b;〃賦值語(yǔ)句
t=a,a=b,b=t;//a和b交換
a+b+c;//運(yùn)算但無(wú)實(shí)際意義
un程序設(shè)計(jì)4
3.1.1簡(jiǎn)單語(yǔ)句
A2.函數(shù)調(diào)用語(yǔ)句
函數(shù)調(diào)用(實(shí)參);//用分號(hào)結(jié)束
printf(na+b=%dn,a+b);〃輸出函數(shù)調(diào)用語(yǔ)句
un程序設(shè)計(jì)5
3.1.1簡(jiǎn)單語(yǔ)句
3.空語(yǔ)句
;//單個(gè)分號(hào)
xy
printf(a+b=%d"Aa+b);;〃第2個(gè)即為空語(yǔ)句
?4.聲明部分
聲明部分......
執(zhí)行語(yǔ)句......
un程序設(shè)計(jì)6
3.1.2復(fù)合語(yǔ)句
a復(fù)合語(yǔ)句(compoundstatement),又稱語(yǔ)句塊,
簡(jiǎn)稱塊(block)
[局部聲明部分......;]
語(yǔ)句序列......;
)
un程序設(shè)計(jì)7
3.1.2復(fù)合語(yǔ)句
復(fù)合語(yǔ)句內(nèi)部可以進(jìn)行變量定義或類型聲明,這些
定義或聲明僅在復(fù)合語(yǔ)句內(nèi)部可以使用。
intt,a=10zb=7;//定義局部變量七、a>b
t=a,a=b,b=t;//僅在這個(gè)復(fù)合語(yǔ)句里使用
)
un程序設(shè)計(jì)8
3.2輸入與輸出
所謂輸入是指從外部輸入設(shè)備(如鍵盤(pán)、鼠標(biāo)等)
向計(jì)算機(jī)輸入數(shù)據(jù),輸出是指從計(jì)算機(jī)向外部輸出
設(shè)備(如顯示器、打印機(jī)等)輸出數(shù)據(jù)。
un程序設(shè)計(jì)9
3.2.1字符輸入與輸出
1.字符輸出putchar函數(shù)
putchar函數(shù)的作用是向顯示終端輸出一個(gè)字符,
一般形式為:
putchar(c);
un程序設(shè)計(jì)10
321字符輸入與輸出
1#include<stdio.h>
2intmain()
3(
4chara=1C!,b=6;
5putchar(a);//字符型變量,輸出C
6putchar(b+101);//整型表達(dá)式,輸出6
7putchar「\ll(T);//轉(zhuǎn)義字符(八進(jìn)制)輸出H
8putchar(D);//轉(zhuǎn)義字符(換行),輸出換行
9return0;
10)
un程序設(shè)計(jì)11
3.2.1字符輸入與輸出
程序運(yùn)行屏幕
C6H
un程序設(shè)計(jì)12
3.2.1字符輸入與輸出
2.字符輸入getchar函數(shù)
getchar函數(shù)的作用是從鍵盤(pán)終端輸入一個(gè)字符,
一般形式為:
getchar()
un程序設(shè)計(jì)13
321字符輸入與輸出
mH
i#include<stdio.h>田
2intmain()
3(
4charclzc2rc3;
5cl=getchar();
c2=getchar();
c3=getchar();
6putchar(cl);putchar(c2);putchar(c3);
7return0;
8)
un程序設(shè)計(jì)14
3.2.1字符輸入與輸出
例3?2程序運(yùn)行屏幕
un程序設(shè)計(jì)15
3.2.1字符輸入與輸出
例3?2程序運(yùn)行屏幕
un程序設(shè)計(jì)16
3.2.2格式化輸出
1.printf函數(shù)
printf函數(shù)的作用是向標(biāo)準(zhǔn)輸出設(shè)備(顯示終端)
輸出格式化的數(shù)據(jù),一般形式為:
printf(格式控制,輸出項(xiàng)列表......);
a(1)格式控制
格式控制為字符串形式,稱為格式控制串
un程序設(shè)計(jì)17
3.2.2格式化輸出
A它主要有兩種內(nèi)容:
①格式說(shuō)明。格式說(shuō)明總是以百分號(hào)(%)字符開(kāi)
始,后跟格式控制字符,例如%d、%f等。它的作
用是將輸出項(xiàng)轉(zhuǎn)換為指定格式輸出。
%[flags][width][.prec][h|1|L
|F|N]type
②一般字符。除格式說(shuō)明之外的其他字符,包含轉(zhuǎn)
義字符。一般字符根據(jù)從左向右的出現(xiàn)順序直接輸
出到顯示終端上,ASCII控制字符的輸出有特殊的
un程序設(shè)計(jì)18
3.2.2格式化輸出
表3-1printf格式說(shuō)明域含義
域域選描述含義
type必需類型決定輸出項(xiàng)轉(zhuǎn)換為字符、字符串還是數(shù)值
字符
flags可選志控制輸出的對(duì)齊、符號(hào)、空格及八進(jìn)制和
符
十六進(jìn)制前綴??梢猿霈F(xiàn)多個(gè)標(biāo)志
width可選寬度指定輸出項(xiàng)的最小顯示寬度
說(shuō)明
.prec可選精度指定輸出項(xiàng)的最大輸出字符數(shù)或浮點(diǎn)數(shù)小
說(shuō)明數(shù)精度
h/l/L/F可選大小指明輸出項(xiàng)類型大小斯旨針的遠(yuǎn)近
/N修飾
un程序設(shè)計(jì)19
3.2.2格式化輸出
表3-2printf類型字符含義
字符類型輸出格式
dint帶符號(hào)的十進(jìn)制整數(shù)
Uint無(wú)符號(hào)十進(jìn)制整數(shù)
Oint無(wú)符號(hào)八進(jìn)制整數(shù)
x或Xint無(wú)符號(hào)十六進(jìn)制整數(shù)(若輸出為字母,X用
abcdef,X用ABCDEF)
un程序設(shè)計(jì)20
3.2.2格式化輸出
表3-2printf類型字符含義
字符類型輸出格式
fdouble具有[―]dddd.dddd格式的帶符號(hào)數(shù)值,dddd
為一位或多位十進(jìn)制數(shù)字。小數(shù)點(diǎn)前數(shù)字個(gè)數(shù)
取決于數(shù)的量級(jí);小數(shù)點(diǎn)后面數(shù)字個(gè)數(shù)取決于
所要求的精度
e或Edouble具有[一]d.dddde[+/—]ddd格式的帶符號(hào)數(shù)值,
其中d為單個(gè)十進(jìn)制數(shù)字,dddd為一位或多位
十進(jìn)制數(shù)字,ddd為三位十進(jìn)制數(shù)。用e或E表
示指數(shù)
g或double以f或e格式輸出的帶符號(hào)數(shù)值,對(duì)給出的值及
G其精度,f和e哪個(gè)簡(jiǎn)潔就用哪個(gè)。只有當(dāng)值的
指數(shù)小于一4或大于、等于精度說(shuō)明時(shí)才使用e
格式。尾部的0被截?cái)?,只有小?shù)點(diǎn)后跟1位
或多位數(shù)字時(shí)才出現(xiàn)小數(shù)點(diǎn)。用e或E表示指數(shù)
un程序設(shè)計(jì)21
3.2.2格式化輸出
表3-2printf類型字符含義
字符類型輸出格式
Cchar單個(gè)字符
S字符串直到第一個(gè)非空字符c\oo或滿足精度的字符
指針串
%輸出百分號(hào)‘%’
un程序設(shè)計(jì)22
3.2.2格式化輸出
表3-3printf標(biāo)志字符含義
標(biāo)志意義默認(rèn)
—在給定域?qū)拑?nèi)左對(duì)齊輸出右對(duì)齊(左邊用空格
結(jié)果(右邊用空格填充)或0填充)
+如果輸出值是有符號(hào)數(shù),只在負(fù)數(shù)前加(一)
則總是加上符號(hào)(+或一)
空格如果輸出值是有符號(hào)數(shù)或無(wú)
為正數(shù),則以空格作為前
綴加到輸出值前;如果空
格和+標(biāo)志同時(shí)出現(xiàn),則
忽略空格
un程序設(shè)計(jì)23
3.2.2格式化輸出
表3-3printf標(biāo)志字符含義
標(biāo)志意義默認(rèn)
#指明使用如下的“轉(zhuǎn)換樣
式”轉(zhuǎn)換輸出參數(shù)
若類型對(duì)輸出參數(shù)的影響
字符為
x或X在任何非0輸出值前加上
Ox或0X
e,E,強(qiáng)制在所有情況下輸出值只有小數(shù)點(diǎn)后面有數(shù)
f總是包含小數(shù)點(diǎn)字時(shí)才顯示它
g,G同e和E,強(qiáng)制在所有情況只有小數(shù)點(diǎn)后面有數(shù)
下輸出值中總是包含小數(shù)字時(shí)才顯示它,截?cái)?/p>
點(diǎn)并阻止截?cái)辔膊康?尾部的0
un程序設(shè)計(jì)24
3.2.2格式化輸出
表3-4printf寬度說(shuō)明
寬度對(duì)輸出域?qū)挾鹊挠绊?/p>
說(shuō)明
至少有n個(gè)字符寬度輸出,如果輸出值中的寬度小于n個(gè),
則輸出用空格填充直到最小寬度規(guī)定(如果flags為一,
則填充在輸出值的右邊,否則在左邊)
On至少有n個(gè)字符寬度輸出,如果輸出值中的字符寬度小于
n個(gè),則輸出用0填充在輸出值的左邊(對(duì)于左對(duì)齊無(wú)效)
*間接設(shè)置寬度,此時(shí)由輸出項(xiàng)列表提供寬度值,且它必
須在輸出項(xiàng)的前面
un程序設(shè)計(jì)25
3.2.2格式化輸出
表3-5printf精度說(shuō)明
精度精度影響
說(shuō)明
.n類型含義
e,E,f精度值指定小數(shù)點(diǎn)后數(shù)字的個(gè)數(shù)。四舍五入
g,G精度值指定可輸出的有效數(shù)字的最大數(shù)目
s精度值指定可輸出字符的最大數(shù)目,超出精
度值范圍的字符不予輸出
un程序設(shè)計(jì)26
3.2.2格式化輸出
表3-5printf精度說(shuō)明
精度精度影響
說(shuō)明
(無(wú))精度按默認(rèn)
值:
類型默認(rèn)值
e,E,f6
g,G打印6個(gè)有效數(shù)字,尾部的0串被截?cái)?/p>
s輸出直到空字符(''0')為止
.。或類型含義
僅有.
un程序設(shè)計(jì)27
3.2.2格式化輸出
續(xù)表3-5printf精度說(shuō)明
精度精度影響
說(shuō)明
e,E,f,g,輸出不打印小數(shù)點(diǎn)(及其后的小數(shù))
G
s無(wú)任何字符輸出
*間接設(shè)置精度,此時(shí)由輸出項(xiàng)列表提供精度
值,且它必須在輸出項(xiàng)的前面。如果寬度說(shuō)
明和精度說(shuō)明同時(shí)使用*,則先出現(xiàn)寬度值,
接著是精度值,然后才是輸出項(xiàng)。
un程序設(shè)計(jì)28
3.2.2格式化輸出
表3-6printf類型大小修飾含義
大小修飾type類型字符輸出參數(shù)被解釋為
hd,o,x,X短整型(short)
U無(wú)符號(hào)短整型(unsignedshort)
1d,o,x,X長(zhǎng)整型(long)
u無(wú)符號(hào)長(zhǎng)整型(unsignedlong)
e,E,f,g,G雙精度浮點(diǎn)型(double)
Le,E,f,g,G長(zhǎng)雙精度浮點(diǎn)型(longdouble)
un程序設(shè)計(jì)29
322格式化輸出
inta=123,b=-lrc=12345;
longh=-l;shorti=-lrj=32767;
charcl=97;
doublex=12.3456,y=12,z=12.123456789123;
〃①輸出整型數(shù)據(jù)
printf("%d,%u,%x,%X,%o\n”,a,a,a,a,a);
//十進(jìn)制、無(wú)符號(hào)、十六進(jìn)制和八進(jìn)制
//輸出結(jié)果:123,123,7b,7B,173
printf(”%d,%u,%x,%X,%o\n”,b,b,b,b,b);
//十進(jìn)制、無(wú)符號(hào)、十六進(jìn)制和八進(jìn)制,負(fù)數(shù)為補(bǔ)碼
〃-1,4294967295,ffffffff,FFFFFFFF,37777777777
un程序設(shè)計(jì)30
322格式化輸出
printf(”%1d,%lu,%lx,%lo\n”,h,h,h,h,h);
//長(zhǎng)整型,負(fù)數(shù)為補(bǔ)碼
//輸出結(jié)果:-1,4294967295,ffffffff,37777777777
printf("%hd,%hu,%hx,%ho\n”;
//短整型,負(fù)數(shù)為補(bǔ)碼
//輸出結(jié)果:-lA65535Affff,177777
printf(n%hd,%hd\nn,j,j+1);〃短整型,數(shù)據(jù)溢出
//輸出結(jié)果:32767,-32768
//②輸出帶格式的整型數(shù)據(jù)
printf(H[%d],[%4d],[%-4d],[%4d],[%-
4d]\n”,a,a,a,c,c);//寬度、右對(duì)齊、左對(duì)齊、實(shí)際寬度
//輸出結(jié)果:[123],[123],[123]A[12345]A[12345]
un程序設(shè)計(jì)31
322格式化輸出
printf(”[%+d]r[%+d]A[%d]r[%d]\n”,a,-a,a,-a);
//填充正負(fù)符號(hào)、填充空格
//輸出結(jié)果:[+123],[-123],[123],[-123]
H
printf([%04d],[%04d],[%04d]A[%-
04d]\n”,a,b,c,a);//左邊填充0、右邊不影響
//輸出結(jié)果:[0123],[-001],[12345],[123]
printf(”%#d,%#x,%#X,%#o\n”,a,a,a,a);
//填充十六進(jìn)制、八進(jìn)制前綴
//輸出結(jié)果:123,0x7b,0X7B,0173
printf(H[%*d]\n”,5,a);//由輸出項(xiàng)指定寬度
//輸出結(jié)果:[123]
un程序設(shè)計(jì)32
322格式化輸出
printf(”[%8.2d]A[%-8.2d]\n”,a,a);
//精度對(duì)整型無(wú)作用
//輸出結(jié)果:[123],[123]
//③輸出字符型數(shù)據(jù)
printf(n%d,%c\nn,cl,cl);//字符型數(shù)值、ASC工工碼
//輸出結(jié)果:97ra
//④輸出帶格式的字符型數(shù)據(jù)
nH
printf([%12c],[%012c],[%-012c]\n,clzclAcl);
//寬度、右對(duì)齊、左對(duì)齊
//[a]4[00000000000a],[a]
un程序設(shè)計(jì)33
322格式化輸出____________________________________________
//⑤輸出浮點(diǎn)型數(shù)據(jù)
printf(”%lf,%e,%g\n”,x,x,x);
//小數(shù)格式、指數(shù)格式、最簡(jiǎn)格式
//輸出結(jié)果:12.34560041.234560e+001412.3456
printf,%e,%g\n”,v,y,y);
//小數(shù)格式、指數(shù)格式、最簡(jiǎn)格式
//輸出結(jié)果:12.000000,1.2000008+001,12
//⑥輸出指定精度的浮點(diǎn)型數(shù)據(jù)
printf(H[%工£],[%10[£],[%10.21f],
,x,x);//默認(rèn)精度、寬度、精度
//[12.345600]z[12.345600],[12.35],[12.35:
un程序設(shè)計(jì)34
322格式化輸出
//⑦輸出帶格式的浮點(diǎn)型數(shù)據(jù)
printf(H[%+lf],[%+lf],[%If],[%lf]\nn,y,-
y,v,-v);
//填充正負(fù)符號(hào)、填充空格
//[+12.000000],[-12.000000]A[12.000000]A[-
12.000000]
nn
printf([%06.11f]A[%-06.Ilf]\nAyzy);
//左邊填充0、右邊不影響
//輸出結(jié)果:[0012.0],[12.0]
printf(n[%.*£],[%★.*£]\n”,6,x,12,3,x);
//由輸出項(xiàng)指定寬度、寬度與精度
//輸出結(jié)果:[12.345600]z[12.346]
un程序設(shè)計(jì)35
322格式化輸出
//⑧輸出字符串
printf(H[%s],[%6s],[%-
n11nn11
6s]\nr"JavarJava"rJava);
//寬度對(duì)字符串的影響
//輸出結(jié)果:[Java],[Java],[Java]
nfnnnn
printf([%s]r[%.3s]r[%6.3s]\n\BasicrBasic
,"Basic");
//精度對(duì)字符串的影響
//輸出結(jié)果:[Basic],[Bas],[Bas]
un程序設(shè)計(jì)36
322格式化輸出
//⑨特殊輸出
printf("%%\n”,cl);
//兩個(gè)%%表示輸出一個(gè)%,輸出項(xiàng)
//輸出結(jié)果:%
nn
printf(%dA%d\nAa,bzc);
//格式數(shù)目小于輸出項(xiàng)數(shù),忽略多余輸出項(xiàng)
//輸出結(jié)果:123,-1
printf(”%d,%d,%d\n”,a,b);
//格式數(shù)目大于輸出項(xiàng)數(shù),輸出結(jié)果不確定
//輸出結(jié)果:123,-1,2367460
nn
printf(%df%lf\n4xAa);
//類型不對(duì)應(yīng),輸出結(jié)果不確定
//輸出結(jié)果:2075328197,0.000000
un程序設(shè)計(jì)37
3.2.3格式化輸入
1.scanf函數(shù)
scanf函數(shù)的作用是從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤(pán)終端)
讀取格式化的數(shù)據(jù),一般形式為:
scanf(格式才空制,輸入項(xiàng)歹IJ表......);
%[*][width][h|1|L|F|N
]type
un程序設(shè)計(jì)38
2.scant格式輸入函數(shù)
調(diào)用格式:scanf(格式控制字符串,地址表列)
功能:按格式控制字符串中指定的格式,從鍵盤(pán)輸
入常數(shù),并存入對(duì)應(yīng)變量地址所表示的存儲(chǔ)單元中。
格式控制字符串:包含格式說(shuō)明、普通字符;
地址表列是要獲得數(shù)據(jù)的變量地址,逗號(hào)分隔;
變量地址:&變量名
地址運(yùn)算符&:2級(jí)、單目。
un程序設(shè)計(jì)39
?#include"stdio.h"
avoidmain()必須按格式控制字符串中
a{inta,b;的格式從鍵盤(pán)輸入數(shù)據(jù)
?printf("Enterinta,b\nM);
scanf("%d,%cT,&a,&b);
printf("a+b=%d\n",a+b);
)
un程序設(shè)計(jì)40
如:scanf("%d;%d;%cT,&a,&b,&c);
輸入:3;4;5/
如:scanf(,za=%d,b=%d,c=%d,\&a,&b,&c);
輸入:?—>a=3,b=4,c=5/
un程序設(shè)計(jì)41
珞式說(shuō)明與它控制的變量類型
必須—對(duì)應(yīng)
注意:
若違背了該規(guī)則,或沒(méi)按格式控
制字符串中指定的格式輸入數(shù)據(jù),
變量獲得的值將發(fā)生混亂,導(dǎo)致
程序運(yùn)行結(jié)果錯(cuò)誤。
un程序設(shè)計(jì)42
例:
#includelvstdio.hlv
voidmain()
{longm,n;
printf("Enterlong
scanf("%ld:%ld”,&m,&n);
printf(,im*n=%ld\n,i,m*n);
)
un程序設(shè)計(jì)43
A例:
?#include"stdio.h11
?voidmain()
?{floatmfn;
?printf("Enterfloat
scanf("%f,%F',&m,&n);
?printf("m*n=%f\n"fm*n);
A)
un程序設(shè)計(jì)44
A例:
?#include"stdio.h11
?voidmain()
?{doublemfn;
?printf("Enterdouble
,,
?printf("m*n=%f\nfm*n);
A)
un程序設(shè)計(jì)45
輸入項(xiàng)格式說(shuō)明輸入數(shù)據(jù)的形式
變量類型
long型%ld十進(jìn)制整常數(shù)
%lo八進(jìn)制整常數(shù)
%lx十六進(jìn)制整常數(shù)
float型%f小數(shù)形式實(shí)常數(shù)或指數(shù)形式實(shí)
%e常數(shù)
double型%lf小數(shù)形式實(shí)常數(shù)或整常數(shù)
%le指數(shù)形式實(shí)常數(shù)
un程序設(shè)計(jì)46
輸入項(xiàng)格式說(shuō)明輸入數(shù)據(jù)的形式
變量類型
int型%d十進(jìn)制整常數(shù)
unsigned%0無(wú)符號(hào)八進(jìn)制整常數(shù)(不需以0
開(kāi)頭)
%x
無(wú)符號(hào)十六進(jìn)制整常數(shù)(不需以O(shè)x
%u
開(kāi)頭)
無(wú)符號(hào)十進(jìn)制整常數(shù)
Char型%c一個(gè)可鍵入字符(不需加單引號(hào))
%d0?255整常數(shù)
un程序設(shè)計(jì)47
輸入整數(shù)或?qū)嵭蛿?shù)據(jù)時(shí),當(dāng)格式說(shuō)明之間無(wú)其
它字符,系統(tǒng)默認(rèn)以一個(gè)或多個(gè)空格,回車、
跳格(Tab)作為輸入數(shù)據(jù)間的分隔;
如:scanf(〃%d%d%d〃,&a,&b,&c);
345/
un程序設(shè)計(jì)48
重點(diǎn)講解:scanf的使用
>書(shū)寫(xiě)的scanf格式說(shuō)明與對(duì)應(yīng)的變量在個(gè)數(shù)
和類型上必須對(duì)應(yīng)一致。
?輸入時(shí),各常數(shù)間的分隔符必須與格式控制字符
串一致,否則變量獲值錯(cuò)亂。
un程序設(shè)計(jì)49
重要提示
scant的格式控制是為了控制鍵盤(pán)輸入數(shù)
據(jù)的格式,所以要力求簡(jiǎn)單。
printf的格式控制是為了控制輸出內(nèi)容的
屏幕顯示格式,所以要力求使得輸出結(jié)果清
晰。
un程序設(shè)計(jì)50
3.4程序選擇結(jié)構(gòu)
1.if語(yǔ)句
?2.switch語(yǔ)句
un程序設(shè)計(jì)51
3.4.1if語(yǔ)句
if語(yǔ)句的作用是計(jì)算給定的表達(dá)式,根據(jù)結(jié)果選擇
執(zhí)行相應(yīng)的語(yǔ)句,語(yǔ)句形式有兩種:
A①if形式:
if(表達(dá)式)語(yǔ)句1;
a②if-else形式:
if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;
un程序設(shè)計(jì)52
341if語(yǔ)句
圖3.2兩種形式的if語(yǔ)句執(zhí)行流程
(a)
un程序設(shè)計(jì)53
341if語(yǔ)句
圖3.2兩種形式的if語(yǔ)句執(zhí)行流程
(b)
un程序設(shè)計(jì)54
3.4.1if語(yǔ)句
當(dāng)a>b時(shí),執(zhí)行t二a,a二b,b二t運(yùn)算,即a和b相互交
換,若a小于等于b則什么也不做;總而言之,無(wú)
論a和b之前是什么數(shù),執(zhí)行這段程序后,a肯定小
于等于b。
if(a>b)t=a,a=b,b=t;
un程序設(shè)計(jì)55
3.4.1if語(yǔ)句
(1)if語(yǔ)句中的子語(yǔ)句既可以是簡(jiǎn)單語(yǔ)句,又可
以是復(fù)合語(yǔ)句或控制語(yǔ)句,但必須是“一個(gè)語(yǔ)句”
的語(yǔ)法形式.
un程序設(shè)計(jì)56
3.4.1if語(yǔ)句
(2)子語(yǔ)句往往會(huì)有多條語(yǔ)句,甚至更復(fù)雜的情
形,這時(shí)可以使用復(fù)合語(yǔ)句
1if(a>b){
2x=a+b;y=a-b;
3}
4else{
5x=a-b;y=a+b;
6)
un程序設(shè)計(jì)57
341if語(yǔ)句
—邏輯錯(cuò)誤的代碼
1if(a>b)
2{;
3t=a;
4a=b;
5b=t;
6}
語(yǔ)法錯(cuò)誤的代碼
1if(a>b)
2x=a+b;y=a-b;
3else
4x=a-b;y=a+b;
un程序設(shè)計(jì)58
3.4.1if語(yǔ)句
數(shù)值邏輯值
aaa!=0!aa==0
0假假真真
非0真真假假
a=5,b=2;
if(a)x=a*10;
a=5,b=2;
if(!a)x=a*10;
un程序設(shè)計(jì)59
3.4.1if語(yǔ)句
#include<stdio.h>
#include<math.h>
intmain()
{doublea,b,c;
printf(ninput
scanf,&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a){
doubleszt;
t=(a+b+c)/2.0;
s=sqrt(t*(t-a)*(t-b)*(t-c));
printf("area=%lf\n"zs);
elseprintf("error\n");
return0;
un程序設(shè)計(jì)
3.4.1if語(yǔ)句
例3.3
15elseprintf(nerror\nn);
16return0;程序運(yùn)行屏幕
un程序設(shè)計(jì)61
3.4.2switch語(yǔ)句
-switch語(yǔ)句的作用是計(jì)算給定的表達(dá)式,根據(jù)結(jié)果
選擇從多個(gè)分支入口執(zhí)行,語(yǔ)句形式為:
switch(表達(dá)式){
case常量表達(dá)式1語(yǔ)句序列1
case常量表達(dá)式2語(yǔ)句序列2
I
I
case常量表達(dá)式n語(yǔ)句序列n
default:...語(yǔ)句序列
}
表達(dá)式:可是任何形式,但
其值應(yīng)為整型或符號(hào)常量.
un程序設(shè)計(jì)62
3.4.2switch語(yǔ)句
1switch(n){
2case7:printf(nstep5\nn);
3case6:
4case5:printf(nstep4\nn);
5case4:
6
7printf("step3\n");printf(Hstep2\nH);
8)
9case2:printf(nstepl\nn);
10default:printf(nstepO\nn);
11)
un程序設(shè)計(jì)63
2,switch的執(zhí)行流程
首先算出表達(dá)式的值,并自上而下將其
與case后的常量相比較)選擇值相等的語(yǔ)
句執(zhí)行)直到其后所有的語(yǔ)句執(zhí)行完畢,
才退出該多分支結(jié)構(gòu),否則執(zhí)行default后
的語(yǔ)句。
例:85頁(yè)
un程序設(shè)計(jì)64
將A,B,C,D制分?jǐn)?shù)轉(zhuǎn)變?yōu)榘俜种瞥煽?jī)
A等
B等
c等
D等
un程序設(shè)計(jì)65
A等)1oo
80
等7
#include"stdio.h"B70)9分
等
voidmain()c60)69分
等
0-5分
{chargrade;D9夕
scanf("%c",&grade);
switch(grade)
{case'A':printf("80~100分\rT);
caseB:printf(“70?79分\n“);
case'C:printf(“60~69分\n“);
case'D':printf(”O(jiān)?59分\rT);
default:printf("error\n");
)
)
un程序設(shè)計(jì)66
A等80?100分
#include,,stdio.hM
B等70?79分
voidmain()C等60?69分
{chargrade;D等0?59分
scanf("%c",&grade);
switch(grade)
{case'A':printf(”80?100分\n”);break;
case'B':printf(”70?79分\n”);break;
caseC:printf《'6O?69分\n”);break;
case'D':printf(”O(jiān)?59分\rT);break;
default:printf("error\n");
)
)
un程序設(shè)計(jì)67
重點(diǎn)講解:
1在位fswitch語(yǔ)句時(shí),常量一定要與表達(dá)式的
值類型一致。
2在switch中可以使用break語(yǔ)句跳出switch結(jié)
構(gòu);
un程序設(shè)計(jì)68
檔
例:對(duì)學(xué)生百分制成績(jī)分檔o財(cái)A
分
80B檔
#include"stdio.h"
分
7079c檔
main()6069
0檔
59分D
{charc1;intscore;
scanf("%d",&score);
switch(score/10)
{case10:
case9:
case8:c1='A';break;
case7:c1='B';break;
case6:c1='C;break;
default:c1='D';
}
printf("%c\n",c1);}
un程序設(shè)計(jì)69
3case后的各常量不能相同,否則編譯無(wú)法通過(guò);
4default為可選項(xiàng),它提供了表達(dá)式的值與任何常
量都不相同時(shí)的執(zhí)行方案;若表達(dá)式的值與任何
常量都不相同時(shí)什么也不需要做,則省略關(guān)鍵字
default(類似else);
5多個(gè)case可共用一組執(zhí)行語(yǔ)句;
例:switch(score/10)
{case10:
case9:
case8:cl=W;break;
case7:cl='B';break;
un程序設(shè)計(jì)70
重點(diǎn)講解:
/switch是用來(lái)實(shí)現(xiàn)多分支選擇算法的,
構(gòu)造表達(dá)式和與其相配的常量表達(dá)式是關(guān)
鍵。
un程序設(shè)計(jì)71
3.4.3選擇結(jié)構(gòu)的嵌套
?1.if語(yǔ)句的嵌套
(1)第一種形式,在else分支上嵌套if語(yǔ)句,語(yǔ)法
形式為:
if(表達(dá)式1)語(yǔ)句1
elseif(表達(dá)式2)語(yǔ)句2
elseif(表達(dá)式3)語(yǔ)句3
elseif(表達(dá)式n)語(yǔ)句n
else語(yǔ)句m
un程序設(shè)計(jì)72
3.4.3選擇結(jié)構(gòu)的嵌套
圖3.5嵌套if語(yǔ)句第一種形式的執(zhí)行流程
un程序設(shè)計(jì)73
343選擇結(jié)構(gòu)的嵌套
1#include<stdio.h>
2intmain()
3(
4intscore;
5scanf(”%d”,&score);
6if(score>=90)printf(nA\nn);
7elseif(score>=80)printf(nB\nn);
8elseif(score>=70)printf(nC\nn);
9elseif(score>=60)printf(nD\nn);
10elseprintf(nE\nn);
11return0;
12)
un程序設(shè)計(jì)74
343選擇結(jié)構(gòu)的嵌套
(2)第二種形式,在if和else分支上嵌套if-else語(yǔ)句,
語(yǔ)法形式為:
if(表達(dá)式1)
if(表達(dá)式2)語(yǔ)句1
else語(yǔ)句2
else
if(表達(dá)式3)語(yǔ)句3
else語(yǔ)句4
un程序設(shè)計(jì)75
3.4.3選擇結(jié)構(gòu)的嵌套
圖3.6嵌套if語(yǔ)句第二種形式的執(zhí)行流程
un程序設(shè)計(jì)76
難點(diǎn)講解:if語(yǔ)句嵌套
1)C編譯系統(tǒng)確定if和else的配對(duì)原則是:
e1se與上面最近的未曾配對(duì)的if配對(duì);
書(shū)寫(xiě)語(yǔ)句時(shí):
2)對(duì)內(nèi)嵌的語(yǔ)句,采用縮進(jìn)格式,可清晰地
表示出嵌套層次關(guān)系;
un程序設(shè)計(jì)77
提倡的IF語(yǔ)句嵌套的形式:
1.外層的IF語(yǔ)句和內(nèi)嵌的IF語(yǔ)句都包含else形
式,使IF和ELSE的配對(duì)形式十分清楚。
if(el)
if(e2)si
elses2
else
if(e3)s3
elses4
un程序設(shè)計(jì)78
2.如果if和else的數(shù)目不一樣,可以加上{}
來(lái)明確配對(duì)關(guān)系。
如:
if()
{if()語(yǔ)句1}
else語(yǔ)句2
un程序設(shè)計(jì)79
嵌套IF語(yǔ)句的執(zhí)行:
它的功能是求:
Main()
-1x<0
{intx,y;
y—<0X—0
scanf(''%d';&x);
1x>0
if(x>=0)
if(x>0)y=l;
elsey=0;
elsey=-l;
printf(”x=%d,y=%”x,y);
輸入:
un程序設(shè)計(jì)
Main()它的功能是求:
{intx,y;1x>0
scanf(u%d^&x);
y=<0x<0
y=i;-1x==0
if(x!=O)
if(x>0)y=l;
elsey=0;
printf(”x=%d,y=%d';x,y);
un程序設(shè)計(jì)81
難點(diǎn)講斛:程序中如何判斷一個(gè)float型實(shí)數(shù)為零。
例:判斷float型變量disc是否為零。
fbas(disc)<1e-6
因?yàn)閒loat型實(shí)數(shù)在內(nèi)存中只有7位有效數(shù)字,
le-6=0.000001,上式表明disc的前'7佳效數(shù)學(xué)為0。
double型實(shí)數(shù)在內(nèi)存中只有16位有效數(shù)字。
un程序設(shè)計(jì)82
求ax2+bx+c=0方程的角星
Scanf("%f,%f,%f”,&a,&b,&c);
lf(fabs(a)<1e-6)
printf(“erro”);
else
{disc=b*b-4*a*c;
if(fabs(disc)<1e-6)
(}
elseif(disc>1e-6)
(}
else
un程序設(shè)計(jì)83
3.5程序循環(huán)結(jié)構(gòu)
?1.while語(yǔ)句
?2.do語(yǔ)句
a3.for語(yǔ)句
un程序設(shè)計(jì)84
3.5.1while語(yǔ)句
awhile語(yǔ)句
wMe語(yǔ)句的作用是計(jì)算給定的表達(dá)式,根據(jù)結(jié)果
判定循環(huán)執(zhí)行語(yǔ)句,語(yǔ)句形式為:
while(表達(dá)式)語(yǔ)句;
其中的語(yǔ)句稱為子語(yǔ)句,又稱循環(huán)體,圓括號(hào)內(nèi)的
表達(dá)式稱為循環(huán)條件。
un程序設(shè)計(jì)85
3.5.1while語(yǔ)句
while語(yǔ)句的執(zhí)行過(guò)程是:
①計(jì)算表達(dá)式,無(wú)論表達(dá)式為何種類型均將這個(gè)值
按邏輯值處理;
②如果值為真,則執(zhí)行子語(yǔ)句,然后重復(fù)①;
③如果值為假,則while語(yǔ)句結(jié)束,執(zhí)行后續(xù)語(yǔ)句。
un程序設(shè)計(jì)86
3.5.1while語(yǔ)句
圖3.8while語(yǔ)句執(zhí)行流程
(a)
un程序設(shè)計(jì)87
3.5.1while語(yǔ)句
a【例3.8】
100
求S=
n=l
即s=1+2+3+?
un程序設(shè)計(jì)88
3.5.1while語(yǔ)句
圖3.8while語(yǔ)句執(zhí)行流程
(b)
un程序設(shè)計(jì)89
3.5.1while語(yǔ)句
例3.8
1#include<stdio.h>
2intmain()
3
4intn=l,sum=O;
5while(n<=100){//循環(huán)直至Ijn大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
9printf(”sum=%d\n",sum);
10return0;
11)
un程序設(shè)計(jì)90
3.5.1while語(yǔ)句
4intn=l,sum=O;
5while(n<=100){//循環(huán)直到n大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
第4行先做循環(huán)前的初始化,n為L(zhǎng)sum為0。
第5行while語(yǔ)句時(shí)n<=100的結(jié)果為真,則執(zhí)行循環(huán)體;
循環(huán)體是復(fù)合語(yǔ)句,先計(jì)算sum累加,則sum變?yōu)?+1
的結(jié)果,再讓n累加1。
un程序設(shè)計(jì)91
3.5.1while語(yǔ)句
例3.8
4intn=l,sum=O;
5while(n<=100){//循環(huán)直到n大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
重復(fù)第5行的比較和執(zhí)行過(guò)程,貝Un值越來(lái)越趨向100,
n<=100也越來(lái)越趨向假,sum逐漸為累加和的結(jié)果;
當(dāng)n為100時(shí),n<=100為真,sum為的結(jié)果,n值累加
到101,則n<=100為假,while語(yǔ)句結(jié)束。
un程序設(shè)計(jì)92
3.5.1while語(yǔ)句
4intn=l,sum=O;
5while(n<=100){//循環(huán)直到n大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
第4行叫循環(huán)初始,即進(jìn)入循環(huán)前的初始計(jì)算過(guò)程。
如果不給n和sum賦初值可不可以?
un程序設(shè)計(jì)93
3.5.1while語(yǔ)句
例3.8
4intn=l,sum=O;
5while(n<=100){//循環(huán)直到n大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
第5行叫循環(huán)條件,即判斷是否繼續(xù)循環(huán)的條件或循環(huán)
終止的條件。
第7行叫循環(huán)控制,即讓循環(huán)條件趨向結(jié)束的計(jì)算過(guò)程o
un程序設(shè)計(jì)94
3.5.1while語(yǔ)句
循環(huán)結(jié)構(gòu)三要素:
A循環(huán)初始、循環(huán)條件和循環(huán)控制。
編寫(xiě)循環(huán)程序,就要精確設(shè)計(jì)三要素。循環(huán)初始發(fā)
生在循環(huán)之前,使得循環(huán)“就緒”;循環(huán)條件是循
環(huán)得以繼續(xù)或終止的判定,而循環(huán)控制是在循環(huán)內(nèi)
部實(shí)現(xiàn)循環(huán)條件的關(guān)鍵過(guò)程。循環(huán)體可以直接或間
接利用三要素來(lái)達(dá)到計(jì)算目的,也可以與三要素?zé)o
關(guān)。
un程序設(shè)計(jì)95
3.5.1while語(yǔ)句
awhile語(yǔ)句的說(shuō)明。
wMe語(yǔ)句的循環(huán)體既可以是簡(jiǎn)單語(yǔ)句,又可以是
復(fù)合語(yǔ)句或控制語(yǔ)句,但必須是“一個(gè)語(yǔ)句”的語(yǔ)
法形式。在實(shí)際編程中,當(dāng)循環(huán)體有多條語(yǔ)句時(shí)使
用復(fù)合語(yǔ)句。
在循環(huán)中應(yīng)該有使while表達(dá)式趨向假的操作,否
則表達(dá)式恒為真,循環(huán)永不結(jié)束,成為死循環(huán)。
un程序設(shè)計(jì)96
3.5.1while語(yǔ)句
awhile語(yǔ)句的說(shuō)明。
由于while語(yǔ)句先計(jì)算表達(dá)式的值,再判斷是否循
環(huán),所以如果表達(dá)式的值始終為假,則循環(huán)一次也
不執(zhí)行,失去了循環(huán)的意義。
while語(yǔ)句循環(huán)條件可以是C語(yǔ)言的任意表達(dá)式。通
常情況下,循環(huán)條件是關(guān)系表達(dá)式或邏輯表達(dá)式,
應(yīng)該謹(jǐn)慎出現(xiàn)別的表達(dá)式。
從循環(huán)結(jié)構(gòu)來(lái)看,while語(yǔ)句前應(yīng)有循環(huán)初始,循
環(huán)體內(nèi)應(yīng)有循環(huán)控制。
un程序設(shè)計(jì)97
3.5.2do語(yǔ)句
ado語(yǔ)句
do語(yǔ)句的作用是先執(zhí)行語(yǔ)句,然后計(jì)算給定的表
達(dá)式,根據(jù)結(jié)果判定是否循環(huán)執(zhí)行,語(yǔ)句形式為:
do語(yǔ)句while(表達(dá)式);
其中的語(yǔ)句稱為子語(yǔ)句,又稱循環(huán)體,圓括號(hào)內(nèi)的
表達(dá)式稱為循環(huán)條件。
un程序設(shè)計(jì)98
3.5.2do語(yǔ)句
d。語(yǔ)句的執(zhí)行過(guò)程是:
①執(zhí)行子語(yǔ)句;
②計(jì)算表達(dá)式,無(wú)論表達(dá)式為何種類型均將這個(gè)值
按邏輯值處理;
③如果值為真,則再次執(zhí)行①;如果值為假,則
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023三年級(jí)英語(yǔ)上冊(cè) Assessment 3教學(xué)實(shí)錄2 湘少版
- 獸醫(yī)藥物與化學(xué)品管理試題及答案
- 獸醫(yī)技術(shù)標(biāo)準(zhǔn)及規(guī)范試題及答案
- 大數(shù)據(jù)驅(qū)動(dòng)的新聞傳播新模式探索
- 常見(jiàn)小動(dòng)物皮膚病識(shí)別試題及答案
- 創(chuàng)客教育在培養(yǎng)學(xué)生創(chuàng)新能力中的作用
- 2023-2024學(xué)年大連理工版小學(xué)信息技術(shù)五年級(jí)下冊(cè)奇妙的編碼(教學(xué)設(shè)計(jì))
- 寵物殯葬師的服務(wù)態(tài)度與技巧試題及答案
- 如何幫助孩子克服焦慮情緒
- 8 古詩(shī)二首 望廬山瀑布 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語(yǔ)文二年級(jí)上冊(cè)統(tǒng)編版
- JBT 106-2024 閥門的標(biāo)志和涂裝(正式版)
- 意識(shí)障礙的判斷及護(hù)理
- 人教PEP版英語(yǔ)六年級(jí)下冊(cè) Unit 3 大單元教學(xué)設(shè)計(jì)
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國(guó)大學(xué)慕課答案
- 入職申請(qǐng)表(完整版)
- 外經(jīng)貿(mào)促進(jìn)政策宣講會(huì)
- 全腦潛能開(kāi)發(fā)教材及全腦啟蒙教材
- 2023年四川省資陽(yáng)中考英語(yǔ)真題(含答案)
- 特種設(shè)備安全教育課件
- 門急診住院轉(zhuǎn)化率統(tǒng)計(jì)
- 新能源燃料項(xiàng)目商業(yè)計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論