




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C程序設(shè)計I實(shí)驗指導(dǎo)書C程序設(shè)計I實(shí)驗指導(dǎo)書信息工程學(xué)院計算機(jī)系目 錄C程序設(shè)計實(shí)驗要求2實(shí)驗一 簡單程序設(shè)計21010 測試驗證結(jié)果21011 溫度轉(zhuǎn)換21012 計算書費(fèi)31013 時間相加3實(shí)驗二 分支結(jié)構(gòu)程序設(shè)計41020 函數(shù)值計算41021 顛倒整數(shù)51022 整數(shù)排序51023 自整除數(shù)61024 選作題:Fibonacci Again6實(shí)驗三 循環(huán)結(jié)構(gòu)程序設(shè)計71030 整數(shù)的立方和71031 求累加和71032 與7無關(guān)的數(shù)81033 選作題:細(xì)菌繁殖8實(shí)驗四 數(shù)組應(yīng)用91040 楊輝三角形91041 矩陣乘法101042 學(xué)生成績管理101043 選作題:大整數(shù)乘法11實(shí)驗
2、五 函數(shù)應(yīng)用121050 各類型變量在函數(shù)調(diào)用過程中的變化121051 最大公約數(shù)和最小公倍數(shù)121052 進(jìn)制轉(zhuǎn)換131053 字符串替換131054 排序141055 選作題:數(shù)制轉(zhuǎn)換14實(shí)驗六 綜合應(yīng)用151060 同一天生日151061 忽略大小寫比較字符串161062 不吉利日期171063 統(tǒng)計字符數(shù)171064 選作題:Digital Roots18附錄19一、Visual C+調(diào)試環(huán)境的使用19二、TC環(huán)境下的使用23三、實(shí)驗報告要求27四、C程序設(shè)計常見錯誤及解決方案28C程序設(shè)計實(shí)驗要求課程實(shí)驗是C程序設(shè)計課程的一個重要的實(shí)踐環(huán)節(jié),要求每個同學(xué)按以下要求獨(dú)立完成每次實(shí)驗,每
3、次上機(jī)前必須編寫完實(shí)驗要求的所有題目,并按輸出格式寫出程序的運(yùn)行結(jié)果,上機(jī)時調(diào)試程序并驗證結(jié)果的正確性,若與運(yùn)行結(jié)果不符,則要分析原因,上機(jī)時間由課內(nèi)和課外上機(jī)兩部分,以下時間為課內(nèi)上機(jī)時間。實(shí)驗一 簡單程序設(shè)計目的及要求: 1.熟練掌握 C開發(fā)環(huán)境的窗口、菜單命令及相應(yīng)的命令,并掌握在開發(fā)環(huán)境下如何編輯、編譯、連接、運(yùn)行一個C程序,以及如何保存和修改C語言的源程序。2.通過運(yùn)行一個簡單的C程序過程,逐步了解C程序的基本結(jié)構(gòu)及特點(diǎn)。3.掌握C語言的基本數(shù)據(jù)類型,熟悉它們的使用方法及定義方式,了解各類型數(shù)據(jù)輸出時所用的格式轉(zhuǎn)換符,熟悉各種運(yùn)算符和表達(dá)式的使用特點(diǎn)。4.熟練掌握C中賦值運(yùn)算的使用。
4、1010 測試驗證結(jié)果習(xí)題4.5。1011 溫度轉(zhuǎn)換Description華氏溫度和攝氏溫度的轉(zhuǎn)換公式為:C = 5/9 * ( F 32 )其中: F為華氏溫度C攝氏溫度Input一個整數(shù)表示華氏溫度。Output輸出一行。該行包含一個浮點(diǎn)數(shù)C,表示轉(zhuǎn)換的攝氏溫度。精確到小數(shù)點(diǎn)后兩位。Sample Input93Sample Output33.891012 計算書費(fèi)Description下面是一個圖書的單價表: 計算概論 28.9 元/本 數(shù)據(jù)結(jié)構(gòu)與算法 32.7 元/本 數(shù)字邏輯 45.6元/本 C+程序設(shè)計教程 78 元/本 人工智能 35 元/本 計算機(jī)體系結(jié)構(gòu) 86.2 元/本 編譯
5、原理 27.8元/本 操作系統(tǒng) 43 元/本 計算機(jī)網(wǎng)絡(luò) 56 元/本 JAVA程序設(shè)計 65 元/本 給定每種圖書購買的數(shù)量,編程計算應(yīng)付的總費(fèi)用。Input輸入每行包含一組10個整數(shù)(大于等于0,小于等于100),分別表示購買的計算概論、數(shù)據(jù)結(jié)構(gòu)與算法、數(shù)字邏輯、C+程序設(shè)計教程、人工智能、計算機(jī)體系結(jié)構(gòu)、編譯原理、操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、JAVA程序設(shè)計的數(shù)量(以本為單位)。每兩個整數(shù)用一個空格分開。Output輸出一行。該行包含一個浮點(diǎn)數(shù)f,表示應(yīng)付的總費(fèi)用。精確到小數(shù)點(diǎn)后兩位。可用printf("%.2fn", sum)來輸出sum的值,并精確到小數(shù)點(diǎn)后兩位。Sam
6、ple Input1 5 8 10 5 1 1 2 3 4 Sample Output2140.201013 時間相加Description用整數(shù)表示時間,如:1050表示10點(diǎn)50分,2010表示20點(diǎn)10分。現(xiàn)輸入兩個時間,求兩個時間的和。例:2030 + 850 = 520 不是28801055 + 850 = 1945 不是1905Input兩行數(shù)據(jù),每行一個整數(shù)。Output輸出相加后的時間整數(shù)。Sample Input2030850Sample Output520實(shí)驗二 分支結(jié)構(gòu)程序設(shè)計目的及要求: 1.掌握C程序設(shè)計的基本語句表達(dá)方式及基本語句結(jié)構(gòu)的方法。2.掌握C語言中輸入、輸
7、出函數(shù)的基本功能。3.掌握順序和分支結(jié)構(gòu)程序設(shè)計的方法。4.能獨(dú)立編寫順序及分支結(jié)構(gòu)的C程序。1020 函數(shù)值計算Description有一個函數(shù) y = x ( x < 1 )= 2x - 1 (1 <= x < 10 )= 3x - 11 ( x >= 10 )寫一程序,輸入x值,計算y值。Input一個整數(shù)x。Output輸出函數(shù)值y。Sample Input20Sample Output491021 顛倒整數(shù)Description給定一個最多4位的正整數(shù),將其顛倒過來輸出。例如:輸入123,則輸出321。Input一個小于10000的正整數(shù)。Output顛倒后整
8、數(shù)。Sample Input1234Sample Output43211022 整數(shù)排序Description對給定的4個整數(shù)進(jìn)行排序,將由小到大的順序輸出。Input一行中有4個整數(shù),整數(shù)之間用空格分隔。Output按升序輸出,各整數(shù)之間用一個空格分隔。Sample Input25 314 18 27Sample Output18 25 27 3141023 自整除數(shù)Description對一個整數(shù)n,如果其各個位數(shù)的數(shù)字相加得到的數(shù)m能整除n,則稱n為自整除數(shù).例如21,21%(2+1)=0,所以21是自整除數(shù)。Input一個整數(shù)nOutput若n為自整除數(shù),則輸出TRUE,否則輸出FAL
9、SE。Sample Input42Sample OutputTRUE1024 選作題:Fibonacci AgainProblem DescriptionThere are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).InputInput an integer n. (n < 1,000,000).OutputPrint the word "yes" if 3 divide evenly into F(n).Print the word
10、 "no" if not.Sample Input5Sample OutputnoSample Input2Sample Outputyes實(shí)驗三 循環(huán)結(jié)構(gòu)程序設(shè)計目的及要求:1.熟練掌握循環(huán)語句中for語句、while語句和do while語句使用方法。2.掌握編寫循環(huán)結(jié)構(gòu)程序的方法。1030 整數(shù)的立方和Description給定一個正整數(shù)k(1<k<10),求1到k的立方和m。即m=1+2*2*2+k*k*k。Input輸入只有一行,該行包含一個正整數(shù)k。Output輸出只有一行,該行包含1到k的立方和。Sample Input5Sample Output
11、2251031 求累加和Description有一分?jǐn)?shù)序列:2 ,3 ,5 ,8 ,13 ,21 1 2 3 5 8 13求出該序列的前n項之和。Input輸入只有一行,該行包含一個正整數(shù)n ( n < 200 )。Output序列前n項之和(保留兩位小數(shù))。Sample Input2Sample Output3.501032 與7無關(guān)的數(shù)Description一個正整數(shù),如果它能被7整除,或者它的十進(jìn)制表示中某位數(shù)字為7,則稱其為與7相關(guān)的數(shù)。現(xiàn)求所有小于等于n(n<100)的與7無關(guān)的正整數(shù)的平方和.Input輸入為一行,正整數(shù)n,(n<100)。Output輸出小于等于
12、n的與7無關(guān)的正整數(shù)的平方和Sample Input21Sample Output23361033 選作題:細(xì)菌繁殖Description一種細(xì)菌的繁殖速度是每天成倍增長。例如:第一天有10個,第二天就變成20個,第三天變成40個,第四天變成80個,。現(xiàn)在給出第一天的日期和細(xì)菌數(shù)目,要你寫程序求出到某一天的時候,細(xì)菌的數(shù)目。Input一行有5個整數(shù),整數(shù)之間用一個空格隔開。第一個數(shù)表示第一天的月份,第二個數(shù)表示第一天的日期,第三個數(shù)表示第一天細(xì)菌的數(shù)目,第四個數(shù)表示要求的那一天的月份,第五個數(shù)表示要求的那一天的日期。已知第一天和要求的一天在同一年并且該年不是閏年,要求的一天一定在第一天之后。數(shù)
13、據(jù)保證要求的一天的細(xì)菌數(shù)目在長整數(shù)(long)范圍內(nèi)。Output對于每一組測試數(shù)據(jù),輸出一行,該行包含一個整數(shù),為要求的一天的細(xì)菌數(shù)。Sample Input2 28 10 3 2Sample Output40實(shí)驗四 數(shù)組應(yīng)用目的及要求:1.理解并掌握一維數(shù)組、二維數(shù)組的定義及引用。2.熟練掌握利用數(shù)組處理數(shù)據(jù)的方法。3.掌握字符串?dāng)?shù)組和字符串的使用方法及常用字符串函數(shù)在程序中的使用。1040 楊輝三角形Description打印出楊輝三角形的前n行。Input輸入一個正整數(shù)n ( n <20 )。Output楊輝三角形。Sample Input5Sample Output 1 1 1
14、 1 2 1 1 3 3 1 1 4 6 4 11041 矩陣乘法Description已知矩陣A(mxn)和矩陣B(nxp),求C = A X B 。Input第一行三個整數(shù)為m、n、p(m、n、p均小于10),從第二行開始為m行n列A矩陣,然后為n行p列的B矩陣。所有數(shù)據(jù)之間均由一個空格分隔。Output輸出m行p列的C矩陣,所有數(shù)據(jù)之間均由一個空格分隔。Sample Input2 3 41 0 33 4 01 0 2 12 3 4 52 1 1 5Sample Output7 3 5 1611 12 22 231042 學(xué)生成績管理Description學(xué)生信息包括:學(xué)號、姓名、數(shù)學(xué)成績
15、、英語成績、計算機(jī)成績。共有N個人(N<=10,可在程序內(nèi)部定義,如用#define N 10)的信息,要求計算每人的總成績,并按總成績由高到低的順序輸出所有人的信息。最后輸出各門課程的平均成績(保留2位小數(shù))。Input為調(diào)試方便,N和學(xué)生信息可以在程序內(nèi)部以初值的方式賦值給對應(yīng)變量。Output見下例。Sample InputSample OutputNo Name Maths English Computer Total1001 zhang 90 80 88 2581003 wang 88 85 80 2531002 li 78 80 82 240average of Maths:
16、85.33average of English:81.67average of Computer:83.331043 選作題:大整數(shù)乘法Description求兩個不超過200位的非負(fù)整數(shù)的積。Input有兩行,每行是一個不超過200位的非負(fù)整數(shù),沒有多余的前導(dǎo)0。Output一行,即相乘后的結(jié)果。結(jié)果里不能有多余的前導(dǎo)0,即如果結(jié)果是342,那么就不能輸出為0342。 Sample Input1234567890098765432100Sample Output1219326311126352690000實(shí)驗五 函數(shù)應(yīng)用目的及要求:1.理解函數(shù)的定義及函數(shù)的調(diào)用過程(函數(shù)的調(diào)用格式、調(diào)用方式
17、及被調(diào)用函數(shù)的使用說明)。2.掌握局部變量、全局變量的說明形式和引用方法。3.掌握函數(shù)的嵌套與遞歸調(diào)用的全過程。1050 各類型變量在函數(shù)調(diào)用過程中的變化Description采用單步運(yùn)行方式運(yùn)行下面程序,觀察各變量(靜態(tài)局部變量及自動變量)在函數(shù)調(diào)用過程中的變化。main()int a=3,i;for(i=0;i<3;i+)printf(“P=%dn”,p(a);int p(a)int a; static int c=1;auto int b=0;b=b+1;c=c+1;return(a+b+c);1051 最大公約數(shù)和最小公倍數(shù)Description對給定的兩組數(shù)(每組包括2個整數(shù))
18、,分別計算出兩組數(shù)的最大公約數(shù)和最小公倍數(shù)的和。如:20、12為第一組,28、7為第二組。第一組數(shù)的最大公約數(shù)為4,最小公倍數(shù)為60;第二組數(shù)的最大公約數(shù)為7,最小公倍數(shù)為28;所以兩組數(shù)的最大公約數(shù)之和為11,兩組數(shù)的最小公倍數(shù)之和為88。Input輸入包括兩行,每行為一組,每組兩個整數(shù)。Output輸出包括兩行,第一行為兩組數(shù)的最大公約數(shù)之和,第二行為兩組數(shù)的最小公倍數(shù)之和。Sample Input20 1228 7Sample Output11881052 進(jìn)制轉(zhuǎn)換Description對輸入的兩十六進(jìn)制數(shù)(兩個字符串),將其轉(zhuǎn)換成十進(jìn)制后再求和。要求十六進(jìn)制到十進(jìn)制的轉(zhuǎn)換功能由函數(shù)完成
19、。例如:輸入3a1、80,由于3a1轉(zhuǎn)換為十進(jìn)制后為929,80轉(zhuǎn)換為十進(jìn)制后為128,所以和為1057。Input輸入包括兩行,每行為一個十六進(jìn)制數(shù)。Output輸出包括一行為兩數(shù)之和的十進(jìn)制表示。Sample Input3a180Sample Output10571053 字符串替換Description將一段英文文章中字符串用給定的字符串替換。Input輸入包括多行,第一行為一段英文文章(長度不超過80)。以后每行包括2個字符串(長度不超過20),之間由空格分隔,第一個串為原串,第二個串為替換串。當(dāng)遇到0 0兩個串時表示輸入結(jié)束,并且此行不需處理。Output輸出替換后的文章。Sampl
20、e Inputhello how are yes.h Hes ou0 0Sample OutputHello How are you.1054 排序Description對輸入的10個整數(shù)進(jìn)行排序,按從小到大的順序輸出。要求排序過程由函數(shù)完成。Input輸入包括一行,共10個整數(shù),各數(shù)之間由空格分割。Output在同一行上輸出排好序的10個數(shù),各數(shù)之間由空格分割。Sample Input25 48 13 27 68 76 43 20 9 65Sample Output9 13 20 25 27 43 48 65 68 76 1055 選作題:數(shù)制轉(zhuǎn)換Description求任意兩個不同進(jìn)制非負(fù)
21、整數(shù)的轉(zhuǎn)換(2進(jìn)制16進(jìn)制),所給整數(shù)在long所能表達(dá)的范圍之內(nèi)。不同進(jìn)制的表示符號為(0,1,.,9,A,B,C,D,E,F(xiàn))。Input輸入只有一行,包含三個整數(shù)a,n,b。a表示其后的n 是a進(jìn)制整數(shù),b表示欲將a進(jìn)制整數(shù)n轉(zhuǎn)換成b進(jìn)制整數(shù)。a,b是十進(jìn)制整數(shù),2 =< a,b <= 16。Output輸出包含一行,該行有一個整數(shù)為轉(zhuǎn)換后的b進(jìn)制數(shù)。輸出時字母符號全部用大寫表示,即(0,1,.,9,A,B,C,D,E,F(xiàn))。 Sample Input15 AAB3 7Sample Output210306Hint用字符串表示不同進(jìn)制的整數(shù)。實(shí)驗六 綜合應(yīng)用目的及要求:1.掌
22、握程序的基本方法和技巧,能夠獨(dú)立完成較復(fù)雜程序的設(shè)計。2.掌握程序的調(diào)試方法,熟悉各種類型錯誤的改正方法。1060 同一天生日Description在一個有200人的大班級中,存在兩個人生日相同的概率非常大,現(xiàn)給出每個學(xué)生的學(xué)號,出生月日。試找出所有生日相同的學(xué)生。Input第一行為整數(shù)n,表示有n個學(xué)生,n<=200。 此后每行包含一個字符串和兩個整數(shù),分別表示學(xué)生的學(xué)號(字符串長度為11位)和出生月(1<=m<=12)日(1<=d<=31)。學(xué)號、月、日之間用一個空格分隔。Output對每組生日相同的學(xué)生,輸出一行,其中前兩個數(shù)字表示月和日,后面跟著所有在當(dāng)天
23、出生的學(xué)生的學(xué)號,數(shù)字、學(xué)號之間都用一個空格分隔。對所有的輸出,要求按日期從前到后的順序輸出。對生日相同的學(xué)號,按輸入的順序輸出。Sample Input607101020105 3 1507101020115 4 507101020118 3 1507101020108 4 507101020111 4 507101020121 8 10Sample Output3 15 07101020105 071010201184 5 07101020115 07101020108 071010201118 10 071010201211061 忽略大小寫比較字符串Description一般我們用st
24、rcmp可比較兩個字符串的大小,比較方法為對兩個字符串從前往后逐個字符相比較(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到'0'為止。如果全部字符都相同,則認(rèn)為相同;如果出現(xiàn)不相同的字符,則以第一個不相同的字符的比較結(jié)果為準(zhǔn)。但在有些時候,我們比較字符串的大小時,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小寫時是相等的。請寫一個程序,實(shí)現(xiàn)對兩個字符串進(jìn)行忽略字母大小寫的大小比較。Input輸入為兩行,每行一個字符串,共兩個字符串。(請用gets錄入每行字符串)(每個字符串長度都小于80)Output如果第一
25、個字符串比第二個字符串小,輸出一個字符"<" 如果第一個字符串比第二個字符串大,輸出一個字符">" 如果兩個字符串相等,輸出一個字符"=" Sample InputHellohelloSample Output=1062 不吉利日期Description在國外,每月的13號和每周的星期5都是不吉利的。特別是當(dāng)13號那天恰好是星期5時,更不吉利。已知某年的一月一日是星期w,并且這一年一定不是閏年,求出這一年所有13號那天是星期5的月份,按從小到大的順序輸出月份數(shù)字。(w=1.7)Input輸入有一行,即一月一日星期幾(w)。
26、(1<=w<=7)Output輸出有一到多行,每行一個月份,表示該月的13日是星期五。 Sample Input7Sample Output1101063 統(tǒng)計字符數(shù)Description判斷一個由a-z這26個字符組成的字符串中哪個字符出現(xiàn)的次數(shù)最多。Input第1行是測試數(shù)據(jù)的組數(shù)n,每組測試數(shù)據(jù)占1行,是一個由a-z這26個字符組成的字符串,每行數(shù)據(jù)不超過1000個字符且非空。Output輸出n行,每行輸出對應(yīng)一個輸入。一行輸出包括出現(xiàn)次數(shù)最多的字符和該字符出現(xiàn)的次數(shù),中間是一個空格。 如果有多個字符出現(xiàn)的次數(shù)相同且最多,那么輸出ascii碼最小的那一個字符。Sample I
27、nput2abbcccadfadffasdfSample Outputc 3f 41064 選作題:Digital Roots DescriptionThe digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those dig
28、its are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding
29、the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.。InputThe input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer v
30、alue of zero.OutputFor each integer in the input, output its digital root on a separate line of the output.Sample Input24390Sample Output63附錄一、Visual C+調(diào)試環(huán)境的使用1、進(jìn)入C+工作環(huán)境l 建立個人子目錄先在可用硬盤上建立一個工作目錄,如D:workspace。然后按以下步驟進(jìn)行操作;2、啟動Visual C+ 6.0雙擊Windows桌面上的Visual C+ 6.0圖標(biāo)或單擊Windows桌面上“開始”按鈕,在“程序”中選擇“Visual
31、C+ 6.0”運(yùn)行即可。 3、編譯、運(yùn)行C+ 源程序1) 創(chuàng)建一個新的工程文件(Project file)啟動Visual C+6.0 編譯系統(tǒng)后,出現(xiàn)“Microsoft Developer Studio”窗口,該窗口菜單條有個菜單項(如圖1所示):n 單擊“File”菜單,在其下拉菜單中選擇“New”,屏幕上出現(xiàn)一個“New”對話框,在該對話框中選擇“Projects”標(biāo)簽,出現(xiàn)“Project”對話框。n 選擇工程類型為“Win32 Console Application”,這時,在右邊的Platforms選框中就會出現(xiàn)Win 32。n 輸入工程名字。在“Project nam
32、e”選框中輸入所指定的工程文件名字,例如: first。n 輸入路徑名。在“Location”選框中,輸入你將要把所建立的工程文件放人何處的路徑名。例如,要將工程文件放在D 盤下已建立好的子目錄D:workspace子目錄中,所以該選取路徑為:D:worksplacefirst。選擇“OK”按鈕,該工程文件已建立。圖1 創(chuàng)建新的工程文件2) 建立源文件再次選擇“File”菜單中的“New”選項,在四個標(biāo)簽中選擇“File”標(biāo)簽,在其對話框選項中,選擇“C+ Source File”,并在右邊的Add project的選擇框內(nèi)打勾,激活其下面的選項,然后在File框內(nèi)輸入源文件名(如1st),單
33、擊“OK”按鈕,出現(xiàn)編輯屏幕,即可編寫程序(如圖2和圖3所示)。圖2 建立源文件圖3 編輯源文件3) 編譯連接和運(yùn)行源程序程序編好后要進(jìn)行編譯連接和運(yùn)行,步驟如下:n 選擇“Build”菜單,單擊下拉菜單中的“Compile 1st.cpp”,這時系統(tǒng)開始對當(dāng)前的源程序進(jìn)行編譯,在編譯過程中,將所發(fā)現(xiàn)的錯誤顯示在屏幕下方的“Build”窗口中。根據(jù)錯誤提示,修改程序后再重新編譯,如還有錯誤,再繼續(xù)修改、編譯,直到?jīng)]有錯誤為止。n 編譯無誤后進(jìn)行連接,這時選擇“Build”菜單中的“Build 1st.exe”選項。同樣,對出現(xiàn)的錯誤要進(jìn)行更改,直到編譯連接無錯為止。這時,在“Build”窗口中
34、會顯示如下信息:1st.obj- 0 error(s), 0 warning(s),說明編譯連接成功,并生成以源文件名為名字的可執(zhí)行文件(1st.exe)。n 運(yùn)行程序,選擇“Build”菜單中的“! Execute 1st.exe”選項。這時,會出現(xiàn)一個“MS-DOS”窗口,輸出結(jié)果顯示在該窗口中(如圖4和圖5所示)。n 運(yùn)行結(jié)束后,可以回到“File”菜單,點(diǎn)擊“Close Workspace”選項,關(guān)閉當(dāng)前文件窗口。若要編輯新的源程序,可以再次打開“File”菜單,重新建立工程文件,步驟如上所述; 也可以點(diǎn)擊“File”菜單中的“Open Workspace”選項,打開一個已經(jīng)存在的源文
35、件。圖4 編輯運(yùn)行源程序圖5 顯示輸出結(jié)果二、TC環(huán)境下的使用 如上圖是用戶進(jìn)入TC后的主菜單界面,下面是常用的命令及功能鍵: File菜單File的下拉菜單中有9個子命令,其功能是完成文件的創(chuàng)建、存、取、退出等。Load :該命令為裝載命令,其功能是將已存盤的文件調(diào)入到當(dāng)前所編輯環(huán)境中。Pick :選擇最近已編輯過的源程序文件。New :創(chuàng)建一個新的文件。Save :保存當(dāng)前所編輯的文件。Write to :將當(dāng)前的文件以另外一個文件名存盤。OS shell :從Turbo C切換到命令提示符窗口狀態(tài)下,可用EXIT命令返回。Quit :退出Turbo C,回到DOS提示符下。常用的編輯鍵(
36、在Edit狀態(tài)下):<Del>:刪除光標(biāo)所在的字符。<Ins>:插入、改寫轉(zhuǎn)換鍵。<Home>:光標(biāo)到行首。<End>:光標(biāo)到行尾。<PgUp>:向上翻頁<PgDn>:向下翻頁<Ctrl>+N:插入一行<Ctrl>+Y:刪除光標(biāo)所在行<Ctrl>+KB:定義塊首<Ctrl>+KK:定義塊尾<Ctrl>+KV:塊移動<Ctrl>+KC:塊復(fù)制<Ctrl>+KY:塊刪除<Ctrl>+KH:塊取消<Ctrl>+<Br
37、eak>或<Ctrl>+C:中斷程序的運(yùn)行常用熱鍵的使用用<Alt>加上Turbo C菜單欄上所對應(yīng)的第一個大寫字母,方可進(jìn)入對應(yīng)菜單<Alt>+F: 進(jìn)入文件菜單、 <Alt>+E:進(jìn)入編輯菜單、 <Alt>+R:進(jìn)入運(yùn)行菜單<Alt>+C:進(jìn)入編譯菜單等。<Ctrl>+F9:運(yùn)行程序(對應(yīng)RUN菜單中的“Run”命令)<Alt>+F5:從TC屏幕切換到用戶屏幕(對應(yīng)RUN菜單中的“User screen”命令)F1:顯示當(dāng)前位置的幫助信息。F2:將當(dāng)前所編輯的文件存盤(對應(yīng)File菜單中的
38、“save”命令)F3:裝入一個文件(對應(yīng)File菜單中的“l(fā)oad”命令)F4:程序運(yùn)行到光標(biāo)所在行。(對應(yīng)RUN菜單中的“Go to cursor”命令)二、程序調(diào)試步驟1.啟動TC:在Windows環(huán)境下進(jìn)入TC,屏幕將出現(xiàn)如下界面:圖1 TC界面2.編輯源程序:進(jìn)入TC菜單界面 在file主菜單中選擇“new”按回車后即可 輸入C程序,缺省文件名為:NONAME.C (圖2所示)。(此步驟用于編輯一個新文件)圖2*用戶可對文件名加以修改。3.保存源文件在源程序輸入完成后,最好先保存源程序,以免在編譯運(yùn)行時,出錯而造成程序丟失。程序編輯完后,可按“F2”鍵進(jìn)行保存或選擇“Fil
39、e”菜單中的“save”進(jìn)行保存(圖3)。圖3例如文件名為:test1.c。保存時注意文件保存的路徑(A,C,D,E盤)以免在修改程序時,知道C程序所存放的位置。4.編譯運(yùn)行源程序可直接使用“Run”菜單中的“run”命令或?qū)?yīng)的鍵命令“Ctrl+F9”,系統(tǒng)自動執(zhí)行對C程序的編譯、運(yùn)行,若程序編譯成功,則產(chǎn)生目標(biāo)文件test1.obj和可執(zhí)行文件test1.exe,當(dāng)編譯時,程序出現(xiàn)錯誤,屏幕上會顯示相應(yīng)的錯誤信息及錯誤原因,這時,用戶可對程序加以修改,再進(jìn)行編譯運(yùn)行,得到正確的輸出結(jié)果。(圖4所示)圖45.查看結(jié)果可選擇“Run”菜單中的“user screen”命令或?qū)?yīng)的鍵命令“ALT
40、+F5”。如圖四所示(黃色標(biāo)記)6.如何修改源程序當(dāng)源程序出現(xiàn)錯誤時,需要修改,若程序已經(jīng)存盤,這時可使用TC菜單“File”中的“l(fā)oad”命令,將需要修改的文件調(diào)入到當(dāng)前屏幕上,若程序在當(dāng)前屏幕上,則可直接修改,但修改后的程序必須重新存盤和編譯運(yùn)行。(圖5所示)圖5三、實(shí)驗報告要求實(shí)驗報告按以下格式書寫,不用抄題,其中: 解題思路:解決問題的基本思想、數(shù)據(jù)組織方法及采用的算法描述。 調(diào)試分析:程序調(diào)試過程中遇到的主要問題,以及解決方法,收獲等。 測試結(jié)果:對于可輸入多組測試數(shù)據(jù)的程序要至少給出三組測試數(shù)據(jù),以及對應(yīng)的程序運(yùn)行結(jié)果。例如:“C語言程序設(shè)計I”實(shí)驗報告實(shí)驗一 簡單程序設(shè)計班級:
41、 學(xué)號: 姓名: 目的及要求: 1.熟練掌握2.3.1010 測試驗證結(jié)果1)解題思路2) 流程圖3)源程序代碼4)調(diào)試分析5)測試結(jié)果1011 溫度轉(zhuǎn)換1)解題思路2) 流程圖3)源程序代碼4)調(diào)試分析5)測試結(jié)果1012 計算書費(fèi)1)解題思路2) 流程圖3)源程序代碼4)調(diào)試分析5)測試結(jié)果1013 時間相加1)解題思路2) 流程圖3)源程序代碼4)調(diào)試分析5)測試結(jié)果四、C程序設(shè)計常見錯誤及解決方案1.輸入/輸出控制與編程初步錯誤原因示例出錯現(xiàn)象解決方案變量未定義就使用int a=3,b=4;temp=a; a=b; b=temp;系統(tǒng)報錯:'temp' : undecl
42、ared identifier (temp是沒有聲明的標(biāo)識符)增加變量temp的定義,再使用該變量變量名拼寫錯誤int temp;tep=2;系統(tǒng)報錯:'tep' : undeclared identifier查看對應(yīng)的變量及其定義,保證前后一致未區(qū)分大小寫字母int temp;Temp=2;系統(tǒng)報錯:'Temp' : undeclared identifier查看對應(yīng)的變量及其定義,區(qū)別大小寫字母變量定義位置錯誤int x=sizeof(int);printf("%d",x);int y=0;系統(tǒng)報錯:missing ''
43、before 'type'將變量集中在語句塊開始處定義,變量定義不能放在可執(zhí)行語句中間使用了未賦值的變量,其值不可預(yù)測int a;printf("%d",a);系統(tǒng)告警:local variable 'a' used without having been initialized養(yǎng)成對變量初始化的習(xí)慣,保證訪問前有確定值不預(yù)先判斷除數(shù)是否為0int devide(int a,int b) return a/b; 系統(tǒng)無報錯或告警,但是當(dāng)調(diào)用時第二實(shí)參為0時將出現(xiàn)意外終止對話框在函數(shù)定義時增加對除數(shù)為0的考慮并作處理,防止運(yùn)行時出錯未考慮數(shù)值溢
44、出的可能int a=10000;a=a*a*a;printf("%d",a);系統(tǒng)無報錯或告警,但是輸出結(jié)果不正確預(yù)先估計運(yùn)算結(jié)果的可能范圍,采用取值范圍更大的類型,如:double不用sizeof獲得類型或變量的字長int *p;p=(int *)malloc(4);系統(tǒng)無報錯或告警,但是在平臺移植時可能出現(xiàn)問題改為:p=(int*)malloc(sizeof(int);語句之后丟失分號int a,ba=3;b=4;系統(tǒng)報錯:missing '' before identifier 'a'找到出錯位置,添加分號忘記給格式控制串加雙引號int
45、 x=sizeof(int);printf(%d,x);系統(tǒng)報若干個錯:missing ')' before '%'等根據(jù)編譯器所指錯誤位置,將格式串兩邊加” ”庫函數(shù)名拼寫錯誤,大小寫字母有區(qū)別int x=sizeof(int);Printf("%d",x);'Printf' undefined; assuming extern returning int根據(jù)編譯器所指錯誤位置,檢查函數(shù)名并修改未給scanf中的變量加取地址運(yùn)算符&int y;scanf("%d",y);系統(tǒng)告警:local va
46、riable 'y' used without having been initialized根據(jù)編譯器所指告警位置,檢查并修改,增加取地址符&在printf中的輸出變量前加上了取地址符&int y;scanf("%d",&y);printf("%d",&y);系統(tǒng)無報錯或告警,但是輸出結(jié)果不正確先用調(diào)試器跟蹤觀察變量的當(dāng)前值,如果變量值正確而輸出結(jié)果不對,則檢查printf中的各個參數(shù),如果輸入的數(shù)據(jù)與變量所獲得的值不一致,則檢查scanf中的各個參數(shù)漏寫了printf中欲輸出的表達(dá)式scanf(&quo
47、t;%d",&y);printf("%d");系統(tǒng)無報錯或告警,但是輸出結(jié)果不正確漏寫了printf中與欲輸出的表達(dá)式對應(yīng)的格式控制串int y;scanf("%d",&y);printf("%d",y,y+3);系統(tǒng)無報錯或告警,但是缺少期望的輸出結(jié)果輸入/輸出格式控制符與數(shù)據(jù)類型不一致int a=12,b; float f=12.5;scanf("%c",&a);printf("a=%f",a);printf("f=%d",f);系統(tǒng)無報
48、錯或告警,但是輸出結(jié)果不正確scanf的格式控制串中含有n等轉(zhuǎn)義字符int y;scanf("%dn",&y);系統(tǒng)無報錯或告警,但是輸入數(shù)據(jù)時無法及時結(jié)束從格式控制串中去掉n轉(zhuǎn)義字符讀入實(shí)型數(shù)據(jù)時,在scanf的格式控制串中規(guī)定輸入精度float x;scanf("%5.2f",&x);printf("%f",x);系統(tǒng)無報錯或告警,但是輸出結(jié)果并不是輸入時的數(shù)據(jù)從格式控制串中去掉5.2精度控制,輸入實(shí)型數(shù)不能控制精度在格式控制字符串之后丟失逗號printf("%d"n);系統(tǒng)報錯:missing
49、 ')' before identifier 'n'不是在n之前加)號而應(yīng)該在n之前加,號在中文輸入方式下輸入代碼或出現(xiàn)全角字符void main() int a=2;系統(tǒng)報錯:unknown character '0xa3'找到出錯位置,改用英文方式輸入。中文或全角字符只在注釋或串常量出現(xiàn)2.流程控制相關(guān)錯誤原因示例出錯現(xiàn)象解決方案混淆“&,|”與“&&,|”int x,y;scanf("%d%d",&x,&y);if (x&y) printf("x!=0 and y
50、!=0");else printf("x=0 or y=0");系統(tǒng)無報錯或告警,但是當(dāng)輸入2和5時,輸出結(jié)果卻是x=0 or y=0用調(diào)試器跟蹤觀察表達(dá)式x&&y的結(jié)果,以及與流程走向的矛盾,從而發(fā)現(xiàn)問題所在,將&改為&&即可解決。將“=”誤寫成“=”int x=3,y=4;if (x=y) printf("x= y");else printf("x!=y");系統(tǒng)無報錯或告警,但是輸出結(jié)果不正確,輸出結(jié)果永遠(yuǎn)都是x= y用調(diào)試器跟蹤觀察變量的當(dāng)前值,注意執(zhí)行if語句的執(zhí)行,從而找出
51、邏輯錯用“=”比較兩個浮點(diǎn)數(shù)float x;scanf("%f",&x);if(x=123.456) printf("equal");else printf("unequal");系統(tǒng)無報錯或告警,但是輸出結(jié)果永遠(yuǎn)都是unequal,即使輸入的x值為123.456將變量類型改為double型以提高精度;更好的方法是以絕對值之差在某一范圍為相等。如:if (fabs(x-123.456)<1e-5)單分支if條件表達(dá)式圓括號外加了分號int x,y;scanf("%d%d",&x,&y)
52、;if (x>y); x-=y;printf("%d",x);系統(tǒng)無報錯或告警,但是無論輸入的值大小關(guān)系如何,都執(zhí)行x-=y輸出改變后的x 用調(diào)試器跟蹤觀察程序的執(zhí)行過程,注意觀察輸入x<y這種情況下的執(zhí)行語句,從而找出錯誤位置雙分支if條件表達(dá)式圓括號外加了分號int x,y;scanf("%d%d",&x,&y);if (x>y); x-=y;else y-=x;系統(tǒng)報錯:illegal else without matching if根據(jù)出錯位置和錯誤信息提示,刪除多余的分號case分支未用break結(jié)束int x
53、,y=0;scanf("%d",&x);switch (x) case 1: y=1;case 2: y=2;default: y=100; printf("y=%dn",y);系統(tǒng)無報錯或告警,但是無論輸入的x是多少,輸出結(jié)果永遠(yuǎn)都是y=100用調(diào)試器跟蹤觀察程序的執(zhí)行過程,發(fā)現(xiàn)對y做了多次賦值,及時在每個分支最后加上break結(jié)束。switch-case語句未提供default分支scanf("%d",&x);switch (x) case 1: y=1;break;case 2: y=2;break; print
54、f("y=%dn",y);系統(tǒng)無報錯或告警,但是當(dāng)輸入的x不是1或2時,輸出結(jié)果是y= -858993460(一個隨機(jī)數(shù))用調(diào)試器跟蹤觀察程序的執(zhí)行過程,當(dāng)輸入的x不是1或2時直接執(zhí)行了輸出語句而未對y作任何處理。加上default分支。while語句條件表達(dá)式圓括號外加了分號int x=1,y=0;while (x<=5);y+=x+;printf("%d",y);系統(tǒng)無報錯或告警,但卻是死循環(huán)用調(diào)試器跟蹤觀察程序的執(zhí)行過程,發(fā)現(xiàn)陷入死循環(huán)而無法執(zhí)行到語句y+=x+;去掉多余分號while循環(huán)體內(nèi)缺少改變循環(huán)控制變量值的語句導(dǎo)致死循環(huán)int x=
55、1,y=0;while (x<=5)y+=x;printf("%d",y);系統(tǒng)無報錯或告警,但卻是死循環(huán)用調(diào)試器跟蹤觀察程序的執(zhí)行過程,觀察變量值的變化情況,發(fā)現(xiàn)x值一直不變,增加對x的修改for語句圓括號內(nèi)的3個表達(dá)式未用分號分隔int x=1,y=0;for (x=1, x<=5, x+)y+=x;系統(tǒng)報錯:missing '' before ')'根據(jù)出錯位置和錯誤信息提示,找到for語句,將逗號改為分號for語句后誤加分號int i,sum=0;for (i=1;i<=5;i+) ;sum+=i;printf("sum=%dn",sum);系統(tǒng)無報錯或告警,但是輸出結(jié)果是sum=6而不是sum=15用調(diào)試器跟蹤觀察程序的執(zhí)行過程,找到未重復(fù)執(zhí)行sum+=i;的原因,去掉for后的分號累加器未事先清零int x=1,y;for (x=1;x<=5;x+)y+=x;printf("%d",y);系統(tǒng)無報錯或告警,但是輸出結(jié)果錯誤用調(diào)試器跟蹤觀察變量y的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 31379.1-2025平板顯示器偏光片測試方法第1部分:理化性能
- 1《大堰河我的保姆》公開課一等獎創(chuàng)新教學(xué)設(shè)計統(tǒng)編版高中語文選擇性必修下冊
- 識別項目成功的關(guān)鍵性能指標(biāo)試題及答案
- 2025銀行從業(yè)資格證考試必考試題與答案
- 2025年銀行從業(yè)資格證復(fù)習(xí)要點(diǎn)試題及答案
- 信息技術(shù)部門數(shù)字化轉(zhuǎn)型計劃
- 制定合理的工作時間表計劃
- 全景式2025年注冊會計師考試視角試題及答案
- 情感教育在幼兒園課程中的落實(shí)計劃
- 課題申報立項書語文
- 光伏發(fā)電設(shè)備檢修維護(hù)工(一級)崗位能力認(rèn)證考試題庫(含答案)
- 2024年網(wǎng)絡(luò)安全知識競賽考試題庫500題(含答案)
- 精神分裂癥合并糖尿病患者護(hù)理查房課件
- OPPO手機(jī)在泰國營銷現(xiàn)狀及優(yōu)化策略研究
- DB45-T 2840-2024 陸川豬疫病防治技術(shù)規(guī)程
- DL∕T 843-2010 大型汽輪發(fā)電機(jī)勵磁系統(tǒng)技術(shù)條件
- 《水泥窯爐富氧(全氧)燃燒技術(shù)規(guī)范》
- 第37章 主要病原性真菌課件
- 2024年福建省高中生物學(xué)業(yè)水平考試生物試卷試題(含答案詳解)
- 工程施工材料采購方案工程材料采購方案
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
評論
0/150
提交評論