




免費預覽已結(jié)束,剩余119頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一章 緒論上機實習:WiN-TC系統(tǒng)的基本操作方法一、目的要求1、 掌握C程序的基本結(jié)構(gòu)。2、 熟悉WiN-TC系統(tǒng)的操作界面。3、 能熟練地啟動WiN-TC和退出WiN-TC。4、 掌握在WiN-TC中建立、運行、修改、保存和裝入程序的方法。5、 掌握插刪字符和插刪行等基本的編輯操作。二、上機內(nèi)容下面是三個從最簡單到稍復雜的C程序,仔細閱讀程序并領(lǐng)會各程序的運行結(jié)果,以熟悉C程序的基本結(jié)構(gòu)和WiN-TC的基本操作流程。1、 main() printf( Hello China!);(1) 調(diào)試該程序。(2) 在函數(shù)體中插入一行語句,使上面的程序變成:main() clrscr(); /* 清屏 */ printf(Hello China!);再次運行程序并仔細觀察運行結(jié)果,這次是先清屏,再從屏幕的左上角開始顯示“Hello China!”。說明:清屏函數(shù)clrscr(),先清屏再顯示出運行結(jié)果2、 main() int a,b,sum; a=1; b=2; sum=a+b; clrscr(); printf(sum=%d,sum);(1) 運行該程序,對比自己的判斷與屏幕上的結(jié)果是否一致。(2) 刪除函數(shù)體第一行中的變量定義語句“int a,b,sum;”,或?qū)⒃撜Z句注釋起來。再運行程序,看看會有什么結(jié)果。3、 main() int a,b; a=2; b=pf(a); printf(a=%d, b=%d,a,b); pf(num) int num; int t; t=num*num; return(t); (1) 運行程序后分析該程序執(zhí)行的功能。(2) 將程序中的main()函數(shù)改寫如下:main() int a,b; clrscr(); scanf(%d, &a); b=pf(a); printf(a=%d, b=%d,a,b); 再運行程序,當從鍵盤輸入2時,輸出: a=2, b=4從鍵盤輸入5時,輸出: a=5, b=25如果是第二種情況會有什么好處?使用scanf函數(shù)的好處是,可以在程序的運行過程中靈活地輸入我們想求平方的一個數(shù),并根據(jù)該數(shù)輸出其平方值。第二章 基本數(shù)據(jù)類型和簡單程序設(shè)計第一節(jié) 學習指導一、 學習目標本章重點介紹了C語言的三種基本數(shù)據(jù)類型,即整型、浮點型和字符型,以及這三種數(shù)據(jù)類型的簡單程序設(shè)計。每個程序都有自己特定的數(shù)據(jù)處理對象,例如,求123100之和的程序,它的數(shù)據(jù)對象是整數(shù);求一元二次方程的根的程序,它的數(shù)據(jù)對象是小數(shù)??梢哉f,任何程序設(shè)計都會涉及到對數(shù)據(jù)的處理,因此,如何在程序中表示數(shù)據(jù)是一個最基本的問題。學習本章的目的,就是要了解各種基本數(shù)據(jù)類型的特點,知道如何在程序中使用這些類型的數(shù)據(jù),在定義變量時如何根據(jù)實際需要隨機應變。本章學習目標如下:1、 了解三種基本數(shù)據(jù)類型的特點。2、 掌握三種基本數(shù)據(jù)類型常量的表示方法。3、 熟練掌握三種基本數(shù)據(jù)類型變量的定義方法。4、 了解混合運算中的類型轉(zhuǎn)換。二、 幾個需要注意的問題1、 常量與變量。要記住常量和變量的定義很容易,前者是在程序運行過程中其值不能改變的量,后者是在程序運行過程中其值允許改變的量。但是,對第一次學習程序設(shè)計的初學者來說,往往弄不明白編程時什么時候使用常量,什么時候使用變量。舉一個簡單的例子,如果你僅僅是想求13與25之和,那么可以在程序中寫出下面的語句: printf(%d,13+25);這里,13和25就是常量,這個語句中沒有出現(xiàn)任何一個變量。但是,如果你是想求兩個數(shù)之和,而這兩個數(shù)又是根據(jù)不同的需要而改變的,那么就可以在程序中利用定義變量的方法解決,如下面的語句: printf(%d,a+b);或: sum=a+b; printf(%d,sum);這里,a、b、sum就是變量,在執(zhí)行a+b之前,可以通過輸入語句給它們賦值,也可以通過賦值語句,把常量或表達式的值分別賦給它們??傊琣和b的值是可變的。2、 變量名的命名規(guī)則。程序中的每個變量都有一個名字,變量名在定義該變量時就確定了。并非任何一個字符序列都可以作為一個變量名,只有符合一定規(guī)則的名字才是有效的。(1) 變量名只能由字母(AZ,az)、數(shù)字(09)和下劃線(_)三種符號組成,第一個字符必須是字母或下劃線。下面是合法的變量名:Y,student2,student_name,_page10下面是不合法的變量名:2student,sum$3,dr.a,#num(2) 大寫字母與小寫字母代表含義不同的字符,即兩者不等價。如,sum、Sum和SUM代表三個完全不同的變量。(3) Turbo C規(guī)定,變量名的前32個字符在程序中是有效的。盡管語法允許給變量取一個如此長的名字,但根據(jù)一般的編程經(jīng)驗,變量名的長度通常在8個字符以內(nèi)就行了,沒有必要取太長的名字自找麻煩。(4) 不允許使用關(guān)鍵字作變量名。關(guān)鍵字是C語言的編譯程序定義的有固定用法的名字,如,關(guān)鍵字int的作用是定義一個整型變量,因此,用戶就不能再用int來作為某個變量的名字。除了變量名必須遵守上述命名規(guī)則,在后面章節(jié)中介紹的數(shù)組名、函數(shù)名和數(shù)據(jù)類型名等也必須遵守這些命名規(guī)則。另外,為了提高程序的可讀性,給變量命名時最好能做到“見名知意”。3、 變量的定義。C語言規(guī)定,程序中的變量必須是“先定義,后使用”。初學者往往容易忽略在使用變量之前先定義變量,這一點一定要注意。(1) 一個變量就是一個存儲區(qū)域,它能存儲相同類型的不同數(shù)據(jù),使用變量名就是使用變量存儲區(qū)域中存儲的數(shù)據(jù)。(2) 把某個變量定義為哪一種基本類型,關(guān)鍵是看打算用該變量存儲什么數(shù)據(jù)。例如,想用一個變量存放單個字符,則可把該變量定義為char型;若想存放1100之間的整數(shù),則可把該變量定義為int型;若想存放小數(shù),則可把該變量定義為float型。定義變量時還應考慮數(shù)據(jù)的大小范圍。試分析下面的程序:main() int a,b,c; a=20000; b=30000; c=a+b; printf(c=%d,c);不要以為這個程序的運行結(jié)果會是c=50000,事實上,它的運行結(jié)果是c=-15536。因為變量c的類型是int型,它所能存放的最大整數(shù)是32767,而a與b之和50000超出了這個范圍,運行結(jié)果自然就出錯了。要想得出正確的運行結(jié)果,上面的程序應改為:main() int a,b; unsigned c; a=20000; b=30000; c=a+b; printf(c=%u,c); /* %u表示以unsigned型整數(shù)的形式輸出變量的值 */(3) 定義一個變量時應盡可能地考慮節(jié)省存儲空間。例如,某個程序中的變量a用來存放100以內(nèi)的自然數(shù),那么,變量a可以定義為int類型,也可以定義為long類型。選哪一種呢?當然是int型!因為,一個int型變量只占2個字節(jié),而long型變量卻要占4個字節(jié)。三、易出現(xiàn)的語法錯誤及出錯信息上機操作時,有語法錯誤的程序不能順利通過編譯過程,這時,出錯信息會出現(xiàn)在Massage窗口中,每條出錯信息前有一個用來報告錯誤所在行的行號,可以按這個行號查找程序中出錯的地方,修改之后再重新對程序進行編譯。下面列出了在定義變量時易出現(xiàn)的語法錯誤及相應出錯信息。1、 變量沒有定義。出錯信息: Undefined symbol XXXX 分析:C語言規(guī)定,變量使用之前必須先定義。這條出錯信息產(chǎn)生的原因是使用了一個沒有定義過的變量。程序示例:main() a=2; b=3; printf(%d,a+b);這個程序在編譯時,Massage窗口中將顯示出第3行的變量a和第4行的變量b沒有定義的出錯信息。又如:main() int a;b; a=2; b=3; printf(%d,a+b);這個程序好象沒有什么錯誤,但編譯時Massage窗口中將顯示出: Undefined symbol b in function main為什么呢?仔細觀察,你會發(fā)現(xiàn)程序的第三行定義變量a和b時,a與b之間是分號而不是逗號。分號代表一個語句的結(jié)束,因此,分號后面的b就沒有定義了。這好象是一個很好笑的錯誤,但是,對粗心的初學者來說,上機時往往會因忽略細節(jié)而導致程序的失敗。2、 定義變量時的語法錯誤。出錯信息: Declaration syntax error分析:通常這條信息的出錯之處在變量定義或函數(shù)定義中,而定義中具體的語法錯誤又可能是多種多樣的,所以,這是一條較難查找的錯誤。下面的程序示例給出了兩種導致這條信息的變量定義錯誤。程序示例:main() int a b; a=2; b=3; printf(%d,a+b);這個程序的錯誤之處是,第3行定義變量時,變量a和b之間用的是空格間隔,而不是用逗號間隔。又如:main() float 2s; 2s=26.8; printf(%f,2s);這個程序中使用了一個名字不合法的變量,即2s。注意,變量名必須以字母或下劃線開頭。第二節(jié)上機實習:基本數(shù)據(jù)類型的簡單程序設(shè)計一、目的要求1、 進一步熟悉Turbo C集成環(huán)境下程序的建立、修改和運行。2、 熟悉定義各種基本數(shù)據(jù)類型變量的方法。3、 初步了解printf函數(shù)的使用方法。4、 熟悉有關(guān)變量定義的語法錯誤,并能夠根據(jù)出錯信息修改、調(diào)試程序。二、上機內(nèi)容1、 語法錯誤的檢查與修改。下面的程序均含有語法錯誤,在Turbo C集成環(huán)境中建立源程序并使用Run命令后,仔細觀察Massage窗口中的出錯信息,并分析出錯原因,找出程序中的錯誤所在之處。改正錯誤之后再重新運行程序。注意,出錯信息顯示在Massage窗口中時,可以按F6鍵在Massage窗口與Edit窗口之間切換。(1) main() int x1,x2; x1=5; x2=10; y=x1*x2; printf(y=%d,y);(2) main() FLOAT a; a=2.6; printf(%f,a*3);(3) main() int num#1; num#1=50; printf(%d,num#1/2);(4) main() char ch; ch=A; printf(%c,ch);2、 分析程序的運行結(jié)果。上機之前先寫出下面程序的運行結(jié)果,上機時再比較實際運行結(jié)果與自己分析的結(jié)果是否一致。(1) main() int num1,num2,num3; clrscr(); num1=4; num2=2; num3=num1/num2; printf(num3=%dn,num3); num1=12; num2=3; num3=(num1+num2)*2; printf(num3=%d,num3);(2) main() int r; float s; clrscr(); r=2; s=3.14159*r*r; printf(r=%dn,r); printf(s=%f,s);(3) main() char c1,c2; clrscr(); c1=a; c2=b; printf(字母a的ASCII碼為: %d n字母b的ASCII碼為: %d,c1,c2);(4) main() char ch; clrscr(); ch=02; printf(%cn,ch); ch=03; printf(%c,ch);提示:這個程序中,02和03分別表示ASCII碼為2和3的字符,前者是一個笑面符號,后者是一個心形符號。通過這種形式,可以輸出不能用鍵盤符號表示的字符。上機操作時,你不妨將02和03分別改為04和05,看看會有什么運行結(jié)果。3、 編寫一個簡單的程序。已知三個整數(shù)分別為100、82、93,編一程序求這三個數(shù)的平均值。要求使用變量。第三章 表達式與運算符第一節(jié)學習指導三、 學習目標本章重點介紹了幾類常用的運算符,以及由這些運算符構(gòu)成的表達式。在實際編程中,算術(shù)運算符和賦值運算符幾乎是每個C程序都要用到的,這也是本章應重點掌握的內(nèi)容。對于關(guān)系表達式和邏輯表達式,可能你覺得一時還用不上它們,但在后面的選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的程序設(shè)計中,條件判斷均是以關(guān)系表達式或邏輯表達式的形式表示,因此,理解并掌握關(guān)系運算符和邏輯運算符及其相關(guān)表達式,是學好選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的基礎(chǔ)。本章學習目標如下:1、 熟悉各種基本的算術(shù)運算符,能夠把一個普通的數(shù)學公式改寫成符合C程序語法規(guī)則的算術(shù)表達式。2、 理解各種關(guān)系運算符和邏輯運算符的意義,能準確判斷關(guān)系表達式和邏輯表達式的值。3、 熟練掌握賦值運算符和各種復合賦值運算符的用法。4、 熟悉各類常用運算符的優(yōu)先級。四、 需要注意的幾個問題1、 關(guān)于除法運算符。除法運算符“/”與一般的算術(shù)運算規(guī)則不同,當整型數(shù)據(jù)除以整型數(shù)據(jù)時,其商也是整數(shù)。除法運算符“/”的這一特點有時會影響運算結(jié)果的精確性,看下面求兩個數(shù)的平均值的程序:main() int num1,num2,sum,n; float average; num1=13; num2=28; n=2; sum=num1+num2; average=sum/n; printf(%.2f,average); /* %.2f 表示輸出的浮點數(shù)只保留兩位小數(shù) */這個程序的運行結(jié)果是20.00,而不是20.50,因為變量sum和n都是是整型變量,相除的結(jié)果就是一個舍去了小數(shù)部分的整型數(shù)。如果想得到精確的運算結(jié)果,則可將程序中的語句: average=sum/n;改為: average=(float)sum/n;2、 關(guān)系表達式和邏輯表達式。關(guān)系表達式和邏輯表達式的值只有兩種:1和0,即表達式為真時,其值為1,表達式為假時,其值為0。而在判斷真與假時,則是0為假,非0為真。需要注意的是,數(shù)學上很常見的一種比較大小關(guān)系的寫法,在C語言中卻變成了另外的含義。如,要表示x的值在3和10之間,數(shù)學上可以寫為: 3x10而在C語言中,上面的式子等效于: (3x)10當x的值不在3和10之間時,這個關(guān)系表達式依然為真。這里,我們假設(shè)x的值為100,關(guān)系表達式3x為真,其值為1,而關(guān)系表達式110顯然為真。因此,在C語言中要表示x的值在3和10之間,就應該寫成下面的邏輯表達式: 3x & x103、 賦值運算符與賦值表達式。(1) 賦值運算符“=”不同于數(shù)學中的等號。在數(shù)學上,算式i=i+2顯然不成立。但在C語言中,表達式i=i+2的作用是把變量i的值加上2,并把得到的和賦值到變量i中。(2) 特別要注意的是,賦值運算符的左邊只能是一個變量名,而不能是一個常量或其它的表達式。下面都是錯誤的賦值表達式: 13=a a+b=5 num*2=100如果程序中出現(xiàn)了錯誤的賦值表達式,則編譯時Massage窗口中會顯示下面的出錯信息: Lvalue required(3) 給變量賦值時是“新來舊去”,即,把一個新的值賦給變量后,該變量中原來的值就被覆蓋掉了。4、 運算符的優(yōu)先級。C語言對每一種運算符都規(guī)定了優(yōu)先級,有時候,在同一表達式中需要同時使用多種運算符,這時就要考慮各個運算符的優(yōu)先級問題。第二節(jié)上機實習一:算術(shù)運算符及算術(shù)表達式一、目的要求1、 熟悉各種算術(shù)運算符的使用規(guī)則。2、 能夠編寫程序,求簡單的數(shù)學算式的值。二、上機內(nèi)容1、 運行下列程序,注意觀察運行結(jié)果。(1) main() int a=11,b=3; clrscr(); printf(a/b=%dn,a/b); printf(float)a/b=%fn,(float)a/b); printf(a%b=%d,a%b); /* “%”的作用是打印出字符“%” */(2) main() float x=3.8; clrscr(); printf(x=%.2fn,x); printf(int)x=%d,(int)x);(3) main() int a=7,b=4; float x=2.5,y; clrscr(); y=x+a%3*(int)(x+b)%2/4; printf(y=%f,y);2、 編寫程序。已知: 其中,a=-10,b=30。編一程序求y的值。3、 完善程序。已知一元二次方程: ax2+bx+c=0其中,a=1,b=4,c=2。下面的程序是求方程的兩個實數(shù)根,請在橫線處填寫正確的語句或表達式,使程序完整。程序的后面給出了該程序正確的運行結(jié)果,上機調(diào)試完善后的程序,看看你的程序運行結(jié)果是否與書中的結(jié)果一致。# include main() int ; /* 定義變量a、b、c,并給變量賦初值 */ float d,x1,x2; clrscr(); d=sqrt( ); /* 求b2-4ac的平方根 */ ; /* 求x1的值 */ ; /* 求x2的值 */ printf(x1=%.2fn,x1); printf(x2=%.2f,x2);運行結(jié)果為: x1=-0.59 x2=-3.41提示:求根公式為:C語言中計算平方根的函數(shù)是sqrt()函數(shù),例如,sqrt(a+b)即是求a+b的平方根。第三節(jié)上機實習二:關(guān)系表達式和邏輯表達式一、目的要求1、 掌握各種關(guān)系運算符和邏輯運算符的功能。2、 能正確理解“真”、“假”的概念,及其在C語言中的表示形式。3、 能夠把一個命題寫成符合C語言語法規(guī)則的關(guān)系表達式或邏輯表達式。二、上機內(nèi)容1、 運行下列程序,分析并觀察運行結(jié)果。(1) main() int a,b,c; a=1; b=2; c=3; clrscr(); printf(a=%d,b=%d,c=%dn,a,b,c); printf(ab 的值為:%dn,ab); printf(a=b 的值為:%dn,ab 的值為:%dn,cb);(2) main() int x=3,y=4,z=5; int b; clrscr(); printf(x=%d,y=%d,z=%dn,x,y,z); b=xy&xz; printf(xy&xz 的值為:%dn,b); b=xz; printf(xz 的值為:%dn,b); b=xz; printf(xz 的值為:%dn,b); b=!x; printf(!x 的值為:%dn,b); b=!(xy); printf(!(xy) 的值為:%dn,b); b=(xy|xz)&yy|xz)&yz 的值為:%dn,b);(3) main() int x=20,y; clrscr(); y=2x10; printf(x=%dn,x); printf(2x10 的值為:%dn,y); y=2x&x10; printf(2x&x10 的值為:%d,y);2、 完善程序。已知,閏年符合下面兩個條件之一:(1) 能被4整除,但不能被100整除;(2) 能被400整除。下面的程序驗證2000年為閏年,請在橫線處填寫正確的運算符或表達式,使程序完整。程序的后面給出了該程序正確的運行結(jié)果,上機調(diào)試完善后的程序,看看你的程序運行結(jié)果是否與書中的結(jié)果一致。提示:可以通過求余運算判斷能否整除。若a%b的值為0,則表明a能被b整除。main() int year=2000,b; b=(year%4=0 year%100 0) ( ); clrscr(); printf(%d,b);運行結(jié)果:1第四節(jié)上機實習三:賦值運算一、目的要求1、 理解賦值運算符的意義,了解賦值運算符與數(shù)學中的等號的區(qū)別。2、 熟悉常用的復合賦值運算符以及自增和自減運算符。二、上機內(nèi)容1、 下面的程序均有語法錯誤,上機調(diào)試程序,注意觀察Message窗口中的出錯信息,并根據(jù)出錯信息改正程序中的錯誤之處。(1) main() int a; 0=a; printf(a=%d,a)(2) main() int a; b=1,c=2; b+c=a; printf(a=%d,a);2、 運行下列程序,分析并觀察運行結(jié)果。(1) main() int x,y; clrscr(); x=y=25; printf(x=%d,y=%d,x,y);(2) main() int x=3,y=2; clrscr(); x*=y+8; printf(1: x=%dn,x); x-=y; printf(2: x=%dn,x);(3) main() int a=10,b; clrscr(); b=a+; printf(a=%d,b=%dn,a,b); b=+a; printf(a=%d,b=%dn,a,b);3、 完善程序。下面程序的功能是交換變量a和b的值,請在橫線處填寫正確的表達式或語句,使程序完整。程序的后面給出了該程序正確的運行結(jié)果,上機調(diào)試完善后的程序,看看你的程序運行結(jié)果是否與書中的結(jié)果一致。提示:交換兩個變量的值,需要一個中間變量來暫時存放其中一個變量的值。下面的程序段是錯誤的: a=b; b=a;若變量a的初值為1,b的初值為2,那么執(zhí)行了第一個語句之后,變量a的值就變成了2,而不再是原來的值1。因此整個程序段執(zhí)行之后,a和b的值均為2。main() int a=1,b=2,c; clrscr(); /* 輸出交換前變量a和b的值 */ c= ; a= ; b= ; /* 輸出交換后變量a和b的值 */運行結(jié)果:a=1,b=2a=2,b=1第四章 數(shù)據(jù)的輸入與輸出第一節(jié)學習指導五、 學習目標C語言的輸入與輸出是通過函數(shù)來實現(xiàn)的,本章重點介紹了六個輸入輸出函數(shù),分別是:字符輸入輸出函數(shù):getchar()函數(shù)和putchar()函數(shù)字符串輸入輸出函數(shù):gets()函數(shù)和puts()函數(shù)格式輸入輸出函數(shù):scanf()函數(shù)和printf()函數(shù)本章學習目標如下:1、 熟練掌握各個輸入輸出函數(shù)的調(diào)用格式。2、 熟悉scanf()函數(shù)和printf()函數(shù)的控制參數(shù)。六、 輸入輸出在編程中的應用一個較簡單的程序通常具有如下結(jié)構(gòu):數(shù)據(jù)輸入數(shù)據(jù)處理數(shù)據(jù)輸出其中,程序的核心部分是“數(shù)據(jù)處理”,而“數(shù)據(jù)輸入”和“數(shù)據(jù)輸出”同樣是程序設(shè)計的重點,因為輸入輸出直接影響到程序的界面??梢哉f,操作界面是衡量一個軟件成敗的重要因素之一,這一點從DOS操作系統(tǒng)和Windows操作系統(tǒng)的界面就可得到驗證。C語言中,通過靈活運用輸入輸出函數(shù),就能實現(xiàn)友好的人機界面。七、 為什么要使用預編譯命令#include在本書第三章的上機實習一中,一個求一元二次方程實數(shù)根的程序里使用了下面的預編譯命令: # include 而配套教材在第四章例題程序中,又多次使用了預編譯命令: # include # include命令的作用是把頭文件(如math.h和stdio.h)包含到本程序中,為什么要這樣做呢?這是因為庫函數(shù)的原型說明(如函數(shù)的類型及其參數(shù)類型、函數(shù)中用到的符號常量等等)被放在一個或多個頭文件(擴展名為.H)中,如果你的程序要調(diào)用某個庫函數(shù),那么在程序的開頭應該用文件包含預編譯命令#include將相應的頭文件包含進本程序中,否則,你的程序?qū)⒉荒茼樌赝ㄟ^編譯。例如,程序中使用了getchar()函數(shù),但程序的開頭沒有# include 命令,編譯時Message窗口中就會顯示出如下出錯信息:Undefined symbol _putchar八、 使用scanf()函數(shù)時容易出現(xiàn)的幾個錯誤格式輸入函數(shù)scanf()和格式輸出函數(shù)printf()的用法非常靈活多變,特別是scanf()函數(shù),初學者在使用時很容易出錯。1、 變量名之前忘寫取地址運算符&。調(diào)用scanf()函數(shù)時,變量名之前必須要有取地址運算符&,否則,將導致輸入數(shù)據(jù)出錯,而這樣的錯誤又不會被編譯程序和連接程序發(fā)現(xiàn)??聪旅娴某绦颍簃ain() int a; scanf(%d,a); /* 變量a之前沒有寫取地址運算符& */ printf(a=%d,a);事實上,這個程序能夠順利通過編譯和連接,但程序的運行結(jié)果卻是:100 (輸入100后按回車鍵)a=201 (輸出201)要想得到正確的運行結(jié)果,就要將程序中的 scanf(%d,a);改成 scanf(%d,&a);2、 輸入實型數(shù)據(jù)時指定小數(shù)位數(shù)。使用printf()函數(shù)輸出實型數(shù)據(jù)時,可以指定數(shù)據(jù)的寬度和小數(shù)位數(shù),但使用scanf()函數(shù)輸入實型數(shù)據(jù)時,允許指定數(shù)據(jù)的寬度,卻不允許指定小數(shù)位數(shù)??聪旅娴某绦颍簃ain() float a; scanf(%.2f,&a); printf(a=%d,a);這個程序同樣能夠順利通過編譯和連接,但運算結(jié)果卻是錯誤的。程序運行時,并不等待輸入變量a的值,而是直接顯示出下面的結(jié)果:a=12042818788786176.0000003、 想用scanf()函數(shù)顯示輸入數(shù)據(jù)的提示信息。在輸入數(shù)據(jù)之前,讓屏幕上顯示出輸入提示信息是一種很友好的做法。但是,C語言中不能通過輸入函數(shù)來顯示出提示信息??聪旅娴某绦颍簃ain() int a,b; scanf(a=%d,b=%d,&a,&b); printf(a=%d,b=%d,a,b); 這個程序運行時不會顯示出“a=”和“b=”,然后再等待輸入變量a和b的值。特別要注意的是,scanf()函數(shù)的控制參數(shù)中,格式轉(zhuǎn)換控制符之外的所有字符,在程序運行時都必須原樣輸入(而不是原樣輸出)。例如,上面的程序如果想把1和2分別輸入到變量a和b中,運行時就應輸入如下的內(nèi)容:a=1,b=2 (輸入內(nèi)容)a=1,b=2 (輸出結(jié)果)錯誤的輸入則會導致變量a和b的值不正確。如:1,2 a=5825,b=23016那么,怎樣才能在程序運行時顯示出提示信息呢?盡管上面程序中的輸入函數(shù)scanf(a=%d,b=%d,&a,&b)毫無錯誤,并且運行時只要輸入格式正確就不會影響運行結(jié)果,但是,scanf()函數(shù)的控制參數(shù)中類似“a=”和“b=”的寫法是沒有意義的,這樣做只會增加輸入的負擔和出錯的機會。要想在輸入數(shù)據(jù)之前顯示出提示信息,正確的做法應該是通過輸出函數(shù)來實現(xiàn)。下面的三個程序都是求兩個數(shù)之和,請比較一下它們的運行結(jié)果。(1) main() int a,b,sum; scanf(%d,%d,&a,&b); sum=a+b; printf(%d,sum);運行結(jié)果:12,35 47(2) main() int a,b,sum; printf(a=); scanf(%d,&a); printf(b=); scanf(%d,&b); sum=a+b; printf(sum=%d,sum);運行結(jié)果:a=12 b=35 sum=47(3) main() int a,b,sum; printf(輸入第一個整數(shù):); scanf(%d,&a); printf(輸入第二個整數(shù):); scanf(%d,&b); sum=a+b; printf(%d+%d=%d,a,b,sum);運行結(jié)果:輸入第一個整數(shù):12 輸入第二個整數(shù):35 12+35=47五、另一個常用的字符輸入函數(shù)配套教材中介紹的getchar()函數(shù)和scanf()函數(shù)都可以用來輸入字符。如,要輸入一個字符到字符型變量ch中,可以寫成: ch=getchar();或 scanf(%c,&ch);另外,getch()函數(shù)也是一個非常有用的字符輸入函數(shù),它的調(diào)用格式是: getch()該函數(shù)的返回值與getchar()函數(shù)相同,即返回輸入字符的ASCII碼。與getchar()函數(shù)不同的是,getch()函數(shù)執(zhí)行時不等待按回車鍵,并且,屏幕上不顯示輸入的字符。如果想實現(xiàn)程序在運行過程中暫停、按任意鍵之后又繼續(xù)的功能,那么使用getch()函數(shù)就是最好最方便的選擇。試分析下面的程序:main() int a,b,c; clrscr(); puts(輸入兩個整數(shù):); scanf(%d,%d,&a,&b); c=a+b; clrscr(); printf(%d+%d=%dnnn,a,b,c); puts(按任意鍵繼續(xù).); getch(); c=a*b; clrscr(); printf(%d*%d=%dn,a,b,c);運行結(jié)果:輸入兩個整數(shù):2,3 2+3=5按任意鍵繼續(xù).(按空格鍵)2*3=6第二節(jié)上機實習一:字符的輸入和輸出函數(shù)一、目的要求1、 熟練掌握getchar()函數(shù)的調(diào)用方法,熟悉getchar()函數(shù)的返回值。2、 熟練掌握putchar()函數(shù)的調(diào)用方法。3、 了解getch()函數(shù)。二、上機內(nèi)容1、 運行下列程序,注意觀察運行結(jié)果。(1) #include main() char ch; clrscr(); ch=getchar(); putchar(ch); printf(-ASCII碼:%d,ch);(2) #include main() char c1,c2; clrscr(); c1=getchar(); c2=getchar(); printf(c1=%cn,c1); /* 的作用是輸出符號 */ (c2=n)?printf(c2=回車符):printf(c2=%c,c2);說明:運行這個程序時,分別輸入下面三組數(shù)據(jù),注意觀察各自的運行結(jié)果,并思考為什么會產(chǎn)生這樣的運行結(jié)果。第一組數(shù)據(jù):a 第二組數(shù)據(jù):ab 第三組數(shù)據(jù):abc (3) #include main() char ch,c1,c2; clrscr(); printf(請輸入一個字母:); ch=getchar(); c1=ch-1; c2=ch+1; printf(n%c的前一個字母是%c,后一個字母是%c,ch,c1,c2);說明:可將程序中的語句 ch=getchar();改為: ch=getch();看看運行結(jié)果有什么變化。2、 完善程序。下面程序的功能是,輸入一個小寫字母,輸出其對應的大寫字母;若輸入的不是小寫字母,則提示輸入出錯。請在程序中的橫線處填寫正確的語句或表達式,使程序完整。上機調(diào)試程序,使運行結(jié)果與書中的結(jié)果一致。提示:(1) 大寫字母與小寫字母的ASCII碼具有如下關(guān)系: 大寫字母的ASCII碼小寫字母的ASCII碼32(2) 可以使用條件表達式來判斷輸入的字母是否是小寫字母。如果ch為小寫字母,則邏輯表達式ch=a&ch=z為真。#include main() char ch1,ch2; clrscr(); puts(請輸入一個小寫字母:); ch1=getchar(); ch2=ch1-32; (ch1=a&ch1=z) ? putchar(d%,ch2):printf(輸入出錯!);運行結(jié)果1:請輸入一個小寫字母:b B運行結(jié)果2:請輸入一個小寫字母:# 輸入出錯!運行結(jié)果3:請輸入一個小寫字母:t T第三節(jié)上機實習二:格式輸入輸出函數(shù)一、目的要求1、 熟練掌握scanf()函數(shù)和printf()函數(shù)的調(diào)用格式,及其允許使用的格式轉(zhuǎn)換控制符。2、 熟悉scanf()函數(shù)對各種類型數(shù)據(jù)的鍵盤輸入格式的要求。3、 能靈活運用printf()函數(shù)控制屏幕輸出格式。二、上機內(nèi)容1、 運行下列程序,注意觀察運行結(jié)果。(1) main() int a,b; float c; clrscr(); scanf(%d%d%f,&a,&b,&c); printf(a=%dn,a); printf(b=%dn,b); printf(c=%fn,c);說明:運行這個程序時,分別按下面4種格式輸入數(shù)據(jù),注意觀察各自的運行結(jié)果。第一種輸入格式: 10 25 4.72 第二種輸入格式: 10 25 4.72 第三種輸入格式: 10 25 4.72 第四種輸入格式: 10,25,4.72 (這種輸入格式是錯誤的,想一想錯在什么地方?)(2) main() int a,b; char c; clrscr(); scanf(%d,%d;%c,&a,&b,&c); printf(a=%dn,a); printf(b=%dn,b); printf(c=%cn,c); getch();說明:運行這個程序時,如果想使變量a的值為113,b的值為3720,c為x字符,那么該如何從鍵盤輸入數(shù)據(jù)?(3) main() float p=3.14159; clrscr(); printf(p=%.2fn,p); printf(p=%.4fn,p); printf(p=%10.2fn,p); printf(p=%10.4fn,p); printf(p=%-10.2fn,p); printf(p=%-10.4fn,p);說明:分析并觀察完該程序的運行結(jié)果之后,在語句 clrscr();的后面加入語句 printf(nnn);再次運行程序,注意觀察運行結(jié)果有什么變化。(4) main() char ch1,ch2; ch1=02; ch2=03; clrscr(); printf(t%3cn,ch1); printf(t%2c%c%cn,ch1,ch2,ch1); printf(t%c%c%c%c%cn,ch1,ch2,ch2,ch2,ch1);說明:可以把最后三行語句中的“t”去掉,看看程序的運行結(jié)果有什么變化,以此領(lǐng)會轉(zhuǎn)義字符t的作用。2、 完善程序。下面程序的功能是,根據(jù)商品的原價和折扣率,計算商品的實際售價。請在程序中的橫線處填寫正確的語句或表達式,使程序完整。上機調(diào)試程序,使程序的運行結(jié)果與書中的結(jié)果一致。main() float cost,percent,c; clrscr(); printf(請輸入商品的原價(單位:元):); scanf( ,&cost); printf( ); scanf( ,&percent); c=cost*percent; printf( ,c);運行結(jié)果:請輸入商品的原價(單位:元):120 請輸入折扣率:0.85 實際售價為:102.00元3、 編寫程序。已知: 1公里2里1000米編一程序,輸入公里數(shù),將其換算成里和米。要求程序的輸入輸出形式如下: 請輸入公里數(shù):2.5 (以數(shù)據(jù)2.5為例) 2.50公里 = 5.00里 = 2500.00米第五章 控制語句第一節(jié)學習指導九、 學習目標本章重點介紹了C語言中用于實現(xiàn)選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的控制語句,它們分別是:實現(xiàn)選擇結(jié)構(gòu)的if語句和switch語句、實現(xiàn)循環(huán)結(jié)構(gòu)的for語句、while語句和do-while語句,以及break語句和continue語句。這些控制語句均是學習復雜程序設(shè)計的基礎(chǔ),也是C語言學習的重點內(nèi)容之一。本章學習目標如下:1、 理解構(gòu)成復雜程序的三種基本結(jié)構(gòu)。2、 熟悉各種控制語句的作用,熟練掌握它們的語法規(guī)則及其執(zhí)行過程。3、 能在實際編程中靈活運用各種控制語句。十、 三種基本結(jié)構(gòu)與結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計方法產(chǎn)生于60年代末,并持續(xù)流行了20多年。直至90年代,在面向過程的程序設(shè)計領(lǐng)域,結(jié)構(gòu)化程序設(shè)計仍是最佳的程序設(shè)計方法。結(jié)構(gòu)化程序設(shè)計方法規(guī)定了幾種具有良好特性的“基本結(jié)構(gòu)”,用它們作為構(gòu)成程序的基本單元?!盎窘Y(jié)構(gòu)”具有以下特點:1、 只有一個入口和出口;2、 沒有永遠執(zhí)行不到的語句;3、 沒有死循環(huán)。順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是符合上述特點的基本結(jié)構(gòu),這三種基本結(jié)構(gòu)可以構(gòu)成任何復雜的程序。十一、 需要注意的幾個問題1、 關(guān)于程序的書寫格式。C語言的書寫格式非常自由,例如,一行內(nèi)可以寫多個語句,一個語句很長時也可以分寫在多行上。但是,為了提高程序的可讀性,我們在書寫源程序時應該盡可能地做到清晰、美觀,這不僅能使程序容易讀懂,更重要的是,當程序出現(xiàn)錯誤時便于查錯和改錯。程序的可讀性也是結(jié)構(gòu)化程序設(shè)計方法強調(diào)的一個要點。要使程序清晰易讀,一個較好的做法是采用縮格書寫形式。下面兩個程序的功能完全相同,其語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨界合作在科技金融服務體系中的實踐與啟示
- 網(wǎng)絡(luò)安全技術(shù)更新日志表
- 文化娛樂產(chǎn)業(yè)資源整合合同
- 【數(shù)學】現(xiàn)實中的變量課件 2024-2025學年北師大版數(shù)學七年級下冊
- 音樂與戲劇與經(jīng)典文學歷久彌新
- 風能、太陽能-未來能源產(chǎn)業(yè)的新方向
- 顧客為中心的線上線下融合營銷實踐
- 非物質(zhì)文化遺產(chǎn)在辦公空間設(shè)計中的重要性
- 項目管理中的數(shù)據(jù)分析決策支持
- 防災減災從我做起學生自我保護能力的提升
- 地理會考試卷及答案江蘇
- 54個智慧兔送你一個字期末評語
- 2025年湖南省中考數(shù)學模擬試卷(一)(原卷版+解析版)
- 浙江省寧波市鄞州區(qū)2024年數(shù)學小升初試卷(含答案)
- 上海復旦附中2025年高三聯(lián)合模擬考試英語試題試卷含解析
- 廣西地區(qū)歷年中考作文題與審題指導(2002-2024)
- 中心靜脈導管維護課件
- 第三單元《綠色的祖國》課件 人教版音樂一年級下冊
- 產(chǎn)科安全不良事件課件
- 排泄照護為老年人更換尿布紙尿褲養(yǎng)老護理員課件
- 人工智能應用 課件 第4章 生成式人工智能應用
評論
0/150
提交評論