版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Start
甯Algorithm
.「ArraysandPointersDataStructure
GettingStartedBasicTypes
■MemoryManagement?
StatementsFunctionsVisualComputingMultimedia9
臉FAQ
UserDefinedTypes41
CloudComputingMobile
■
0
ObjectOriented
ProgrammingAbstractDataTypesGraphicalUserInterface
Video
c程序設(shè)計ISBN978-7-30228011-8
第3章程序控制結(jié)構(gòu)
?3.1語句
3.2輸入與輸出
?3.3程序順序結(jié)構(gòu)
?3.4程序選擇結(jié)構(gòu)
3.5程序循環(huán)結(jié)構(gòu)
un程序設(shè)計2
3.1語句
語句(statement)是C程序的最小單位
程序由一條一條語句組成
語句執(zhí)行的次序則稱為流程
C語言語句分為簡單語句、復(fù)合語句和控制語句
un程序設(shè)計3
3.1.1簡單語句
1.表達(dá)式語句
表達(dá)式;//用分號結(jié)束
x=a+b;〃賦值語句
t=a,a=b,b=t;//a和b交換
a+b+c;//運(yùn)算但無實際意義
un程序設(shè)計4
3.1.1簡單語句
A2.函數(shù)調(diào)用語句
函數(shù)調(diào)用(實參);//用分號結(jié)束
printf(na+b=%dn,a+b);〃輸出函數(shù)調(diào)用語句
un程序設(shè)計5
3.1.1簡單語句
3.空語句
;//單個分號
xy
printf(a+b=%d"Aa+b);;〃第2個即為空語句
?4.聲明部分
聲明部分......
執(zhí)行語句......
un程序設(shè)計6
3.1.2復(fù)合語句
a復(fù)合語句(compoundstatement),又稱語句塊,
簡稱塊(block)
[局部聲明部分......;]
語句序列......;
)
un程序設(shè)計7
3.1.2復(fù)合語句
復(fù)合語句內(nèi)部可以進(jìn)行變量定義或類型聲明,這些
定義或聲明僅在復(fù)合語句內(nèi)部可以使用。
intt,a=10zb=7;//定義局部變量七、a>b
t=a,a=b,b=t;//僅在這個復(fù)合語句里使用
)
un程序設(shè)計8
3.2輸入與輸出
所謂輸入是指從外部輸入設(shè)備(如鍵盤、鼠標(biāo)等)
向計算機(jī)輸入數(shù)據(jù),輸出是指從計算機(jī)向外部輸出
設(shè)備(如顯示器、打印機(jī)等)輸出數(shù)據(jù)。
un程序設(shè)計9
3.2.1字符輸入與輸出
1.字符輸出putchar函數(shù)
putchar函數(shù)的作用是向顯示終端輸出一個字符,
一般形式為:
putchar(c);
un程序設(shè)計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è)計11
3.2.1字符輸入與輸出
程序運(yùn)行屏幕
C6H
un程序設(shè)計12
3.2.1字符輸入與輸出
2.字符輸入getchar函數(shù)
getchar函數(shù)的作用是從鍵盤終端輸入一個字符,
一般形式為:
getchar()
un程序設(shè)計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è)計14
3.2.1字符輸入與輸出
例3?2程序運(yùn)行屏幕
un程序設(shè)計15
3.2.1字符輸入與輸出
例3?2程序運(yùn)行屏幕
un程序設(shè)計16
3.2.2格式化輸出
1.printf函數(shù)
printf函數(shù)的作用是向標(biāo)準(zhǔn)輸出設(shè)備(顯示終端)
輸出格式化的數(shù)據(jù),一般形式為:
printf(格式控制,輸出項列表......);
a(1)格式控制
格式控制為字符串形式,稱為格式控制串
un程序設(shè)計17
3.2.2格式化輸出
A它主要有兩種內(nèi)容:
①格式說明。格式說明總是以百分號(%)字符開
始,后跟格式控制字符,例如%d、%f等。它的作
用是將輸出項轉(zhuǎn)換為指定格式輸出。
%[flags][width][.prec][h|1|L
|F|N]type
②一般字符。除格式說明之外的其他字符,包含轉(zhuǎn)
義字符。一般字符根據(jù)從左向右的出現(xiàn)順序直接輸
出到顯示終端上,ASCII控制字符的輸出有特殊的
un程序設(shè)計18
3.2.2格式化輸出
表3-1printf格式說明域含義
域域選描述含義
type必需類型決定輸出項轉(zhuǎn)換為字符、字符串還是數(shù)值
字符
flags可選志控制輸出的對齊、符號、空格及八進(jìn)制和
符
十六進(jìn)制前綴。可以出現(xiàn)多個標(biāo)志
width可選寬度指定輸出項的最小顯示寬度
說明
.prec可選精度指定輸出項的最大輸出字符數(shù)或浮點數(shù)小
說明數(shù)精度
h/l/L/F可選大小指明輸出項類型大小斯旨針的遠(yuǎn)近
/N修飾
un程序設(shè)計19
3.2.2格式化輸出
表3-2printf類型字符含義
字符類型輸出格式
dint帶符號的十進(jìn)制整數(shù)
Uint無符號十進(jìn)制整數(shù)
Oint無符號八進(jìn)制整數(shù)
x或Xint無符號十六進(jìn)制整數(shù)(若輸出為字母,X用
abcdef,X用ABCDEF)
un程序設(shè)計20
3.2.2格式化輸出
表3-2printf類型字符含義
字符類型輸出格式
fdouble具有[―]dddd.dddd格式的帶符號數(shù)值,dddd
為一位或多位十進(jìn)制數(shù)字。小數(shù)點前數(shù)字個數(shù)
取決于數(shù)的量級;小數(shù)點后面數(shù)字個數(shù)取決于
所要求的精度
e或Edouble具有[一]d.dddde[+/—]ddd格式的帶符號數(shù)值,
其中d為單個十進(jìn)制數(shù)字,dddd為一位或多位
十進(jìn)制數(shù)字,ddd為三位十進(jìn)制數(shù)。用e或E表
示指數(shù)
g或double以f或e格式輸出的帶符號數(shù)值,對給出的值及
G其精度,f和e哪個簡潔就用哪個。只有當(dāng)值的
指數(shù)小于一4或大于、等于精度說明時才使用e
格式。尾部的0被截斷,只有小數(shù)點后跟1位
或多位數(shù)字時才出現(xiàn)小數(shù)點。用e或E表示指數(shù)
un程序設(shè)計21
3.2.2格式化輸出
表3-2printf類型字符含義
字符類型輸出格式
Cchar單個字符
S字符串直到第一個非空字符c\oo或滿足精度的字符
指針串
%輸出百分號‘%’
un程序設(shè)計22
3.2.2格式化輸出
表3-3printf標(biāo)志字符含義
標(biāo)志意義默認(rèn)
—在給定域?qū)拑?nèi)左對齊輸出右對齊(左邊用空格
結(jié)果(右邊用空格填充)或0填充)
+如果輸出值是有符號數(shù),只在負(fù)數(shù)前加(一)
則總是加上符號(+或一)
空格如果輸出值是有符號數(shù)或無
為正數(shù),則以空格作為前
綴加到輸出值前;如果空
格和+標(biāo)志同時出現(xiàn),則
忽略空格
un程序設(shè)計23
3.2.2格式化輸出
表3-3printf標(biāo)志字符含義
標(biāo)志意義默認(rèn)
#指明使用如下的“轉(zhuǎn)換樣
式”轉(zhuǎn)換輸出參數(shù)
若類型對輸出參數(shù)的影響
字符為
x或X在任何非0輸出值前加上
Ox或0X
e,E,強(qiáng)制在所有情況下輸出值只有小數(shù)點后面有數(shù)
f總是包含小數(shù)點字時才顯示它
g,G同e和E,強(qiáng)制在所有情況只有小數(shù)點后面有數(shù)
下輸出值中總是包含小數(shù)字時才顯示它,截斷
點并阻止截斷尾部的0尾部的0
un程序設(shè)計24
3.2.2格式化輸出
表3-4printf寬度說明
寬度對輸出域?qū)挾鹊挠绊?/p>
說明
至少有n個字符寬度輸出,如果輸出值中的寬度小于n個,
則輸出用空格填充直到最小寬度規(guī)定(如果flags為一,
則填充在輸出值的右邊,否則在左邊)
On至少有n個字符寬度輸出,如果輸出值中的字符寬度小于
n個,則輸出用0填充在輸出值的左邊(對于左對齊無效)
*間接設(shè)置寬度,此時由輸出項列表提供寬度值,且它必
須在輸出項的前面
un程序設(shè)計25
3.2.2格式化輸出
表3-5printf精度說明
精度精度影響
說明
.n類型含義
e,E,f精度值指定小數(shù)點后數(shù)字的個數(shù)。四舍五入
g,G精度值指定可輸出的有效數(shù)字的最大數(shù)目
s精度值指定可輸出字符的最大數(shù)目,超出精
度值范圍的字符不予輸出
un程序設(shè)計26
3.2.2格式化輸出
表3-5printf精度說明
精度精度影響
說明
(無)精度按默認(rèn)
值:
類型默認(rèn)值
e,E,f6
g,G打印6個有效數(shù)字,尾部的0串被截斷
s輸出直到空字符(''0')為止
.。或類型含義
僅有.
un程序設(shè)計27
3.2.2格式化輸出
續(xù)表3-5printf精度說明
精度精度影響
說明
e,E,f,g,輸出不打印小數(shù)點(及其后的小數(shù))
G
s無任何字符輸出
*間接設(shè)置精度,此時由輸出項列表提供精度
值,且它必須在輸出項的前面。如果寬度說
明和精度說明同時使用*,則先出現(xiàn)寬度值,
接著是精度值,然后才是輸出項。
un程序設(shè)計28
3.2.2格式化輸出
表3-6printf類型大小修飾含義
大小修飾type類型字符輸出參數(shù)被解釋為
hd,o,x,X短整型(short)
U無符號短整型(unsignedshort)
1d,o,x,X長整型(long)
u無符號長整型(unsignedlong)
e,E,f,g,G雙精度浮點型(double)
Le,E,f,g,G長雙精度浮點型(longdouble)
un程序設(shè)計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)制、無符號、十六進(jìn)制和八進(jìn)制
//輸出結(jié)果:123,123,7b,7B,173
printf(”%d,%u,%x,%X,%o\n”,b,b,b,b,b);
//十進(jìn)制、無符號、十六進(jìn)制和八進(jìn)制,負(fù)數(shù)為補(bǔ)碼
〃-1,4294967295,ffffffff,FFFFFFFF,37777777777
un程序設(shè)計30
322格式化輸出
printf(”%1d,%lu,%lx,%lo\n”,h,h,h,h,h);
//長整型,負(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);//寬度、右對齊、左對齊、實際寬度
//輸出結(jié)果:[123],[123],[123]A[12345]A[12345]
un程序設(shè)計31
322格式化輸出
printf(”[%+d]r[%+d]A[%d]r[%d]\n”,a,-a,a,-a);
//填充正負(fù)符號、填充空格
//輸出結(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);//由輸出項指定寬度
//輸出結(jié)果:[123]
un程序設(shè)計32
322格式化輸出
printf(”[%8.2d]A[%-8.2d]\n”,a,a);
//精度對整型無作用
//輸出結(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);
//寬度、右對齊、左對齊
//[a]4[00000000000a],[a]
un程序設(shè)計33
322格式化輸出____________________________________________
//⑤輸出浮點型數(shù)據(jù)
printf(”%lf,%e,%g\n”,x,x,x);
//小數(shù)格式、指數(shù)格式、最簡格式
//輸出結(jié)果:12.34560041.234560e+001412.3456
printf,%e,%g\n”,v,y,y);
//小數(shù)格式、指數(shù)格式、最簡格式
//輸出結(jié)果:12.000000,1.2000008+001,12
//⑥輸出指定精度的浮點型數(shù)據(jù)
printf(H[%工£],[%10[£],[%10.21f],
,x,x);//默認(rèn)精度、寬度、精度
//[12.345600]z[12.345600],[12.35],[12.35:
un程序設(shè)計34
322格式化輸出
//⑦輸出帶格式的浮點型數(shù)據(jù)
printf(H[%+lf],[%+lf],[%If],[%lf]\nn,y,-
y,v,-v);
//填充正負(fù)符號、填充空格
//[+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);
//由輸出項指定寬度、寬度與精度
//輸出結(jié)果:[12.345600]z[12.346]
un程序設(shè)計35
322格式化輸出
//⑧輸出字符串
printf(H[%s],[%6s],[%-
n11nn11
6s]\nr"JavarJava"rJava);
//寬度對字符串的影響
//輸出結(jié)果:[Java],[Java],[Java]
nfnnnn
printf([%s]r[%.3s]r[%6.3s]\n\BasicrBasic
,"Basic");
//精度對字符串的影響
//輸出結(jié)果:[Basic],[Bas],[Bas]
un程序設(shè)計36
322格式化輸出
//⑨特殊輸出
printf("%%\n”,cl);
//兩個%%表示輸出一個%,輸出項
//輸出結(jié)果:%
nn
printf(%dA%d\nAa,bzc);
//格式數(shù)目小于輸出項數(shù),忽略多余輸出項
//輸出結(jié)果:123,-1
printf(”%d,%d,%d\n”,a,b);
//格式數(shù)目大于輸出項數(shù),輸出結(jié)果不確定
//輸出結(jié)果:123,-1,2367460
nn
printf(%df%lf\n4xAa);
//類型不對應(yīng),輸出結(jié)果不確定
//輸出結(jié)果:2075328197,0.000000
un程序設(shè)計37
3.2.3格式化輸入
1.scanf函數(shù)
scanf函數(shù)的作用是從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤終端)
讀取格式化的數(shù)據(jù),一般形式為:
scanf(格式才空制,輸入項歹IJ表......);
%[*][width][h|1|L|F|N
]type
un程序設(shè)計38
2.scant格式輸入函數(shù)
調(diào)用格式:scanf(格式控制字符串,地址表列)
功能:按格式控制字符串中指定的格式,從鍵盤輸
入常數(shù),并存入對應(yīng)變量地址所表示的存儲單元中。
格式控制字符串:包含格式說明、普通字符;
地址表列是要獲得數(shù)據(jù)的變量地址,逗號分隔;
變量地址:&變量名
地址運(yùn)算符&:2級、單目。
un程序設(shè)計39
?#include"stdio.h"
avoidmain()必須按格式控制字符串中
a{inta,b;的格式從鍵盤輸入數(shù)據(jù)
?printf("Enterinta,b\nM);
scanf("%d,%cT,&a,&b);
printf("a+b=%d\n",a+b);
)
un程序設(shè)計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è)計41
珞式說明與它控制的變量類型
必須—對應(yīng)
注意:
若違背了該規(guī)則,或沒按格式控
制字符串中指定的格式輸入數(shù)據(jù),
變量獲得的值將發(fā)生混亂,導(dǎo)致
程序運(yùn)行結(jié)果錯誤。
un程序設(shè)計42
例:
#includelvstdio.hlv
voidmain()
{longm,n;
printf("Enterlong
scanf("%ld:%ld”,&m,&n);
printf(,im*n=%ld\n,i,m*n);
)
un程序設(shè)計43
A例:
?#include"stdio.h11
?voidmain()
?{floatmfn;
?printf("Enterfloat
scanf("%f,%F',&m,&n);
?printf("m*n=%f\n"fm*n);
A)
un程序設(shè)計44
A例:
?#include"stdio.h11
?voidmain()
?{doublemfn;
?printf("Enterdouble
,,
?printf("m*n=%f\nfm*n);
A)
un程序設(shè)計45
輸入項格式說明輸入數(shù)據(jù)的形式
變量類型
long型%ld十進(jìn)制整常數(shù)
%lo八進(jìn)制整常數(shù)
%lx十六進(jìn)制整常數(shù)
float型%f小數(shù)形式實常數(shù)或指數(shù)形式實
%e常數(shù)
double型%lf小數(shù)形式實常數(shù)或整常數(shù)
%le指數(shù)形式實常數(shù)
un程序設(shè)計46
輸入項格式說明輸入數(shù)據(jù)的形式
變量類型
int型%d十進(jìn)制整常數(shù)
unsigned%0無符號八進(jìn)制整常數(shù)(不需以0
開頭)
%x
無符號十六進(jìn)制整常數(shù)(不需以O(shè)x
%u
開頭)
無符號十進(jìn)制整常數(shù)
Char型%c一個可鍵入字符(不需加單引號)
%d0?255整常數(shù)
un程序設(shè)計47
輸入整數(shù)或?qū)嵭蛿?shù)據(jù)時,當(dāng)格式說明之間無其
它字符,系統(tǒng)默認(rèn)以一個或多個空格,回車、
跳格(Tab)作為輸入數(shù)據(jù)間的分隔;
如:scanf(〃%d%d%d〃,&a,&b,&c);
345/
un程序設(shè)計48
重點講解:scanf的使用
>書寫的scanf格式說明與對應(yīng)的變量在個數(shù)
和類型上必須對應(yīng)一致。
?輸入時,各常數(shù)間的分隔符必須與格式控制字符
串一致,否則變量獲值錯亂。
un程序設(shè)計49
重要提示
scant的格式控制是為了控制鍵盤輸入數(shù)
據(jù)的格式,所以要力求簡單。
printf的格式控制是為了控制輸出內(nèi)容的
屏幕顯示格式,所以要力求使得輸出結(jié)果清
晰。
un程序設(shè)計50
3.4程序選擇結(jié)構(gòu)
1.if語句
?2.switch語句
un程序設(shè)計51
3.4.1if語句
if語句的作用是計算給定的表達(dá)式,根據(jù)結(jié)果選擇
執(zhí)行相應(yīng)的語句,語句形式有兩種:
A①if形式:
if(表達(dá)式)語句1;
a②if-else形式:
if(表達(dá)式)語句1;else語句2;
un程序設(shè)計52
341if語句
圖3.2兩種形式的if語句執(zhí)行流程
(a)
un程序設(shè)計53
341if語句
圖3.2兩種形式的if語句執(zhí)行流程
(b)
un程序設(shè)計54
3.4.1if語句
當(dāng)a>b時,執(zhí)行t二a,a二b,b二t運(yùn)算,即a和b相互交
換,若a小于等于b則什么也不做;總而言之,無
論a和b之前是什么數(shù),執(zhí)行這段程序后,a肯定小
于等于b。
if(a>b)t=a,a=b,b=t;
un程序設(shè)計55
3.4.1if語句
(1)if語句中的子語句既可以是簡單語句,又可
以是復(fù)合語句或控制語句,但必須是“一個語句”
的語法形式.
un程序設(shè)計56
3.4.1if語句
(2)子語句往往會有多條語句,甚至更復(fù)雜的情
形,這時可以使用復(fù)合語句
1if(a>b){
2x=a+b;y=a-b;
3}
4else{
5x=a-b;y=a+b;
6)
un程序設(shè)計57
341if語句
—邏輯錯誤的代碼
1if(a>b)
2{;
3t=a;
4a=b;
5b=t;
6}
語法錯誤的代碼
1if(a>b)
2x=a+b;y=a-b;
3else
4x=a-b;y=a+b;
un程序設(shè)計58
3.4.1if語句
數(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è)計59
3.4.1if語句
#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è)計
3.4.1if語句
例3.3
15elseprintf(nerror\nn);
16return0;程序運(yùn)行屏幕
un程序設(shè)計61
3.4.2switch語句
-switch語句的作用是計算給定的表達(dá)式,根據(jù)結(jié)果
選擇從多個分支入口執(zhí)行,語句形式為:
switch(表達(dá)式){
case常量表達(dá)式1語句序列1
case常量表達(dá)式2語句序列2
I
I
case常量表達(dá)式n語句序列n
default:...語句序列
}
表達(dá)式:可是任何形式,但
其值應(yīng)為整型或符號常量.
un程序設(shè)計62
3.4.2switch語句
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è)計63
2,switch的執(zhí)行流程
首先算出表達(dá)式的值,并自上而下將其
與case后的常量相比較)選擇值相等的語
句執(zhí)行)直到其后所有的語句執(zhí)行完畢,
才退出該多分支結(jié)構(gòu),否則執(zhí)行default后
的語句。
例:85頁
un程序設(shè)計64
將A,B,C,D制分?jǐn)?shù)轉(zhuǎn)變?yōu)榘俜种瞥煽?/p>
A等
B等
c等
D等
un程序設(shè)計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è)計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è)計67
重點講解:
1在位fswitch語句時,常量一定要與表達(dá)式的
值類型一致。
2在switch中可以使用break語句跳出switch結(jié)
構(gòu);
un程序設(shè)計68
檔
例:對學(xué)生百分制成績分檔o財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è)計69
3case后的各常量不能相同,否則編譯無法通過;
4default為可選項,它提供了表達(dá)式的值與任何常
量都不相同時的執(zhí)行方案;若表達(dá)式的值與任何
常量都不相同時什么也不需要做,則省略關(guān)鍵字
default(類似else);
5多個case可共用一組執(zhí)行語句;
例:switch(score/10)
{case10:
case9:
case8:cl=W;break;
case7:cl='B';break;
un程序設(shè)計70
重點講解:
/switch是用來實現(xiàn)多分支選擇算法的,
構(gòu)造表達(dá)式和與其相配的常量表達(dá)式是關(guān)
鍵。
un程序設(shè)計71
3.4.3選擇結(jié)構(gòu)的嵌套
?1.if語句的嵌套
(1)第一種形式,在else分支上嵌套if語句,語法
形式為:
if(表達(dá)式1)語句1
elseif(表達(dá)式2)語句2
elseif(表達(dá)式3)語句3
elseif(表達(dá)式n)語句n
else語句m
un程序設(shè)計72
3.4.3選擇結(jié)構(gòu)的嵌套
圖3.5嵌套if語句第一種形式的執(zhí)行流程
un程序設(shè)計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è)計74
343選擇結(jié)構(gòu)的嵌套
(2)第二種形式,在if和else分支上嵌套if-else語句,
語法形式為:
if(表達(dá)式1)
if(表達(dá)式2)語句1
else語句2
else
if(表達(dá)式3)語句3
else語句4
un程序設(shè)計75
3.4.3選擇結(jié)構(gòu)的嵌套
圖3.6嵌套if語句第二種形式的執(zhí)行流程
un程序設(shè)計76
難點講解:if語句嵌套
1)C編譯系統(tǒng)確定if和else的配對原則是:
e1se與上面最近的未曾配對的if配對;
書寫語句時:
2)對內(nèi)嵌的語句,采用縮進(jìn)格式,可清晰地
表示出嵌套層次關(guān)系;
un程序設(shè)計77
提倡的IF語句嵌套的形式:
1.外層的IF語句和內(nèi)嵌的IF語句都包含else形
式,使IF和ELSE的配對形式十分清楚。
if(el)
if(e2)si
elses2
else
if(e3)s3
elses4
un程序設(shè)計78
2.如果if和else的數(shù)目不一樣,可以加上{}
來明確配對關(guān)系。
如:
if()
{if()語句1}
else語句2
un程序設(shè)計79
嵌套IF語句的執(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è)計
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è)計81
難點講斛:程序中如何判斷一個float型實數(shù)為零。
例:判斷float型變量disc是否為零。
fbas(disc)<1e-6
因為float型實數(shù)在內(nèi)存中只有7位有效數(shù)字,
le-6=0.000001,上式表明disc的前'7佳效數(shù)學(xué)為0。
double型實數(shù)在內(nèi)存中只有16位有效數(shù)字。
un程序設(shè)計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è)計83
3.5程序循環(huán)結(jié)構(gòu)
?1.while語句
?2.do語句
a3.for語句
un程序設(shè)計84
3.5.1while語句
awhile語句
wMe語句的作用是計算給定的表達(dá)式,根據(jù)結(jié)果
判定循環(huán)執(zhí)行語句,語句形式為:
while(表達(dá)式)語句;
其中的語句稱為子語句,又稱循環(huán)體,圓括號內(nèi)的
表達(dá)式稱為循環(huán)條件。
un程序設(shè)計85
3.5.1while語句
while語句的執(zhí)行過程是:
①計算表達(dá)式,無論表達(dá)式為何種類型均將這個值
按邏輯值處理;
②如果值為真,則執(zhí)行子語句,然后重復(fù)①;
③如果值為假,則while語句結(jié)束,執(zhí)行后續(xù)語句。
un程序設(shè)計86
3.5.1while語句
圖3.8while語句執(zhí)行流程
(a)
un程序設(shè)計87
3.5.1while語句
a【例3.8】
100
求S=
n=l
即s=1+2+3+?
un程序設(shè)計88
3.5.1while語句
圖3.8while語句執(zhí)行流程
(b)
un程序設(shè)計89
3.5.1while語句
例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è)計90
3.5.1while語句
4intn=l,sum=O;
5while(n<=100){//循環(huán)直到n大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
第4行先做循環(huán)前的初始化,n為Lsum為0。
第5行while語句時n<=100的結(jié)果為真,則執(zhí)行循環(huán)體;
循環(huán)體是復(fù)合語句,先計算sum累加,則sum變?yōu)?+1
的結(jié)果,再讓n累加1。
un程序設(shè)計91
3.5.1while語句
例3.8
4intn=l,sum=O;
5while(n<=100){//循環(huán)直到n大于100
6sum=sum+n;//累力口和
7n=n+l;
8)
重復(fù)第5行的比較和執(zhí)行過程,貝Un值越來越趨向100,
n<=100也越來越趨向假,sum逐漸為累加和的結(jié)果;
當(dāng)n為100時,n<=100為真,sum為的結(jié)果,n值累加
到101,則n<=100為假,while語句結(jié)束。
un程序設(shè)計92
3.5.1while語句
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)前的初始計算過程。
如果不給n和sum賦初值可不可以?
un程序設(shè)計93
3.5.1while語句
例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é)束的計算過程o
un程序設(shè)計94
3.5.1while語句
循環(huán)結(jié)構(gòu)三要素:
A循環(huán)初始、循環(huán)條件和循環(huán)控制。
編寫循環(huán)程序,就要精確設(shè)計三要素。循環(huán)初始發(fā)
生在循環(huán)之前,使得循環(huán)“就緒”;循環(huán)條件是循
環(huán)得以繼續(xù)或終止的判定,而循環(huán)控制是在循環(huán)內(nèi)
部實現(xiàn)循環(huán)條件的關(guān)鍵過程。循環(huán)體可以直接或間
接利用三要素來達(dá)到計算目的,也可以與三要素?zé)o
關(guān)。
un程序設(shè)計95
3.5.1while語句
awhile語句的說明。
wMe語句的循環(huán)體既可以是簡單語句,又可以是
復(fù)合語句或控制語句,但必須是“一個語句”的語
法形式。在實際編程中,當(dāng)循環(huán)體有多條語句時使
用復(fù)合語句。
在循環(huán)中應(yīng)該有使while表達(dá)式趨向假的操作,否
則表達(dá)式恒為真,循環(huán)永不結(jié)束,成為死循環(huán)。
un程序設(shè)計96
3.5.1while語句
awhile語句的說明。
由于while語句先計算表達(dá)式的值,再判斷是否循
環(huán),所以如果表達(dá)式的值始終為假,則循環(huán)一次也
不執(zhí)行,失去了循環(huán)的意義。
while語句循環(huán)條件可以是C語言的任意表達(dá)式。通
常情況下,循環(huán)條件是關(guān)系表達(dá)式或邏輯表達(dá)式,
應(yīng)該謹(jǐn)慎出現(xiàn)別的表達(dá)式。
從循環(huán)結(jié)構(gòu)來看,while語句前應(yīng)有循環(huán)初始,循
環(huán)體內(nèi)應(yīng)有循環(huán)控制。
un程序設(shè)計97
3.5.2do語句
ado語句
do語句的作用是先執(zhí)行語句,然后計算給定的表
達(dá)式,根據(jù)結(jié)果判定是否循環(huán)執(zhí)行,語句形式為:
do語句while(表達(dá)式);
其中的語句稱為子語句,又稱循環(huán)體,圓括號內(nèi)的
表達(dá)式稱為循環(huán)條件。
un程序設(shè)計98
3.5.2do語句
d。語句的執(zhí)行過程是:
①執(zhí)行子語句;
②計算表達(dá)式,無論表達(dá)式為何種類型均將這個值
按邏輯值處理;
③如果值為真,則再次執(zhí)行①;如果值為假,則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度私人診所護(hù)士護(hù)理咨詢與聘用合同3篇
- 二零二五年廢石資源采購與資源再生利用合同6篇
- 2025年度硅藻泥原材料采購合同3篇
- 二零二五年度城市環(huán)境綜合整治招投標(biāo)合同3篇
- 2025年度福樂鍋爐產(chǎn)品銷售業(yè)績獎勵合同2篇
- 海南衛(wèi)生健康職業(yè)學(xué)院《園林植物病理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度商業(yè)地產(chǎn)改造項目合作開發(fā)協(xié)議書3篇
- 課程設(shè)計目標(biāo)的基本方式
- 二零二五年度房地產(chǎn)沙盤模型制作與物聯(lián)網(wǎng)技術(shù)應(yīng)用合同3篇
- 消色差物鏡課程設(shè)計
- 高中體育課程活動方案
- 小學(xué)中高年段語文學(xué)科基于課程標(biāo)準(zhǔn)評價指南
- 和解協(xié)議裝修合同糾紛
- 實景三維地理信息元數(shù)據(jù)規(guī)范
- 意識障礙的判斷及護(hù)理
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術(shù)規(guī)程
- 數(shù)據(jù)資產(chǎn)入表理論與實踐
- 2023年供應(yīng)商質(zhì)量年終總結(jié)報告
- 2024家庭戶用光伏發(fā)電系統(tǒng)運(yùn)行和維護(hù)規(guī)范
- 醫(yī)療機(jī)構(gòu)強(qiáng)制報告制度
- 江蘇省鎮(zhèn)江市2023-2024學(xué)年高一上學(xué)期期末考試化學(xué)試題(解析版)
評論
0/150
提交評論