版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章C語(yǔ)言概述
>c程序的組成和形式
?c程序是由函數(shù)構(gòu)成網(wǎng)「主函數(shù)
t其他函!
?一個(gè)函數(shù)由兩部分組成
行函數(shù)的首部
例1.3中max函數(shù)的首部為
intmax(i
;I
函數(shù)類型函數(shù)名函數(shù)參數(shù)類型函數(shù)參數(shù)名函數(shù)參數(shù)類型函數(shù)參數(shù)名
聲函數(shù)體「聲明部分r變量聲明
Vt函數(shù)聲明
I執(zhí)行部分
?一個(gè)C程序總是從main函數(shù)開始執(zhí)行。
?C程序書寫格式自由,一行可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以寫在多行上。
?每個(gè)語(yǔ)句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。
?C語(yǔ)言的輸入輸出功能是通過函數(shù)完成的。
?可以用/*......*/對(duì)C程序進(jìn)行注釋。
第三章數(shù)據(jù)類型、運(yùn)算符、與表達(dá)式
§3.1C語(yǔ)言的數(shù)據(jù)類型
>C語(yǔ)言的數(shù)據(jù)類型:整型r整型int
J短整型short
「長(zhǎng)整型long
基本類型
單精度型float
實(shí)型’
雙精度型double
C字符類型char數(shù)據(jù)類型決定:
數(shù)枚舉類型enum1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)
據(jù)2.數(shù)據(jù)取值范圍
類結(jié)構(gòu)體struct3.其上可進(jìn)行的操作
型構(gòu)造類型
共用體union
數(shù)組
指針類型
空類型void
§3.2常量與變量
>常量與符號(hào)常量
?常量:在程序運(yùn)行過程中,其值不能被改變的量
?符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的符號(hào)
*使用符號(hào)常量的好處:
①含義清楚
日能做到“一改全改”
>變量
?變量:代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來存放數(shù)據(jù),也就是變量的
值,在程序運(yùn)行期間,這些值是可以改變的。
*標(biāo)識(shí)符:在C語(yǔ)言中用來對(duì)變量、符號(hào)常量、函數(shù)、數(shù)組、類型等對(duì)象命名的有效
字符序列
*標(biāo)識(shí)符的命名規(guī)則:
b只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線。
5大寫和小寫字母是不同的字符,也就是不同的標(biāo)識(shí)符。
卡標(biāo)識(shí)符的最大長(zhǎng)度TuoboC規(guī)定為32個(gè)字符,一般不超過8個(gè)字符。
叱標(biāo)識(shí)符應(yīng)做到“見名知義”
叱標(biāo)識(shí)符不能是關(guān)鍵字,如果是已經(jīng)定義標(biāo)識(shí)符,比如函數(shù)名,則相當(dāng)于重新定義。
?變量必須''先定義,后使用”
例:判斷下列標(biāo)識(shí)待號(hào)合法性
sumSumM.D.JohndayDate
3days
studentname#33lotus_l_2_3
chara>b_above$123
§3.3整型數(shù)據(jù)
>整型常量
?十進(jìn)制整數(shù):正負(fù)整數(shù)
?八進(jìn)制整數(shù):以0開頭,08是錯(cuò)誤的用法
?十六進(jìn)制整數(shù):以0x開頭,例:0x2a是合法的
>整型常量的類型
?一個(gè)整型常數(shù)根據(jù)數(shù)據(jù)所在的范圍可自動(dòng)確定它的數(shù)據(jù)類型
??個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsignedint型
?一個(gè)整常量后面加一個(gè)字母1或L,認(rèn)為是longint
整型變量
整型數(shù)據(jù)在內(nèi)存中的存放形式:補(bǔ)碼
正整數(shù):該數(shù)的原碼
負(fù)整數(shù):該數(shù)的絕對(duì)值按位取反再加1
例:10的補(bǔ)碼為0000000000001010
-10的補(bǔ)碼為1111111111110110
最高位是符號(hào)位,該位為0表示正,該位為1表示負(fù)。
整型變量的分類:六種
,有符號(hào)基本整型:[signed]int2-32768~32767(-215-215-1)
?無(wú)符號(hào)基本整型:unsignedint20?65535(0-291)
?有符號(hào)短整型:[signed]short[int]2-32768-32767
,無(wú)符號(hào)短整型:unsignedshort[int]20-65535
,有符號(hào)長(zhǎng)整型:[signed]long[int]4-2147483648(-231-23|-1)
,無(wú)符號(hào)長(zhǎng)整型:unsignedlong[int]40?4294967295(0-232-1)
t整型數(shù)據(jù)的溢出
例3.3整型數(shù)據(jù)的溢出
//include<stdio.h>
voidmain()
{inta,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
a和b在內(nèi)存中的形式:
運(yùn)行結(jié)果為:0111111111111111___432767
32767,-327681000000000000000___4-32768
§3.4浮點(diǎn)型數(shù)據(jù)
A浮點(diǎn)型常量的表示方法
?十進(jìn)制小數(shù)形式:(必須有小數(shù)點(diǎn))如0.123,.123,123.0,0.0,123.
*指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,
e-5.1.2E-3.5
*規(guī)范化的指數(shù)形式:在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且
只能有一位非零的數(shù)字。
浮點(diǎn)型變量
*浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式:分成小數(shù)部分和指數(shù)部分兩部分存放
例:3.14159在內(nèi)存中的形式如下(實(shí)際存儲(chǔ)的是它的二進(jìn)制數(shù)形式):
+3141591
符號(hào)小數(shù)部分指數(shù)部分
?浮點(diǎn)型變量的分類
類比特?cái)?shù)有效數(shù)字?jǐn)?shù)值范圍
型
float326?7-3.4*10-38?34*1()38
double6415?16_]7*10-3。8?17*1()308
lingdouble12818-19-1.2*10-4932?1.2*1(/932
?浮點(diǎn)型變量也應(yīng)先定義后使用
§3.5字符型數(shù)據(jù)
>字符常量:
?用單撇號(hào)括起來的一個(gè)字符
?轉(zhuǎn)義字符:以一個(gè)“\”開頭的字符序列:
轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義
\n換行\(zhòng)t水平制表8
\b退格\r回車
\\反斜線\f換頁(yè)
\'單引雙引號(hào)
\ddd1?3位8進(jìn)制數(shù)代表的字符\xhh1?2位16進(jìn)制數(shù)代表的字符
main()
{print"'abc\tde\rf\tg\n");
printf("h\ti\b\bjk\n");
}
運(yùn)行結(jié)果應(yīng)為:
fabcgde實(shí)際運(yùn)行結(jié)果為:
hjikfgde
hjk
*輸出的制表符覆蓋了
>字符變量原有字符
*字符變量的定義及使用形式:
charcl,c2;
cl='a';c2='b';
*字符變量在內(nèi)存中占一字節(jié)。
>字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式
?以字符的ASCH碼形式存放
?可以和整型數(shù)據(jù)通用,可以互相賦值,可以以%d或c式輸出,字符型數(shù)據(jù)可以參
加算術(shù)運(yùn)算,但只能存放0?255(unsignedchar)或-128?127(signedchar)之間的整
數(shù)。
例3.6向字符變量賦予整數(shù)
#inchide<stdio.h>
voidmain()
{charcl;intc2;
cl=97;
c2=98;
prin氓"%c%c\nM,cl,c2);
printf("%d%d\nn,c1,c2);
}
運(yùn)行結(jié)果:
ab
9798
例3.7大小寫字母的轉(zhuǎn)換
#include<stdio.h>
voidmain()
{charcl,c2;
cl=R;
c2=b;
cl=cl-32;
c2=c2-32;
printf("%c%cn,cl,c2);
}
>字符串常量:
?一對(duì)雙撇號(hào)括起來的字符序列:“abc”
*'a'是字符常量,“a”是字符串常量
?不能將一個(gè)字符串常量賦值給字符變量
?系統(tǒng)自動(dòng)在字符串常量的末尾加上打結(jié)束號(hào)志
例字符串“hello”在內(nèi)存中:he11o\0
例空串“”在內(nèi)存中
§3.6變量賦初值
>變量賦初值:在定義變量的同時(shí)使變量初始化
例:inta=3;
floatf=3.56;
charc=,a,;
inti,j,k=5;
inta,b,c=5;
inta=b=c=5;
§3.7各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算
>各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算
*整型、浮點(diǎn)型、字符型數(shù)據(jù)間可以混合運(yùn)算
*不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,再進(jìn)行運(yùn)算
?轉(zhuǎn)換規(guī)則:
double
§3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式
>C運(yùn)算符簡(jiǎn)介
算術(shù)運(yùn)算符:(+-*/%++-)
關(guān)系運(yùn)算符:(<<===>>=!=)
邏輯運(yùn)算符:((!&&||)
位運(yùn)算符:(“??|.&)
C賦值運(yùn)算符:(=及其擴(kuò)展)
運(yùn)條件運(yùn)算符:(?:)
算逗號(hào)運(yùn)算符:(,)
符指針運(yùn)算符:(*&)
求字節(jié)數(shù):(sizeof)
強(qiáng)制類型轉(zhuǎn)換:(類型)
分量運(yùn)算符:(.-?
下標(biāo)運(yùn)算符:(□)
I其它:(()-)
>算術(shù)運(yùn)算符和算術(shù)表達(dá)式
?基本算術(shù)運(yùn)算符:+,*,/,%(取余)
卡結(jié)合方向:從左向右
5優(yōu)先級(jí):-―?*/%―?+-
(2)(3)(4)
?說明:
b可為單目運(yùn)算符時(shí),右結(jié)合性
面兩整數(shù)相除,結(jié)果為整數(shù),遵守“向零取整”的原則
b%要求兩側(cè)均為整型數(shù)據(jù)
1例:5%2=1~1
例:5/2=2
-5%2=-1
-5/2=-2
1%10=1
-5/2.0=-2.5
5%1=0
5.5%2(x)I
?算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(操作數(shù))連接起來,符合C語(yǔ)法規(guī)
則的式子。
>強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
?一般形式:(類型名)(表達(dá)式)
?優(yōu)先級(jí):2級(jí)
例:(int)(x+y)
(int)x+y
(double)(3/2)
(int)3.6
?說明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變
例main()
{floatx;
inti;
x=3.6;
i=(int)x;
printf("x=%f,i=%d”,x,i);
)
結(jié)果:x=3.600000,i=3
>自增、自減運(yùn)算符++-
?作用:使變量值加1或減1
?種類:
b前置++i,-i(先執(zhí)行i+1或i-1,再使用i值)
向后置i++,i-(先使用i值,再執(zhí)行i+1或i-1)
?說明:
方++-只能用于變量,不能用于常量和表達(dá)式,如5++(x),(a+b)++(x)
5++-結(jié)合方向:自右向左
優(yōu)先級(jí):++,-----?*,/,%---?+,-
(2)(3)(4)
=i++
例:printf("%d,%d”,i,i++);1==>J>
運(yùn)行結(jié)果:4,3printf("%d,%d”j,i);
例-i++6-(i++)(同一優(yōu)先級(jí)右結(jié)合性)例j+++k;〈^"?(j++)+k;
i=3;printf(“%d”,-i++);//-3______________________________
§3.9賦值運(yùn)算符和賦值表達(dá)式
>簡(jiǎn)單賦值運(yùn)算符
?符號(hào):=
?格式:變量標(biāo)識(shí)符=表達(dá)式
?作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量
>賦值時(shí)若變量和表達(dá)式的類型不一致將自動(dòng)進(jìn)行類型轉(zhuǎn)換
例1:inti;
i=3.56;/*實(shí)際i值為3*/
例2:floatf;
423;
printf(u%f\n,,,f);結(jié)果為:23.000000
例3:doule賦值給float時(shí),截取其前面7位有效數(shù)字,取值范圍超出時(shí)產(chǎn)生溢出錯(cuò)誤。
floatf;
doubled=123.456789el00;
4d;/*出錯(cuò)*/
例4:字符賦給整型時(shí):
main()
{unsignedcharc,d;
inta,b;
c='\376';d=-125;無(wú)符號(hào)字符時(shí),將原值存入整
a=c;b=d;型數(shù)的低八位,高八位補(bǔ)零。
printf(t4%d,%d,,,a,b);}
運(yùn)行結(jié)果為:254,131
main()
{charc;
inta;有符號(hào)字符時(shí),將原值存入整型數(shù)
,,
c=\376;的低八位,高八位符號(hào)擴(kuò)展。原值
a=c;最高位為零則補(bǔ)零,為1則補(bǔ)1
printff<%d,,,a);)
運(yùn)行結(jié)果為:一2
例5:main()
{inti=289;int,short,long賦值給字符型變
charc;量時(shí),只將其低八位截取賦值
c=i;
printf("%d,%c”,c,c);}
運(yùn)行結(jié)果為:33,!
例6:將int賦值給longint處理方法同例4
將longint賦值給血時(shí)截取低16位
main()
{longb=65536;inta;
a=b;
printf("%d”,a);}
運(yùn)行結(jié)果為:0
例7:將unsigned賦給?個(gè)同字節(jié)數(shù)的signed型時(shí),將原值保持不變,超范圍會(huì)產(chǎn)生溢出
錯(cuò)誤。
例:main()
{unsignedinta=65535;
intb;
b=a;
printfC€%d,,,b);}
運(yùn)行結(jié)果為:一1
例8:將signed賦給一個(gè)同字節(jié)數(shù)的unsigned型時(shí),將原值保持不變
main()
{unsignedinta;
intb=?l;
a=b;
pr血f(“%d”,a);}
運(yùn)行結(jié)果為:65535
>復(fù)合賦值運(yùn)算符
?種類:+=-=*=/=%=?=?=&=A=|=
含義:變量op=表達(dá)式?——變量=變量op(表達(dá)式)
a+=3vaa=a+3
x*=y+8v>x=x*(y+8)
x%=3<c---->x=x%3
>賦值表達(dá)式
?一?般形式:變量=表達(dá)式
?賦值表達(dá)式的值與變量值相等,且可嵌套,但賦值號(hào)左邊必須為變量
正確用法:
a=b=c=5
a=(b=5)
a=5+(c=6)
a=(b=4)+(c=6)
a=(b=10)/(c=2)
錯(cuò)誤用法:
3=x-2*y;
a+b=3;
a=3*5=4*3
例:a=12;
a+=a-=a*a/*a=-264等價(jià)于a=a+(a=a-(a*a))*/
例:b=3;
printf(64%d,,,a=b);
§3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式
形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n
結(jié)合性:從左向右
優(yōu)先級(jí)低于賦值表達(dá)式
逗號(hào)表達(dá)式的值:等于表達(dá)式n的值
a=3*5,a*4/*a=15,表達(dá)式值60*/
a=3*5,a*4,a+5/*a=15,表達(dá)式值20*/
x=(a=3,6*3)/*賦值表達(dá)式,表達(dá)式值表,x=18*/
x=a=3,6*a/*逗號(hào)表達(dá)式,表達(dá)式值18,x=3*/
例a=l;b=2;c=3;
printf("%d,%d,%d”,a,b,c);/*1,2,3*/
printf("%d,%d,%d",(a,b,c)bc);/*3,2,3*/
>課堂練習(xí):
分析下面程序的運(yùn)行結(jié)果:
main()
{floatfl;inta;charc=,a';
f1=32.78;
c=c-(int)f1;
a=c%15;
printf(a%d,%f,%c\nw,a,fl,c);}
第一章與第三章練習(xí)題
1.一個(gè)c程序的執(zhí)行是從一。
A)本程序的main函數(shù)開始,到main函數(shù)結(jié)束
B)本程序文件的第一個(gè)函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束
C)本程序的main函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束
D)本程序文件的第一個(gè)函數(shù)開始,到本程序main函數(shù)結(jié)束
2.以下敘述正確的是:
A)在C程序中,main函數(shù)必須位于程序的最前面
B)C程序的每行中只能寫?條語(yǔ)句
0C語(yǔ)言本身沒有輸入輸出語(yǔ)句
D)在對(duì)個(gè)C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤
3.以下敘述不正確的是。
A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成
B)一個(gè)C源程序必須包含一個(gè)main函數(shù)
C)C程序的基本組成單位是函數(shù)
D)在C程序中,注釋說明只能位于一條語(yǔ)句的后面
4.C語(yǔ)言規(guī)定:在一個(gè)源程序中,main函數(shù)的位置。
A)必須在最開始
B)必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)的后面
C)可以任意
D)必須在最后
5.一個(gè)C語(yǔ)言程序是由
A)一個(gè)主程序和若干子程序組成B)函數(shù)組成
C)若干過程組成D)若干子程序組成
6.若x,i,j和k都是int型變量,則執(zhí)行下面表達(dá)式后x的值為
x=(i=4,j=16,k=32)
A)4B)16032D)52
7.假設(shè)所有變量均為整型,則表達(dá)式(a=2,b=5,b++,a+b)的值是:
A)7B)8C)6D)2
8.C語(yǔ)言中的標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符
A)必須為字母B)必須為下劃線
C)必須為字母或下劃線D)可以是字母,數(shù)字和下劃線中任一種字符
9.若有代數(shù)式3ae/bc,則不正確的C語(yǔ)言表達(dá)式是:
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
10.以下不正確的敘述是
A)在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低
B)在C程序中,APH和aph是兩個(gè)不同的變量
C)若a和b類型相同,在執(zhí)行了賦值表達(dá)式a=b后b中的值將放人a中,而b中的值不變。
D)當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型
數(shù)值。
11.以下正確的敘述是:
A)在C程序中,每行中只能寫一條語(yǔ)句
B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)
C)在C程序中,無(wú)論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無(wú)誤地表示
D)在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符
12.以下符合C語(yǔ)言語(yǔ)法的賦值表達(dá)式是
A)d=9+e+f=d+9B)d=9+e,f=d+9
C)d=9+e=e++,d+9D)d=9+e++=d+7
13.已知字母A的ASCII碼為十進(jìn)制數(shù)65,且c2為字符型,則執(zhí)行語(yǔ)句c2='A'十'6'一
'3';后,c2中的值為
A)DB)68C)不確定的值D)C
14.在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是。
A)/B)++c)!=D)%
15.若以下變量均是整型,且num=sum=7;則執(zhí)行表達(dá)式sUM=num++,sllM++,++num后sum
的值為
A)7B)8C)9D)10
16.在C語(yǔ)言中,int、char和short種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)
A)由用戶自己定義B)均為2個(gè)字節(jié)
0是任意的D)山所用機(jī)器的機(jī)器字長(zhǎng)決定
17.若有說明語(yǔ)句:charc='\72'則變量c
A)包含1個(gè)字符B)包含2個(gè)字符
C)包含3個(gè)字符D)說明不合法,c的值不確定
18.若有定義:inta=7;floatx=2.5,y=4.7;則表達(dá)式x+a%3*(int)(x+y)%2/4的值是
A)2.500000B)2.750000c)3.500000D)0.000000?
19.sizeof(float)是:
A)一個(gè)雙精度型表達(dá)式B)一個(gè)整型表達(dá)式
C)一種函數(shù)調(diào)用D)一個(gè)不合法的表達(dá)式
20.設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為
A)intB)floatC)doubleD)不確定
21.在C語(yǔ)言中,char型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是:
A)補(bǔ)碼B)反碼C)原碼D)ASCII碼
22.表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為:
A)intB)floatC)doubleD)不確定
23.設(shè)C語(yǔ)言中,?個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則unsignedint型數(shù)據(jù)的取值
范圍為:
A)0—255B)0~32767C)0~65535D)0~2147483647
24.設(shè)有說明:charw;intx;floaty;doublez;則表達(dá)式w*x+z—y值的
數(shù)據(jù)類型為:
A)floatB)charC)intD)double
25.若有以下定義,則能使值為3的表達(dá)式是:
intk=7,x=12;
A)x%=(k%=5)B)x%=(k—k%5)
C)x%=k-k%5D)(x%=k)—(k%=5)
26.設(shè)以下變量均為int類型,則值不等于7的表達(dá)式是
A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)
0(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)
第四章順序程序設(shè)計(jì)
§4.1C語(yǔ)句
>C語(yǔ)句分類
?程序控制語(yǔ)句(9種):
_Tif()~else~
分支
Lswitch
for()~
Jwhile()~
循環(huán)
?do~while()
continue
break
輔助控制
]goto
、return
?表達(dá)式語(yǔ)句:表達(dá)式加分號(hào)構(gòu)成。
夕函數(shù)調(diào)用語(yǔ)句:函數(shù)名(實(shí)際參數(shù)表);
吠賦值語(yǔ)句:賦值表達(dá)式加一個(gè)分號(hào)
a=3;
i++;
吠其他表達(dá)式構(gòu)成語(yǔ)句:表達(dá)式加一個(gè)分號(hào)
x+y;/*合法但無(wú)意義*/
?空語(yǔ)句:;
?復(fù)合語(yǔ)句:用{…}括起來的一組語(yǔ)句
它一般形式:{[數(shù)據(jù)說明部分;]
執(zhí)行語(yǔ)句部分;
句說明:
?“}”后不加分號(hào)
?語(yǔ)法上和單一語(yǔ)句相同
復(fù)合語(yǔ)句可嵌套
§4.2字符數(shù)據(jù)的輸入輸出
>字符輸出函數(shù):
?格式:putchar(c)
?參數(shù):c為字符常量、變量或表達(dá)式
?功能:把字符C輸出到顯示器上
ftinclude<stdio.h>
main()
{intc;
chara;
c=65;a=,B';
putchar(c);putchar('\n");putchar(a);
}
>字符輸入函數(shù)
?格式:getchar()/*無(wú)參函數(shù)*/
?功能:從輸入設(shè)備得到一個(gè)字符作為函數(shù)值賦值給一個(gè)字符變量
例:charc;
c=getchar();
putchar(getchar());
printf("%c”,getchar。);
§4.3格式輸出printf函數(shù)
Aprintf函數(shù)
?一般格式:printf(“格式控制串”,輸出表)
?功能:按指定格式向顯示器輸出數(shù)據(jù)
?輸出表:要輸出的數(shù)據(jù)(可以沒有,多個(gè)時(shí)以“,”分隔)
?格式控制串:包含兩種信息
卡格式說明:%[修飾符]格式字符,用于指定輸出格式
曲普通字符或轉(zhuǎn)義序列:原樣輸出
d,i十進(jìn)制整數(shù)inta=567;printf("%d”,a);5677
x,X十六進(jìn)制無(wú)符號(hào)整數(shù)inta=255;printf("%x”,a);fff
0八進(jìn)制無(wú)符號(hào)整數(shù)inta=65;printfT%o”,a);1Al
4t,
u不帶符號(hào)十進(jìn)制整數(shù)inta=567;printfT%u\a);567
c單一字符chara=65;printfC4%c,\a);A
s字符串print.%”,“ABC”);AB
floata=567.789;printtVu%e,,,a);
e,E指數(shù)形式浮點(diǎn)小數(shù)5.677890e+02
tt,
f小數(shù)形式浮點(diǎn)小數(shù)floata=567.789;printfi[%f,a);567.789000
g-Ge和仲較短一種floata=567.789;printf(u%g,,,a);567.789
%%百分號(hào)本身printfC%%”);%
?說明
行格式字符要用小寫(X,E,G除外)
①格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)
#include<stdio.h>
voidmain()
{inta;
a=12;
printf("%d,%d”,a,13);
)
運(yùn)行結(jié)果:12,13
修改:printf(〃%d,%d〃,a);
運(yùn)行結(jié)果:12,0
修改:printf(〃%d〃,a,13);
運(yùn)行結(jié)果:12
,輸出轉(zhuǎn)換:格式字符與輸出項(xiàng)類型不一致,自動(dòng)按指定格式輸出(某種情況下可,某種
情況不能轉(zhuǎn)換)
?附加格式說明符(修飾符)
修飾符功先巨
m輸出數(shù)據(jù)域?qū)?,?shù)據(jù)長(zhǎng)度vm,左補(bǔ)空格;否則按實(shí)際輸出(用于整型、浮點(diǎn)、字待串)
對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)
.n
對(duì)字符串,指定實(shí)際從左端截取的字符的個(gè)數(shù)
-輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(岐省右對(duì)齊)
在d,o,x,u前,指定輸出精度為long型
1在e,f,g前,指定輸出精度為double型(double型也可以直接用%f輸出)
課堂練習(xí):分析下列程序的運(yùn)行結(jié)果:
例inta=1234;
floats123.456;
charch='a';
printfC4%8d,%2d\n,,,a,a);
printfr%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);
printfC4%3c\n,,,ch);
運(yùn)行結(jié)果:
1234,1234
123.456000,123.456000,123.5,123.46,1.23e+02
a
例:無(wú)符號(hào)數(shù)據(jù)的輸出
#include<stdio.h>
voidmain()
{unsignedinta=65535;
intb=-2;
printf(na=%d,%o,%x,%u\nn,a,a,a,a);
printf(,,b=%d,%o,%x,%u\nn,b,b,b,b);
)
運(yùn)行結(jié)果為:
a=-l,177777,ffff,65535
b=-2,l77776,ffife,65534
例:字符串的輸出
#include<stdio.h>
voidmain()
{
printf("%3s,%7.2s,%.4s,%-5.3s\n”JCHINA”JCHINA","CHINA”,“CHINA");
|
運(yùn)行結(jié)果:
CHINA,CHIN,CHI##
(#號(hào)代表空格)
例:輸出實(shí)數(shù)時(shí)的有效位數(shù)(一般7位有效數(shù)字)
#include<stdio.h>
voidmain()
{floatx,y;
x=llllll.lll;y=222222.222;
printf(H%f,,x+y);
}
運(yùn)行結(jié)果為:
333333.328125
例:輸出雙精度數(shù)時(shí)的有效位數(shù)(般16位有效數(shù)字)
#include<stdio.h>
voidmain()
{doublex,y;
111111111;
產(chǎn)2222222222222.222222222;
printf(M%f\x+y);
}
運(yùn)行結(jié)果為:
3333333333333.333000
§4.4格式輸入函數(shù)scanf()
Ascanf函數(shù)
?一般格式:scanf(“格式控制串”,地址表列)
?功能:按指定格式從鍵盤輸入數(shù)據(jù)
?地址表列:由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址
?格式字符:d,i;o;x,X;u;c;s;f,e,E,g.,G
?附加格式說明符(修飾符)
修飾符功
h用于d,o,x前,指定輸入為short.型整數(shù)
用于d,o,x,u前,指定輸入為long型整數(shù)
1
用于e,f前,指定輸入為double型實(shí)數(shù)
?輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:
卡遇空格、TAB、或回車
e遇寬度結(jié)束
廿遇非法輸入
#include<stdio.h>
voidmain()
{inta,b,c;
scanf(〃%d%d%d〃,&a,&b,&c);
printf("%d,%d,%d\n〃,a,b,c);
必,四田c,「菽贏以空格,回車鍵,Tab鍵分隔
輸入數(shù)據(jù):345------------一
運(yùn)行結(jié)果:3,4,5————
以下輸入方法均正確:①345
②3
45
③3(按Tab鍵)4
5
例scanf(a%d%o%xw,&a,&b,&c);
printf(<<a=%d,b=%d,c=%d\n,',a,b,c);
輸入123123123J
輸出a=123,b=83,c=291
例scanf("%4d%2d%2d”,&yy,&mm,&dd);
輸入19991015J
則1999=>yy,10=>mm,15=>dd
例scanf("%2d%*3d%2d”,&a,&b);
輸入1234567J
則12na,67nb
例scanf("%3d%*4d%f”,&k,&f);
輸入12345678765.43J
貝1」123=>k,8765.43nf
例scanf("a=%d,b=%d,c=%dw,&a,&b,&c);
輸入a=12,b=24,c=36J
例scanf(<<%d%c%f,),&a,&b,&c);
若輸入1234al23o.26J
貝I」1234na,'a'=例intx;
例intx;charch;
scanf("%d",&x);
scanf("%c”,&.ch);
printf("x=%d,ch=%d\n>,,x,ch);
執(zhí)行:123J
輸出:x=123,ch=10
charch;
scanf("%d”,&x);
ch=getchar();
printf("x=%d,ch=%d\n”,x,ch);
執(zhí)行:123」
輸出:x=123,ch=10
例main()
{doublef;
scanf(a%lf",f);〃1不能省略
printf("%f",f);}
§4.6順序結(jié)構(gòu)程序設(shè)計(jì)舉例
例4.10輸入三角形的三個(gè)邊長(zhǎng),求三角形的面積
分析:式假設(shè)輸入的三個(gè)數(shù)可以構(gòu)成一個(gè)三角形,則由三條邊求三角形面積公式為:
s=2(〃+Z?+c)
area='sx(s-〃)x(s-b)x(s-c)
程序如下:
#include<math.h>
#include<stdio.h>
main()
{floata,b,c,s,area;
scanfC%f,%f,%f〃,&a,&b,&c);
s=l.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printfCa=%7.2f,b=%7.2f,c=%7,2f,s=%7,2f\n\a,b,c,s);
printf("area=%7.2f\n〃,area);
輸入:3,4,6」
輸出:a=3.00,b=4.00,c=6.00s=6.50
area=5.33
例求ox2+for+c=0方程的根,設(shè)人2一4ac>0
分析:一元二次方程的根為:
-b±^lh2-4ac
x=------------------
2a
#include<stdio.h>
#include<math.h>
main()
{floata,b,c,disc,xl,x2,p,q;
scanf("a=%f,b=%f,c=%f〃,&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);q=sqrt(disc)/(2*a);
xl=p+q;x2=p-q;
printf('\n\nxl=%5.2f\nx2=%5.2f\n〃,xl,x2);
)
輸入:a=l,b=3,c=2J
輸出:
xl=-1.00
x2=~2.00
第五章選擇結(jié)構(gòu)程序設(shè)計(jì)
§5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式
>關(guān)系運(yùn)算符
?種類:<<===>=>!=
?結(jié)合方向:自左向右
?優(yōu)先級(jí)別:低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符(算術(shù)-關(guān)系-賦值-逗號(hào))
>優(yōu)先級(jí)6(高)
L優(yōu)先級(jí)7(低)
例c>a+b//c>(a+b)
a>b!=c//(a>b)!=c
a==b<c//a==(b<c)
a=b>c//a=(b>c)
?關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示
例inta=3,b=2,c=l,d,f;
a>b〃表達(dá)式值1
(a>b)==c〃表達(dá)式值1
b+c<a〃表達(dá)式值0
d=a>b〃d=l
K=0,合法,但不要理解錯(cuò)含義
例inti=l,j=7,a;
a=i+(j%4!=0);
結(jié)果:a=2
例3>0結(jié)果為1
4^>100結(jié)果為0
例5>2>7>8在C中是允許的,
值為0
例注意區(qū)分與“=="
inta=0,b=1;
if(a=b)〃改為if(a==b)
printff'aequaltob");
else
printff'anotequaltob");
例應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷(有些系統(tǒng)可以)
如1.0/3.0*3.0==1.0有的系統(tǒng)結(jié)果為0,有的系統(tǒng)結(jié)果為1
可改寫為:fabs(1.0/3.0*3.0-1.0)<le-6
§5.2邏輯運(yùn)算符和邏輯表達(dá)式
>邏輯運(yùn)算符和表達(dá)式
?邏輯運(yùn)算符
句種類:&&(與)||(或)!(非)
的邏輯運(yùn)算規(guī)則:
&&:兩個(gè)操作數(shù)同時(shí)為真,其值為真,否則為假
||:兩個(gè)操作數(shù)有一者為真則其值為真,全為假則為假
1:若操作數(shù)為真,則其值為假,若操作數(shù)為假,則其值為真。
吠優(yōu)先級(jí):!一?算術(shù)運(yùn)算符—關(guān)系運(yùn)算符—&&和||-?賦值—?逗號(hào)
高---------------------------------------------------?低
卡結(jié)合性:?。簭挠蚁蜃?/p>
&&:從左向右
||:從左向右
華說明:當(dāng)邏輯運(yùn)算的操作數(shù)為數(shù)值型值時(shí),若該值為0則為假,非0則為真
例a<=x&&x<=b//(a<=x)&&(x<=b)
a>b&&x>y//(a>b)&&(x>y)
a==b||x==y//(a==b)||(x==y)
!a||a>b//(!a)||(a>b)
例a=4;b=5;
!a值為0
a&&b值為1
a||b值為1
!a||b值為1
4&&0||2值為1
5>3&&2||8<4-!0//(5>3)&&2||(8<(4-(!0)))值為1
'c'&&'d'值為1
?短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行
下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí).,才執(zhí)行該運(yùn)算符
例a&&b&&c〃只在a為真時(shí),才判別b的值;
只在a、b都為真時(shí),才判別c的值
例a||b||c//只在a為假時(shí),才判別b的值;
只在a、b都為假時(shí),才判別c的值
例a=1;b=2;c=3;d=4;m=1;n=1;
(m=a>b)&&(n=c>d)〃結(jié)果m=0,n=l
§5.3if語(yǔ)句
>if語(yǔ)句的三種形式
?形式一:
格式:if(expression)
statement
▼執(zhí)行過程:
V
=0
條件表達(dá)式
非0
語(yǔ)句
例:if(x>y)
printfC%d”,x);
?形式二:
好格式:if(expression)
statement1
else
statement?
例:if(x>y)max=x;
elsemax=y;
?形式三:
▼格式:
if(表達(dá)式1)語(yǔ)句1
elseif俵達(dá)式2)語(yǔ)句2
elseif(表達(dá)式3)語(yǔ)句3
[else語(yǔ)句n]
例:if(number>500)cost=0.15;
elseif(number>300)cost=0.1;
elseif(number>100)cost=0.075;
elseif(number>50)cost=0.05;
elsecost=0;
?說明:
bif后面的表達(dá)式類型任意,按表達(dá)式值為0還是非0區(qū)分真假,一般為邏輯或
關(guān)系表達(dá)式
b語(yǔ)句可以是復(fù)合語(yǔ)句
bif(x)oif(x!=0)例:if(3)為真;if(3)為真
if<!x)oif(x==0)
例51輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個(gè)數(shù)
程序如下:
#include<stdio.h>
voidmain()
(
floata,b,t;
scanff%f,%F,&a,&b);
if(a>b)
{t=a;a=b;b=t;}
printf(n%5.2f,%5.2f\nn,a,b);
)
例52輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出
程序如下:
#include<stdio.h>
voidmain()
floata,b,c,t;
scanf("%f,%f,%f',&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if{b>c)
{t=b;b=c;c=t;}
printfC%5.2f,%5.2f,%5.2f\n”,a,b,c);
}
?if語(yǔ)句嵌套:
團(tuán)一般形式:(else總是與離它最近的if配對(duì))
if(exprl)
if(e
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品經(jīng)營(yíng)企業(yè)員工崗位職責(zé)
- 研究經(jīng)費(fèi)管理改革-洞察分析
- 虛擬現(xiàn)實(shí)與船舶駕駛教學(xué)資源整合-洞察分析
- 研發(fā)投入與產(chǎn)出分析-洞察分析
- 圖像元智能識(shí)別與跟蹤-洞察分析
- 《浙江卷生物》課件
- 云計(jì)算環(huán)境下的安全防護(hù)技術(shù)研究-洞察分析
- 勤儉節(jié)約是美德講話稿范文(16篇)
- 移動(dòng)網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)-洞察分析
- 循環(huán)經(jīng)濟(jì)政策對(duì)堿業(yè)影響-洞察分析
- 職業(yè)健康檢查機(jī)構(gòu)執(zhí)法監(jiān)督檢查表
- 2024年廣東開放大學(xué)《財(cái)務(wù)管理》形成性考核參考試題庫(kù)(含答案)
- 化工類行業(yè)分析
- 大班幼兒集體教學(xué)活動(dòng)中有效提問的現(xiàn)狀及其改進(jìn)
- 房屋裝修售后服務(wù)方案
- 民航服務(wù)禮儀(民航服務(wù)類專業(yè))全套教學(xué)課件
- 《可燃?xì)怏w檢測(cè)儀》課件
- 《黃土高填方地基技術(shù)規(guī)程》
- 部編版九年級(jí)中考復(fù)習(xí)戲劇閱讀 (教師版)
- 裸光纖施工方案
- 小學(xué)英語(yǔ)-Unit2 Ways to go to school Part B Read and write教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
評(píng)論
0/150
提交評(píng)論