版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C/C++程序設計
(第三版)內(nèi)容提要用于學習C/C++語言程序設計技術的教科書共6章:C語言基礎,分支和循環(huán),構造類型,函數(shù),指針,類和對象用附錄形式給出的ASCII碼表、常用庫函數(shù)表、VisualC++6.0/2010上機操作方法、部分習題參考答案。以基本語法規(guī)則為線索,通過100多個例題,近500道習題,向讀者傳授程序設計技術可作為普通高校計算機科學與技術專業(yè)程序設計語言課程教材,也可作為廣大電腦愛好者學習程序設計方法的參考書第1章C語言基礎
主要內(nèi)容1.1一般概念1.2基本語法成分1.3數(shù)據(jù)的輸入和輸出1.4編譯預處理
1.1一般概念1.1.1程序設計語言的發(fā)展和分類
1.機器語言——二進制代碼
計算機的硬件只“認識”0/1
是唯一能被機器直接執(zhí)行的語言2.匯編語言(AssembleLanguage)3.高級語言
FORTRAN(FORmulaTRANslator)
PASCAL、ALGOL、C
4.面向對象的程序設計語言
Simula67、ADA、Simulatalk、JAVA
C++C語言的產(chǎn)生和發(fā)展過程
1967年,MartinRichards:BCPL語言
其后,KenThompson:B語言
1972年,DennisRitchie:C語言1978年,《TheCProgrammingLanguage》
1983年,ANSIC
1980年代初,C++
比較有影響的版本Microsoft公司
:MSC
Borland:TC(集成開發(fā)環(huán)境)
Borland:BC(集成開發(fā)環(huán)境)
Microsoft:VC(集成開發(fā)環(huán)境)
C語言特點豐富的數(shù)據(jù)類型多種多樣的運算符和表達式自增自減運算、位運算、指針運算、取地址運算融會高級語言和低級語言的優(yōu)點(中級語言)語法格式靈活編譯預處理沒有復數(shù)類型,純數(shù)值計算能力差
C語言特點(續(xù))獨特風格超短而精巧的源程序靈活多變的for語句、break語句和continue語句“變化多端的”指針操作超高的編譯效率
1.1.2
程序的基本結構1.程序的物理結構程序塊與程序塊之間的排列方式:層次式結構(嵌套式結構)模塊式結構
1.1.2
程序的基本結構1.程序的物理結構1.1.2
程序的基本結構2.程序的邏輯結構同一程序塊內(nèi)語句的執(zhí)行次序塊與塊的執(zhí)行次序
1.1.2
程序的基本結構2.程序的邏輯結構順序分支循環(huán)子調用程序順序結構和分支結構
語句1
語句2
語句3
(a)
順序結構
條件
語句2
語句1
條件
語句
條件
語句n
語句1
語句2
……
(b)
二分支結構之一
(c)
二分支結構之二
(d)
多分支結構
循環(huán)結構和子程序結構
(a)
當型循環(huán)結構
條件
循環(huán)體
主
調
程
序
子程序
1
條件
循環(huán)體
(b)
直到循環(huán)結構
(c)
子程序結構
子程序
2
3.C語言源程序的一般結構
一個主函數(shù)(main)加若干個子函數(shù)的積木結構函數(shù)之間可夾雜說明性語句
定義,聲明,預編譯命令
全局變量定義或說明;
sub1([形式參數(shù)表])[形式參數(shù)說明;]{
局部變量定義;語句序列;
}…………subn([形式參數(shù)表])[形式參數(shù)說明;]{
局部變量定義;語句序列;
}main(){
局部變量定義;語句序列;
}C程序的一般結構sub1()sub2()subn()main()………………一個函數(shù)的結構函數(shù)類型函數(shù)名(形參表){
局部量定義;語句1;語句2;
……;語句m;}注釋方式:行注釋和段注釋行注釋以//開頭到行末為止段注釋從/*起到*/止,中間是注釋內(nèi)容段注釋則可以跨行,也可以夾在程序語句中間段注釋中還可以包含行注釋ANSIC沒有行注釋有無注釋對程序執(zhí)行結果沒有影響只給人看,機器不看1.1.3算法的描述和實現(xiàn)1、程序和算法的關系Wirth公式“算法+數(shù)據(jù)結構=程序”算法就是對計算步驟的描述,而程序則是實現(xiàn)計算步驟的(計算機可以執(zhí)行的)指令序列,顯然,程序中必含有算法。因此,有時候將算法稱為程序,或將程序稱為算法。算法描述形式:
自然語言描述、畫流程圖
開始、終止框處理框決策框
輸入/輸出流向連接點例1-1輸入一批正整數(shù),統(tǒng)計奇偶數(shù)各有多少個算法設計思想考慮:1)如何判定一個整數(shù)x是奇數(shù)還是偶數(shù)2)如何統(tǒng)計并記錄奇數(shù)個數(shù)和偶數(shù)個數(shù)3)如何控制循環(huán)讀數(shù)和輸入結束除2判余法
計數(shù)器odd和even累加法
輸入數(shù)值為0時,結束
例1-1輸入一批正整數(shù),統(tǒng)計奇偶數(shù)各有多少個算法的自然語言描述第1步,將計數(shù)器odd和even清0,即odd=0,even=0第2步,輸入第一個數(shù)x第3步,如果新輸入的x為0,則轉第5步;否則執(zhí)行第3-1步和第3-2步第3-1步,如果x是偶數(shù),則計數(shù)器even加1
如果x是奇數(shù),則計數(shù)器odd加1
第3-2步,輸入下一個數(shù)x第4步,返回第3步(循環(huán)處理)第5步,輸出統(tǒng)計結果,結束x%2等于0?還是1?例1-1輸入一批正整數(shù),統(tǒng)計奇偶數(shù)各有多少個算法的流程圖
算法的實現(xiàn)程序#include<iostream.h>//文件包含命令voidmain()//主函數(shù)頭部{intx,even,odd;//定義變量
odd=even=0;//將odd和even清0cout<<"請輸入一批整數(shù),最后輸入一個0表示輸入結束!"<<endl;cin>>x;//輸入第一個數(shù)
while(x!=0)//當輸入的x不是0時,進入循環(huán)體
{if(x%2==0)even=even+1;//x是偶數(shù)時,even加1elseodd=odd+1;//x是奇數(shù)時,odd加1cout<<"再輸入一個整數(shù)";//提示信息
cin>>x;//輸入下一個數(shù)
}cout<<“你共輸入了”<<even+odd<<“個數(shù),其中,"<<odd<<"個奇數(shù),"<<even<<"個偶數(shù)。"<<endl; }//程序結束例T1-1將正整數(shù)n分解成質因子連乘形式
算法設計思想例如:16=2*2*2*217=1718=2*3*3用不超過n的每個質數(shù)x試除n
例T1-1將正整數(shù)n分解成質因子連乘形式
算法的自然語言描述第1步,x=2第2步,如果x大于n,則算法結束,否則繼續(xù)下一步第3步,如果n除以x所得余數(shù)等于0,則執(zhí)行第4步否則執(zhí)行第5步第4步,輸出質因子x,并用n除以x所得的商取代原來的n,轉第2步第5步,使x取下一個更大一點的質數(shù),轉第2步while(x<=n){循環(huán)處理第3、4步}if(n%x==0)執(zhí)行第4步;else執(zhí)行第5步;
{cout<<x;n=n/x;}
x=x+1;算法的實現(xiàn)程序#include<iostream.h>voidmain(){intx,n;cout<<"請輸入正整數(shù)n的值n=";cin>>n;cout<<n<<'=';x=2;//取第一測試質因子
while(x<=n){if(n%x==0)//x是n的質因子
{cout<<x;n=n/x;if(n>1)cout<<'*';}//輸出x并用n/x代替nelsex=x+1;//x不是n的質因子
}cout<<endl;//最后輸出一個換行符}例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
Armstrong數(shù)的定義:一個m位正整數(shù)n的各位數(shù)字的m次方之和等于n,則稱n是一個Armstrong數(shù)例如:三位數(shù)中的Armstrong數(shù)153=13+53+33四位數(shù)中的Armstrong數(shù)1634=14+64+34+44五位數(shù)中的Armstrong數(shù)92727=95+25+75+25+75例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
算法設計思想考慮:1)找出n的各位數(shù)字,并確定n的位數(shù)m2)計算n的各位數(shù)字的m次方值3)將m個數(shù)字的m次方值相加
拆數(shù)法
數(shù)字k連乘m次
累加法
例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
流程圖例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
函數(shù)功能劃分主函數(shù)main:負責輸入輸出數(shù)據(jù),調用子函數(shù)
split和sum子函數(shù)split:負責拆數(shù),將n拆成一位位的數(shù)字,放在數(shù)組d中,同時記住n的位數(shù)m子函數(shù)expnm:計算一位數(shù)字k的m次方值子函數(shù)sum:計算多個m次方值的累加和例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
函數(shù)調用關系例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
拆數(shù)算法的流程圖
例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
算法的實現(xiàn)程序#include<iostream.h>//函數(shù)split拆出n的各位數(shù)字依次放在數(shù)組d中//返回n的位數(shù)mintsplit(longn,intd[]){intm=0;while(n!=0){d[m]=n%10;m=m+1;n=n/10;}returnm;}例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
算法的實現(xiàn)程序//計算p=km的函數(shù)expnmlongexpnm(intk,intm){longp=1;inti;for(i=1;i<=m;i++)p=p*k;returnp;}例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
算法的實現(xiàn)程序//求各位數(shù)字的m次方之和的函數(shù)sumlongsum(intm,intd[]){longs=0;inti;for(i=0;i<m;i++)s=s+expnm(d[i],m);returns;}例T1-2判斷正整數(shù)n是不是Armstrong數(shù)
算法的實現(xiàn)程序//主函數(shù)voidmain(){longn;//定義變量n(長整數(shù)型)
intm,d[10];//數(shù)組d用于保存n的各位數(shù)字
cout<<“請輸入正整數(shù)n”; //顯示提示信息
cin>>n;m=split(n,d);if(n==sum(m,d))cout<<n<<"是Armstrong數(shù)"<<endl;elsecout<<n<<"不是Armstrong數(shù)"<<endl;}1.1.4
程序設計風格1)語句行首對齊方式同級左對齊、子句向右移一行只寫一句
2)適當加注釋3)合理使用標識符
4)自頂向下:逐級分解,逐步求精自底向上:逐級編程實現(xiàn)
1.1.4
程序設計風格5)少用或不用goto語句
6)事先考慮周全,少打“補丁”
7)注意用戶界面良好
8)程序要有容錯性
第1章C語言基礎(續(xù))
主要內(nèi)容1.1一般概念1.2基本語法成分1.3數(shù)據(jù)的輸入和輸出1.4編譯預處理
1.2C語言和基本語法成分1.2.1字和詞1.四類字符1)英文字母(大小寫各26個含義不同)、數(shù)字0~9、下畫線用于拼寫保留字、標識符和常數(shù)值
2)五種括號:{}[]()'"
{}:語句括號和成員括號,用于復合語句、分程序,結構、聯(lián)合、枚舉和類的成員序列,數(shù)組元素初值序列
[]:方括號,用于定義數(shù)組長度、數(shù)組元素下標
():圓括號,用在表達式中改變運算次序、函數(shù)參數(shù)表':單引號(左右相同),用于表示字符常量"
:雙引號(左右相同),用于表示字符串常量3)專用符號(19個):運算符、分隔符
+-*/%=<>!?:.,&^~|;#空白符:空格符、水平制表符Tab、換行符'\n'空字符:'\0'字符串結束符4)空白符和空字符
可以作為字符常量或出現(xiàn)在字符串中或注釋中
其他字符均不具有語法含義
2.保留字保留字(keyword)具有特定語法含義的詞(也稱關鍵字)例:for——用于定義循環(huán)語句
int——用來說明整型變量注意,保留字用小寫,不大寫1)用于對變量的類型和屬性說明的保留字基本類型名:charintfloatdoublevoid類型修飾符:longshortsignedunsigned構造類型符:enumstructunion屬性說明符:staticautoexternregisterconstvolatile類型定義符:typedef
2.保留字2)用于描述語句的保留字分支和轉移語句:ifelseswitchcasedefaultgoto循環(huán)語句:forwhiledobreakcontinue返回語句:return2.保留字3)用于計算指定對象所占存儲單元數(shù)
(字節(jié)數(shù))運算符sizeof擴充保留字,如C++中的
nwe,delete等2.保留字注意:1)保留字都用小寫字母書寫,不能用大寫字母表示2)保留字有特定的語法含義,不能用于其他場合2.保留字3.標識符標識符(identifier)——常量、變量、函數(shù)、文件和類型等名字(用戶字)標識符的組成:單個字母字母或下劃線開頭的字母、數(shù)字、下劃線序列注意,不能與保留字相重,字母大小寫不同標識符示例:合法的:NanJingprocedureaYes_Not_procRoot非法的:for$strW.doca&b2ps_23可讀性要好,取名時能夠做到“見名知意”
用sum表示求和,average表示平均值
MAX表示最大值建議不用(單個)Z、O、小寫L作變量名易于2、0和1混淆帶“#”的標識符——預編譯命令#include(文件包含),#define(宏定義)1.2.2數(shù)據(jù)類型
1.常量和變量1)常量(constant)在程序運行期間,其值不能改變的量直接常量的類型由書寫形式確定如,123,-456整數(shù)型常量
2.19,15E03實數(shù)型常量
'a','A'字符型常量符號常量(symbolicconstant)用宏定義常量,一般格式:
#define常量名具體數(shù)值例:#defineN256//定義N=256#defineEPS1E-6//定義EPS=10-6用const定義
constintN=256;constfloatEPS=1E-6;
兩種定義方式的語法含義不同常量名最好用大寫字母,變量名最好用小寫字母2)變量(variable)運行期間,通過輸入或賦值改變其值的量變量的三要素——名、類型和存儲單元最簡單的類型——整型(int)、字符型(char)、實型(float或double)變量必須“先定義后使用,先定值再用其值”定義——指定名字和類型(分配存儲單元)使用——對其賦值,用其值未定義而使用,會出現(xiàn)編譯錯誤“undefinedsymbol”未定值而用其值(其值不確定),會出現(xiàn)意想不到的計算結果
變量定義定義格式:類型名變量名序列;例:
intj,k,a; //定義三個int型變量
floatr;//定義float型變量按名存取存——賦值(輸入)取——參與運算(表達式)變量類型的作用分配的字節(jié)數(shù)(長度)不同可參與運算的種類不同各bit的含義不同(編碼不同)變量的初始化(定義時定初值)例如
inta=0,b,c=15;charch1='a',ch2;變量定義2.數(shù)據(jù)類型的分類用于整型、實型、字符型改變存儲方式和取值范圍
類型附加修飾符signed 帶符號修飾符unsigned 無符號修飾符long 長型修飾符short 短型修飾符例如:longint、unsignedchar
長度運算符sizeof的用法一般格式:
sizeof(類型名)或sizeof(表達式)或sizeof表達式//注意優(yōu)先級例如:
sizeof(123)等于4,
sizeof(char)等于1測試類型長度3.整型普通整型int長整型long短整型short無符號整型unsigned整型常量的書寫形式:十進制:非0開頭可帶正負號的數(shù)字串
100-180八進制:以0開頭
0123(等于十進制的83)即182+281+380=83
-011(等于十進制的-9)注意,八進制數(shù)中的每個數(shù)字位必須是0~7十六進制:以0x(或0X)開頭每個數(shù)字位可以是0~9、a~f(大小寫均可)
0x123等于十進制的291
-0X12等于十進制的-183.整型整數(shù)后面帶字母L(不分大小寫),表示長整型(十進制、八進制、十六進制均可)例如,1234567890L單精度(類型名float)雙精度(類型名double)變量定義示例floatx,y;doubled,c;
4.實型(也稱浮點型
)
指數(shù)部分
尾數(shù)部分
數(shù)符
階符
實數(shù)的存儲形式實型常量的書寫格式十進制數(shù)形式由數(shù)字和小數(shù)點組成(注意必須有一個小數(shù)點)例:3.14,0.123(或.123)
123.0(或123.),0.0
-3.14,-0.123指數(shù)形式(科學表示法)用于表示絕對值特別大、特別小的數(shù)書寫格式:尾數(shù)e(或E)指數(shù)(整數(shù))例:180000000.0表示成1.8e08(1.8×108)
1.8是尾數(shù),e08是指數(shù)0.000000123表示成1.23E-7(1.23×10-7)實型常量的書寫格式字符變量定義方式:
charc1,c2;
只能存放一個字符字符常量的書寫形式:普通字符一對單引號起來的一個字符
'A','=','b','+','d'5.字符類型轉義字符用單引號括起來的以反斜杠\開頭,后面跟一個小寫字母1~3個八進制數(shù)字小寫字母x后跟1至2個十六進制數(shù)字5.字符類型轉義字符示例'\n'換行符(不是字母n本身)'\101'ASCII碼等于八進制的101
(十進制的65)的字符(字母A)'\x62'ASCII碼等于十六進制62
(十進制的98)的字符(字母b)‘\0’空字符(字符串結束符)
5.字符類型注:'0'與'\0'不同字符數(shù)據(jù)和整型數(shù)據(jù)可以通用(輸入輸出、相加等)5.字符類型常用的轉義字符及含義
用一對雙引號括起來的字符序列串中的字符個數(shù)稱為串長度如:"China_Nanjing"、"Thisisastring""a"""空串(長度為0)6.字符串常量字符和字符串存儲方式(串尾要加結束符)字符'a'
字符串"a"
字符串"Nanjing"1.2.3運算符和表達式
1.運算符的優(yōu)先級和結合性表達式是由運算對象(常量和變量)和運算符組成的計算式
簡單表達式:單個常量、變量、函數(shù)式例如:a,123,sin(x)'x'
一般表達式:多個運算對象和多個運算符組成例如:(a[i]+sin(x))/c>=d*e&&(i<n-1||p->data!=0)運算符的優(yōu)先級和結合性
按照優(yōu)先級和結合性確定運算次序:
一個表達式中出現(xiàn)多個運算符時首先按優(yōu)先級的高低確定運算次序同級運算符相繼執(zhí)行時,則按結合性確定運算次序
同級運算符相繼執(zhí)行時:左結合:從左向右依次計算(傳統(tǒng)概念)右結合:從右向左依次計算(C語言特有的)右結合運算符只有三類:條件運算符、單目運算符、賦值運算符運算符的優(yōu)先級和結合性
優(yōu)先級從高到低(大體)初等運算符()[]->.單目運算符!++--
-~*&sizeof算術運算、移位運算符+-*/%<<>>關系運算符==!=<<=>>=邏輯運算符&∧|&&||條件運算符?:賦值運算符=及復合賦值號逗號運算符,
運算符的優(yōu)先級和結合性
共細分為15級因為圓括號的優(yōu)先級最高加括號可以改變計算次序
下面的表中:1.級數(shù)小表示優(yōu)先級高2.優(yōu)先級欄中帶“☆”者表示“右結合”,其余為“左結合”
例如:
a-b+c
等價于(a-b)+c
不等價于a-(b+c)b的左右兩邊運算符+和-同級(先向左結合,再向右結合)關于結合性a=b=c;相當于:
b=c;//將c的值賦給ba=b//a和b都賦得c的值而不是
a=b;//將b的值賦給ab=c;//再將c的值賦給b
(先向右結合,再向左結合)關于結合性
-j++相當于
-(j++)
(先向右結合,再向左結合)關于結合性
算術表達式
C語言表達式算術式與C語言表達式對照示例
2ab(1+x)/a/b2*a*bsqrt(x*y)五種表達式算術表達式賦值表達式逗號表達式關系表達式邏輯表達式數(shù)十種運算符(大體分類)算術運算符關系運算符邏輯運算符位運算符
賦值運算符條件運算符逗號運算符指針運算符取地址運算符分量運算符*下標運算符*圓括號運算符*
函數(shù)調用運算符長度運算符類型轉換運算符標*者為初等運算符2.算術運算(1)基本算術運算
+(加)-(減)*(乘)/(除)
%(取余數(shù))例:5+2 結果為75.0+2結果為7.05/2結果為25%2結果為15.0/2.0結果為2.5注意:1)“-”同時作為“負值運算符”如:-3,-b2)整數(shù)/整數(shù)結果值只取整數(shù)商(整數(shù))通過類型轉換可得完整結果例如,15/float(4)3)取余數(shù)運算(%),即模(mod)運算要求,整數(shù)%整數(shù),結果值取余數(shù)(整數(shù))例如:
18%4結果值為2(t+3)%7例:今天是星期三,t天之后是星期幾?若星期日——0、 星期一——1、
……
星期六——6(t+2)%7+1例:今天是星期三,t天之后是星期幾?
若星期一——1、
……
星期六——6
星期日——7(t+a-1)%7+1(2)自增自減運算
++
:使變量的值增1
--
:使變量的值減1兩種用法后綴運算:i++和i--
先使用i的值,再將i的值加1或減1前綴運算:++i和--i
先將i的值加1或減1,再使用i的值例如,賦值語句
j=i++;相當于
j=i;i=i+1;而賦值語句
j=++i;相當于
i=i+1;j=i;
幾點說明:
1)自增、自減運算符只能用于變量,不能用于常量或表達式
++(x+y)、5++等是錯誤的2)++和--的結合方向是自右至左3)在表達式中使用自增、自減運算符時要慎重不要對同一個變量多次進行自增自減
例如:j=++i+k+i++讓人費解
(3)類型轉換
自動類型轉換(隱式轉換)強制類型轉換(顯式轉換)1)自動類型轉換在計算表達式值時,按某種固定規(guī)律,將某一類型的數(shù)據(jù)自動轉換成另一類型的數(shù)據(jù),然后再進行計算
總是將“低級類型”轉換成“高級類型”(3)類型轉換
1)自動類型轉換有條件自動轉換:不同類型的數(shù)據(jù)混和運算時所進行的自動轉換無條件自動轉換:為了保證數(shù)值計算的精度和準確性所進行的自動轉換
自動類型轉換有條件轉換(橫向)先將低類型數(shù)據(jù)自動轉換成高類型,再運算
無條件轉換(縱向)注意:轉換不影響原數(shù)據(jù)本身類型轉換規(guī)則:無條件轉換將float轉換成double型(保證精度)將char或short轉換成int型(不至于超界)實數(shù)運算若一個運算對象是double型,另一個被轉換成double(結果是double型)轉換規(guī)則(續(xù)):整數(shù)運算若一個是longint型,另一個被轉換成longint型(結果longint型)若一個是unsigned類型,另一個被轉換成unsigned(結果unsigned型)并非先將int轉換成unsigned,再轉換成long,最后轉換成double類型(3)類型轉換
2)強制類型轉換一般格式:(類型名)(表達式)例如:(int)(a)或(int)a//將a的值轉換成int類型注意,(float)(i/j)與(float)i/j的含義不同
轉換只產(chǎn)生中間類型數(shù)值,不影響原來數(shù)據(jù)的類型和值
六種關系運算(比較運算)
<<=>>===(等于)!=(不等于)關系運算的優(yōu)先級低于算術運算符,高于賦值運算符(<、<=、>、>=)高于(==、!=)3.關系運算例:a>bx!=0
比較關系成立時,結果值為1
不成立時,結果值為0
(1表示“真”,0表示“假”)例:x=b>c//相當于x=(b>c)x=b==c//相當于x=(b==c)結果x的值為1,或為0注意,“==”是比較相等否(無賦值功能)“=”賦值運算(并非比較)3.關系運算4.邏輯運算三個邏輯運算符!非(相當于數(shù)學上的~或NOT)&&與(相當于數(shù)學上的∧或AND)||或(相當于數(shù)學上的∨或OR)運算規(guī)則(見真值表)邏輯運算的真值表
注意:C語言中,判斷“真假”時,以非0為“真”,0為“假”但邏輯表達式的值為1或0注意,邏輯運算符的優(yōu)先次序!→算術運算符→關系運算符→&&→||例:
x>0&&x<10
//判斷x的值是不是在0~9之間等價于:
(x>0)&&(x<10)
//加括號后更易讀
4.邏輯運算多數(shù)版本都采用“短路”規(guī)則:
a&&b//其中,a和b是任一式子
a||b//其中,a和b是任一式子對于“a&&b”,若算出a為假,則不再求b的值對于“a||b”,若算出a為真,則不再求b的值注意,是否短路,可能會產(chǎn)生不同結果(比如,b中含有賦值或函數(shù)調用操作)4.邏輯運算條件表達式的一般格式:
E1?E2:E3其中,?:條件運算符E1是判別表達式E2和E3是一般的任意表達式5.條件運算判別表達式:除結構類型和聯(lián)合類型以外的任意表達式(最用關系表達式、邏輯表達式)判別表達式還出現(xiàn)在if語句、switch語句和循環(huán)語句中
E1?E2:E3的執(zhí)行步驟:1)計算E1的值2)若E1的值不為0(真),則計算E2的值,E2的值作為整個表達式的值3)若E1的值為0(假),計算E3的值,E3的值作為整個表達式的值5.條件運算
E1
E2
E3非0(真)為0(假)條件表達式的流程圖5.條件運算示例:max=a>b?a:b;//使max等于a和b二者中較大的值整個是賦值語句,將條件表達式a>b?a:b的值賦給max5.條件運算請注意,條件運算符的優(yōu)先級和結合性5.條件運算優(yōu)先級很低,僅高于賦值運算符和逗號運算符(低于其他運算符)例如:
max=a>b?a:b+1;
//相當于max=(a>b?a:b+1);a>b?a:b+1//相當于(a>b)?a:(b+1)
//不相當于a>(b?a:b+1)
//也不相當于(a>b?a:b)+15.條件運算結合性是“右”結合示例:a>b?a:c>d?c:d
相當于a>b?a:(c>d?c:d)
而不是(a>b?a:c)>d?c:d(1)簡單賦值運算賦值表達式的一般格式
V=EV:變量,E:表達式
含義:計算表達式E的值,將計算結果值賦給變量V
并以E的值作為整個賦值表達式的值6.賦值運算例:x=a+10
x=x+1//使x的值增加1
6.賦值運算表達式的尾部加一個分號“;”
表達式語句賦值表達式尾部加“;”
賦值語句所有的語句都以分號結束!(復合語句除外)幾點說明:1)賦值運算符“=”左側必須是變量名2)如果“=”兩側的類型不一致,但都是數(shù)值型或字符型時,賦值時系統(tǒng)自動將表達式類型轉換成賦值號左側變量的類型,然后再賦值。 例:intx=3.54;//x的值為3(結果為整型,取整數(shù)部分)6.賦值運算幾點說明:3)賦值運算符“=”、比較運算符“==”,以及數(shù)學上等于號“=”三者含義:數(shù)學上,“x=1”表示一種事實(x的值就是1),絕不會出現(xiàn)“x=x+1”的式子程序中,“x=1”表示使x的值為1(不考慮x的原來值);式子“x=x+1”也是合理的程序中,“x==1”代表一種判斷,x的值可能等于1,也可能不等于1;一般也不會出現(xiàn)形如“x==x+1”的式子(因為這是永遠不能成立的關系表達式,即其值恒假)容易將“x==1”錯寫成“x=1”,造成十分隱蔽的邏輯錯誤(難以查出)6.賦值運算(2)連續(xù)賦值運算形如:V1=V2=V3=…=E例:
x=y=t*t//變量x和y的值都賦成t2a=b=c=1.6;//連續(xù)賦值語句等價于
a=(b=(c=1.6));
若b是整型,而a和c是實型結果:c等于1.6,b等于1,而a等于1.06.賦值運算(3)復合賦值運算
算術運算符和位運算符后面加賦值運算符
算術運算與賦值運算的復合
+=-=*=/=%=位運算與賦值運算的復合
&=^=|=<<=>>=復合賦值表達式的一般格式:
V+=E
功能相當于V=V+(E)例如:
a+=b 等價于a=a+ba-=b+c 等價于a=a-(b+c)a%=b+c 等價于a=a%(b+c)①
j++;②j+=1;③j=j+1;功能相同,但①的效率高于②②的效率高于③多個表達式用逗號隔開,一般格式:
E1,E2,…,En逗號:逗號運算符含義:依次計算各分表達式E1,E2,…,En的值并將En的值就是整個表達式的值7.逗號運算各分表達式
例:若當前b=2,c=6,那么
a=b+1,c+2//結果a=3,整個表達式的值為87.逗號運算逗號運算符的優(yōu)先級最低
a=b+1,c+2//不能理解成a=(b+1,c+2)x=a=b+1,c+2//結果x=a=3,(c+2)的值沒使用
x=(a=b+1,c+2)//結果x=8,a=3兩種位運算:邏輯位運算、移位運算運算對象:整型、字符型(多用于無符號型)結果類型:整型、字符型
8.位運算(1)邏輯位運算~按位反一目,每一位分別取反&按位與二目,對應位相與|按位或二目,對應位相或^按位異或二目,對應位相異或1)~運算~a的含義:將a的各位求反(每一位的0變1,1變0)得到一個整數(shù)值(a的值不變)
(1)邏輯位運算例如:unsignedcharc,a=0xDB;執(zhí)行賦值語句:c=~a;變量c的值等于?寫成二進制形式:a=11011011c=001001002)&運算a&b的含義:將a和b的對應位相與得到一個整數(shù)a和b的對應位均為1結果值的該位為1,否則為0(1)邏輯位運算例如:unsignedchara=0x7B,b=0x93,c;
執(zhí)行賦值語句:c=a&b;變量c的值等于?寫成二進制形式:a=01111011b=10010011
c=00010011
3)|運算a|b的含義:將a和b的對應位相或得到一個整數(shù)a和b的對應位均為0結果值的該位為0,否則為1(1)邏輯位運算例如:unsignedchara=0x7B,b=0x93,c;
執(zhí)行賦值語句:c=a|b;變量c的值等于?寫成二進制形式:a=01111011b=10010011
c=11111011
4)^運算A^b的含義:將a和b的對應位相異或得到一個整數(shù)a和b的對應位不同結果值的該位為1,否則為0(1)邏輯位運算例如:unsignedchara=0x7B,b=0x93,c;
執(zhí)行賦值語句:c=a^b;變量c的值等于?寫成二進制形式:a=01111011b=10010011
c=11101000
&常用來將一個變量的某些指定位設置為0
(其余各位不變)例如:
c&=(0xFF-5);//將c右起第一、三位設置為0
(1)邏輯位運算(用法示例)|常用來將一個變量的某些指定位設置為1
(其余各位不變)例如:
c|=3;//將c右起第一、二位設置為1^運算可用來將某變量值清0(將所有數(shù)位都置為0)例如:c=c^c;(1)邏輯位運算(用法示例)8.位運算(2)移位運算左移(<<)和右移(>>)一般格式:a<<b //將表達式a的值左移b個二進制位a>>b //將表達式a的值右移b個二進制位這里b只能是正整數(shù)(通常是1、2、3等常數(shù))
在不考慮數(shù)值越界的前提下,對小正整數(shù)
左移(<<)一位相當于乘以2右移(>>)一位相當于除以28.位運算(2)移位運算對正數(shù)和負數(shù)的移位規(guī)則不同對負數(shù)的移位規(guī)則,不同的系統(tǒng)可能不同下面以VC的移位規(guī)則為例
1)左移運算(<<)左側移出去的數(shù)位被舍棄,右側移“空”了的數(shù)位補0例:unsignedchara=2,c;c=a<<4; //相當于c=16*a(c=32)
(2)移位運算1)左移運算(<<)例:unsignedchara=2,c;c=a<<4; //相當于c=16*a(c=32)
(2)移位運算1)左移運算(<<)又例:unsignedchara=-4,c;c=a<<1; //結果c=-8(2)移位運算2)右移運算(>>)對正數(shù):右側移出去的數(shù)位被舍棄,左側移“空”了的數(shù)位補0對負數(shù):右側移出去的數(shù)位被舍棄,左側移“空”了的數(shù)位補1例:unsignedchara=8,c;c=a>>2; //相當于c=a/4(c=2)
(2)移位運算2)右移運算(>>)例:unsignedchara=8,c;c=a>>2; //相當于c=a/4(c=2)
(2)移位運算2)右移運算(>>)又例:unsignedchara=-8,c;c=a>>1; //結果c=-4(3)位運算的復合賦值運算
共五種:
&= |= ^= <<= >>=例如:x&=0xF5 相當于 x=x&0xF5x^=x 相當于 x=x^x【例1-2】移位運算的示意程序
//C++程序#include<iostream.h>voidmain(){shortintx,n;while(1){cout<<"請輸入x和n的值,當n小于或等于0時,程序結束。"<<endl;cin>>x>>n;if(n<=0)break;cout<<"將"<<x<<"左移"<<n<<"位結果為:"<<(x<<n)<<endl;cout<<"將"<<x<<"右移"<<n<<"位結果為:"<<(x>>n)<<endl;}cout<<"程序結束!"<<endl;}【例1-2】移位運算的示意程序
//對應的C程序#include<stdio.h>voidmain(){shortintx,n;while(1){printf("請輸入x和n的值,當n小于或等于0時,程序結束。\n");scanf("%d%d",&x,&n);if(n<=0)break;printf("左移:%d<<%d=%d\n",x,n,x<<n);printf("右移:%d>>%d=%d\n",x,n,x>>n);}printf("程序結束!\n");}第1章C語言基礎(續(xù))
主要內(nèi)容1.1一般概念1.2基本語法成分1.3數(shù)據(jù)的輸入和輸出1.4編譯預處理
1.3
數(shù)據(jù)的輸入和輸出
1.3.1cin和cout
使用預編譯命令:#include<iostream.h>//輸入輸出流庫1.cout的簡單用法一般格式:cout<<表達式1<<表達式2<<…<<表達式n;<<:輸出運算符(插入符)
1.3
數(shù)據(jù)的輸入和輸出
1.3.1cin和cout
1.cout的簡單用法一般格式:cout<<表達式1<<表達式2<<…<<表達式n;輸出換行符:cout<<'\n';//或cout<<endl;
2.setw的簡單用法setw是頭文件iomanip中的函數(shù),其功能是為cout輸出的數(shù)據(jù)項指定域寬,一般格式為cout<<setw(n)<<
表達式其中,“n”是int類型,用于指定輸出“表達式”所占域寬。若表達式實際長度小于n,則由填充字符補足;若表達式實際長度大于n,則突破域寬,按實際長度輸出。例如:cout<<'A'<<setw(5)<<'B'<<setw(3)<<1234567<<endl;輸出結果為:A□□□□B1234567//這里,□表示空格1.3
數(shù)據(jù)的輸入和輸出
1.3.1cin和cout
3.cin的簡單用法一般格式:cin>>變量1>>變量2>>…>>變量n;
>>:輸入運算符(提取符)
一般格式:
printf(格式控制串,輸出項序列);輸出項序列——列出本句要輸出的數(shù)據(jù)項(表達式)格式控制串——指出各輸出項所要求的格式1.3.2printf格式段一般形式:
%附加格式說明格式控制字符打頭可無結尾示例(A整型,B實型,C字符型)printf("%d%f%c\n"A,B,C);
1.3.2printfA的輸出格式B的輸出格式C的輸出格式輸出換行符全套格式段:%+-0域寬補充格式格式字符1.3.2printf+:要求輸出數(shù)值的正負號(缺省:不輸出正號)
-
:要求左對齊(缺?。河覍R)0
:左對齊情況下,左側空位用0填充(缺?。禾羁崭瘢┯驅?/p>
:指定輸出項所占寬度(缺省:按標準域寬)單域寬:m(具體數(shù)值),總共占m位雙域寬:m.n(僅對實數(shù)),總共占m位,其中小數(shù)占n位補充格式l:輸出長整型h:輸出短整型若a=123(整型),b=-234.321(實型)printf("a=%d,b=%7.2f\n",a,b+1);輸出結果:
a=123,b=
-233.32格式控制串分5段:“a=”、“%d”(a的格式)“,b=”、“%7.2f”(b+1的格式)“\n”(原樣輸出的換行符,引起換行)常用(輸出)格式字符%d十進制帶符號的整數(shù)(正數(shù)不輸出符號)%o八進制無符號的整數(shù)(不輸出前導符0)%x(X)十六進制無符號整數(shù)(不輸出前導符0x)%u 十進制無符號的整數(shù)%c 輸出一個字符%s 輸出一個字符串%f 小數(shù)形式輸出單、雙精度實數(shù)%e(E)指數(shù)形式輸出單、雙精度實數(shù)%g 小數(shù)或指數(shù)(取短的)輸出單、雙精度實數(shù)注意事項1)不同類型用不同的格式字符2)若指定的域寬過小,或沒指定域寬則按實長輸出3)域寬大,“右對齊,左補空”;帶附加格式“-”時,“左對齊,右補空”4)“%m.nf”只用于輸出實數(shù)共占m列,小數(shù)占n列5)帶附加格式控制“+”時,則輸出正/負號;否則,正數(shù)和0不輸出正負號6)“%m.ns”輸出字符串時,占m列,只輸出串左起n個字符“左對齊右補空”若m<n,則在保證n的前提下,按實長輸出7)用o、x、u格式輸出整數(shù)時,表示不帶符號位(符號位看作數(shù)值的一部分)若輸出負的整數(shù)值時,輸出結果不代表該數(shù)的真實值注意事項8)連續(xù)兩個%,表示要輸出一個“%”9)格式應當與輸出項相等。若不等(不報錯),但可能產(chǎn)生意想不到的結果10)如果前面一個格式說明出現(xiàn)錯誤,也會出現(xiàn)意想不到的結果注意事項示例1:
#include<stdio.h>voidmain(){intx=10;floaty=123.14;charch;printf("inputch=");ch=getchar(); printf("x=%d,y=%f,ch=%c",x,y,ch);}輸出結果:(VC環(huán)境下)
inputch=a(運行時輸入字母a)
x=10,y=123.139999,ch=a示例2整數(shù)的輸出
#include<stdio.h>voidmain(){inta=123,b=2197,c=-321;longk=123456789;printf("%d%+6d%8d\n",a,b,c);printf("%12ld\n",k);}輸出結果:
123+2197-321123456789長整型要用ld格式不能用d格式(會出錯)示例3字符和字符串的輸出#include<stdio.h>voidmain(){charc='a',j=97;printf("%c%4d\n",c,j);printf("%4d%c\n",c,j);printf("%s\n","CWW");printf("%10.6s","CHINAJIANGSU");printf("%-6.5s\n","NANJING");}輸出結果:
a9797aCWWCHINANANJI示例4實數(shù)的輸出
#include<stdio.h>voidmain(){floatx=-1234.5678;doubley=987654321.123456789;printf("x=%f,y=%f\n",x,y);printf("x=%14f,y=%18f\n",x,y);printf("x=%12.3f,y=%15.4f\n",x,y);printf("x=%e,y=%e\n",x,y);printf("x=%12.5e,y=%13.6e\n",x,y);printf("x=%g,y=%g\n",x,y);printf("x=%12.5g,y=%13.6g\n\n\n",x,y);}x=-1234.567749,y=987654321.123457
x=-1234.567749,y=987654321.123457x=-1234.568,y=987654321.1235x=-1.23457e+03,y=9.87654e+08x=-1.2346e+03,y=9.87654e+08x=-1234.57,y=9.87654e+08x=-1234.6,y=9.87654e+08實數(shù)的三種輸出格式:f、e、gf格式:1)若不指定域寬或只指定單域寬,整數(shù)部分按實際長度輸出,輸出小數(shù)點后,再輸出6位小數(shù)(但最后幾位數(shù)字可能不準確)2)若雙域寬(即m.n形式),共占m列,輸出n位小數(shù)實數(shù)的e格式輸出1)若不指定域寬,則按標準形式輸出尾數(shù)部分形如:Y.XXXXX
//Y代表非0數(shù)字,取5位小數(shù)(在VC中,取6位小數(shù))指數(shù)部分形如:e±XX
//±表示正/負號,指數(shù)占2位共占11位(對于正數(shù)),或12位(對于負數(shù))2)若指定域寬m.n時,同樣按標準形式輸出,只是尾數(shù)部分取n位,總域寬占m列(或按實長輸出)實數(shù)的g格式輸出系統(tǒng)自動地按數(shù)值大小,或采用f格式輸出,或采用e格式輸出(取短格式)輸出實數(shù)時,不同的系統(tǒng),小數(shù)位數(shù)和指數(shù)位數(shù)可能不同主要應掌握d,c,s,f
輸出格式的基本用法一般格式:
scanf(格式控制串,地址序列);格式控制串與printf類似地址序列——列出需要讀取數(shù)據(jù)的變量地址(&變量名)1.3.3scanf格式段一般形式:
%附加格式說明格式控制字符打頭通常不用結尾scanf(“%d%d”,&a,&b);//讀入兩個整數(shù),分別賦給a和b
全套格式段:%*域寬m補充格式格式字符*:抑制符
(跳過指定的列數(shù)
)
域寬
m:讀入m列補充格式l:輸入長整型h:輸入短整型1.3.3scanf示例
#include<stdio.h>voidmain(){inta,b;scanf("%d%d",&a,&b);printf("%d,%d\n",a,b);}
或輸入:
123
456
輸入:
123456
至少要有一個空格(或Tab)
常用(輸入)格式字符%d輸入十進制整數(shù)%o輸入八進制整數(shù)%x輸入十六進制整數(shù)%c 輸入字符%s 輸入字符串%f 輸入實數(shù)(整數(shù)、小數(shù)、指數(shù)形式)%e同%f使用方法和注意事項
1)格式項必須與地址表中的項個數(shù)相同,否則將出錯2)輸入數(shù)值型數(shù)據(jù)(整數(shù)或實數(shù))不指定數(shù)據(jù)所占列數(shù),數(shù)據(jù)之間要用空格(或[Tab])分開,也可以每行敲一個數(shù)據(jù)指定所占列數(shù),系統(tǒng)自動按指定寬度讀取數(shù)據(jù),數(shù)據(jù)之間可不加分隔符3)若含有“原樣輸入”字符,輸入數(shù)據(jù)時必須在相應的位置上輸入這些字符,否則會讀入錯誤的數(shù)據(jù)例:scanf("%d,%d",&a,&b);輸入時,兩數(shù)中間必須帶逗號,比如輸入成:123,-45
而scanf("a=%d,b=%d",&a,&b);輸入時,兩數(shù)之前必須帶“a=”和“,b=”比如輸入成:
a=123,b=-45
只起“事后提示”作用
例:scanf("%d%d",&a,&b);
應輸入34
(空格分隔數(shù)據(jù))
若輸入3,4(錯)例:scanf("a=%d,b=%d",&a,&b);
應輸入:a=3,b=4
若輸入:34 (錯)3,4 (錯) a=3b=4 (錯)4)f格式只能用于輸入float類型(且不能使用“雙域寬”),double類型用%lf,或%le輸入5)地址序列中變量名前必須加地址運算符&6)特別注意“%c”的用法(所敲的任何內(nèi)容都算作有效字符)7)控制符“*”用于抑制輸入,表示讀數(shù)據(jù)時要跳過相應的列數(shù)1.4
編譯預處理編譯時,預先對源程序進行處理,再編譯預編譯命令三種預編譯命令:宏定義文件包含條件編譯(不講)以#開頭,后面跟命令名和命令內(nèi)容
1.
文件包含命令
功能:指示編譯器,將一個文件內(nèi)容,插在另一個源程序文件的內(nèi)容中,合在一起編譯
兩種格式:#include"文件名"#include<文件名>要包含的函數(shù)庫文件或C源程序文件搜索路徑不同例
#include"myfile1.c"
用雙引號括起被包含文件myfile1.c
指示編譯系統(tǒng)先在用戶的當前目錄中找myfile1.c再按系統(tǒng)設定的標準目錄找myfile1.c
常用于包含用戶文件(一般在當前目錄中)格式一例
#include<stdio.h>
用尖括號將被包含文件括stdio.h起來指示編譯系統(tǒng)按系統(tǒng)設定的標準目錄找stdio.h
常用于包含庫文件(通常放在預設的標準目錄下),可節(jié)省查找時間
格式二說明:習慣上,文件包含命令都放在源程序文件的開頭處希望編譯系統(tǒng)將被包含文件內(nèi)容,加在源程序前面編譯被包含文件稱為“頭部文件”(頭文件),文件后綴通常為“.h”
文件包含命令作用文件f.c的內(nèi)容文件g.c的內(nèi)容要編譯的內(nèi)容
內(nèi)容B
內(nèi)容A1
內(nèi)容A2#include"g.c"
內(nèi)容A1
內(nèi)容A2
內(nèi)容B注意事項1)一條命令只能指定一個被包含文件例,使用多種標準庫函數(shù)時,要一一包含#include<stdio.h>//標準I/O函數(shù)#include<math.h>//標準數(shù)學函數(shù)#include<string.h>//標準字符串庫函數(shù)#include<ctype.h>//標準字符庫函數(shù)不能寫成:#include<stdio.h>,<math.h>,<string.h>,<ctype.h>2)使用文件包含命令可以減輕設計人員的工作將公用的宏定義、函數(shù)或外部變量的聲明等做成一個文件(包含起來)若要修改,只需修改相應的頭部文件,有利于程序的更新維護2.
宏定義
1.不帶參數(shù)的宏定義格式:
#define宏名宏代換串標識符字符串——源程序的一段內(nèi)容使用宏命令分為三步:1)在程序前部進行宏定義2)在程序中使用宏(宏調用)3)編譯預處理時,進行宏代換(自動宏展開)
1.不帶參數(shù)的宏定義命令含義:程序中本該寫宏代換串的地方,寫成宏名預處理操作:系統(tǒng)將程序中所有宏名都置換成宏代換串宏置換,宏展開還原用戶的本來用意主要用法1)定義符號常量例如:
#definePI3.14159用PI代表3.14159。預處理時,將所有的標識符PI都置換成3.141592)用宏名代替一個較長的字符串例
#definenewptr(ptr)malloc(sizeof(snode))
簡化程序的書寫3)用宏名代替某項操作(很少用)幾點說明1)習慣上宏名用大寫區(qū)別于變量名(用小寫)防止置換錯誤2)宏定義的末尾不加分號若加分號,則連同分號一起置換例#definePI3.14159;那么:
s=PI*r*r;宏展開后,該語句被置換成:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年劇本殺運營公司綠色運營推廣管理制度
- 2025年生態(tài)濕地公園建設可行性分析:技術創(chuàng)新與生態(tài)濕地修復
- 農(nóng)業(yè)病蟲害防控智能化趨勢:2025年監(jiān)測預警系統(tǒng)可行性報告
- 2026年生物科技行業(yè)創(chuàng)新報告及基因編輯技術臨床應用
- 2025年跨境電商獨立站品牌忠誠度培養(yǎng)報告
- 2025年新能源汽車五年市場報告
- 生態(tài)養(yǎng)殖循環(huán)產(chǎn)業(yè)鏈建設項目2025年技術創(chuàng)新與農(nóng)業(yè)產(chǎn)業(yè)鏈優(yōu)化可行性研究
- 冷鏈物流配送路徑優(yōu)化系統(tǒng)開發(fā)可行性研究報告-2025年行業(yè)挑戰(zhàn)與對策
- 介休教師面試題目及答案
- 前列腺相關問題解答與護理
- 臨床科室基本醫(yī)療保險服務質量考核評分標準
- 臺州風土人情(共15張PPT)
- CodeSoft 6.0 詳細使用手冊
- 招投標與采購管理-課件
- 教學查房-子宮內(nèi)膜息肉
- 關于婚內(nèi)協(xié)議書范本
- 漢服文化介紹(精選)課件
- 婦產(chǎn)科學(第9版)第三章 女性生殖系統(tǒng)生理
- GB/T 17626.4-1998電磁兼容試驗和測量技術電快速瞬變脈沖群抗擾度試驗
- 深圳大學圖書城管理中心大樓項目標底及投標報價測算分析報告4200字
- 新生兒家庭訪視課件
評論
0/150
提交評論