《C語言程序設(shè)計基礎(chǔ)》習(xí)題集(含答案)_第1頁
《C語言程序設(shè)計基礎(chǔ)》習(xí)題集(含答案)_第2頁
《C語言程序設(shè)計基礎(chǔ)》習(xí)題集(含答案)_第3頁
《C語言程序設(shè)計基礎(chǔ)》習(xí)題集(含答案)_第4頁
《C語言程序設(shè)計基礎(chǔ)》習(xí)題集(含答案)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章 C 語言概述1.1、 選擇題(1)一個 C 語言程序是由()組成。A. 一個主程序及若干個子程序B. 一個主程序C. 一個主函數(shù)及若干個子函數(shù)D. 一個主函數(shù)(2) 一個 C 語言程序總是從()開始執(zhí)行。A. 主過程B. 主函數(shù)C. 子程序D. 主程序(3) main 函數(shù)在源程序中的位置()。A. 必須在最開始B. 必須在子函數(shù)的后面C. 可以任意D. 必須在最后(4) 一個 C 程序的執(zhí)行是從()。A. 本程序的第一個函數(shù)開始,到最后一個函數(shù)結(jié)束B. 本程序的main 函數(shù)開始,到最后一個函數(shù)結(jié)束C. 本程序的main 函數(shù)開始,通常也在main 函數(shù)結(jié)束D. 本程序的第一個函數(shù)開

2、始,到main 函數(shù)結(jié)束(5) 以下敘述不正確的是()。A. 一個C 程序可由一個或多個函數(shù)組成B. 一個C 程序必須包含一個main函數(shù)C. 在C程序中,注釋只能位于一條語句的最后面D. C 程序的基本組成單位是函數(shù)1.2 、編程題( 1 )參照本章例題,編程輸出如下信息:*Very good!*( 2)編寫一個C 程序,輸出以下信息:*Turbo C * * * * *1.3 請根據(jù)自己的認(rèn)識,寫出C 語言的主要特點。1.4 簡述 C 程序主要由哪些部分構(gòu)成?1.5 用戶編寫的C 程序上機運行要經(jīng)過哪些步驟?第二章 基本數(shù)據(jù)類型和表達(dá)式2.1 單項選擇題(1) 以下不能用作變量名的是()A

3、) _26B)caseC)scanfD)Double(2) 以下合法的八進(jìn)制數(shù)是()A) 0135B) 068C) 013.45 D)o7(3) 若變量已正確定義,以下非法的表達(dá)式是()A)a/=b+c B)a%(4.0)C)a=1/2*(x=y=20,x*3) D)a=b=c(4)設(shè)x為int類型,其值為11,則表達(dá)式:(x+*1/3)的值是()A)3B)4C)11D)12(5)若題中各變量已正確定義并賦值,下面符合C語法的表達(dá)式是()A) a%=7.6;B)a+,a=7+b+cC)int(12.3)%4D)a=c+b=a+7(6)設(shè)k和x均為int型變量,且k=7,x=12 ,則能使值為3

4、的表達(dá)式是()A)x%=k%=5B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)- (k%=5)(7)能正確表示數(shù)學(xué)公式Hsin(x)|,的C語言表達(dá)式是()A)sqrt(abs(sin(x* 兀/180)B)sqrt(abs(sin(x*3.14/180)C)sqrt(sin(x)D)sqrt (fabs (sin(x*3.14/180)x(8)以下變量x、v、z均為double型且已正確賦值,不能正確表示代數(shù)式y(tǒng)父z的C語言表達(dá)式是()A)x/y*z B)x*(1/(y*z)C)x/y*1/zD)x/y/z(9)以下敘述中正確的是()A) A) C程序中,賦值運算符的優(yōu)先級最低

5、。B) B)若a是浮點型變量,C程序中允許進(jìn)行以下賦值:a=10,因此,浮點型變量中允許存放整型數(shù)。C) C)若a和b類型相同,在執(zhí)行了賦值a=b后b中的值將放入a中,b中的值將丟失。D) D)在C程序中,除號運算符“ /”兩邊的類型相同時才能進(jìn)行相除運算。(10)有以下程序:#include <stdio.h> void main(void)int k=2,i=2,m;m=(k+=j*=k+); printf(" %d , %dn ", m , j);執(zhí)行后的輸出結(jié)果是()A) 8, 6B) 8, 3 C) 6, 4 D) 7, 4(11)有以下程序:#inc

6、lude <stdio.h> void main(void)unsigned a=32768;int b;b=a;printf("b=%dn" , b);程序執(zhí)行后的輸出結(jié)果是()A) b=32768B)b=32767C)b=-32768D)b=-1(12)有以下程序段:int a=1234;printf("%2dn",a);其輸出結(jié)果是()A) 12B) 34 C) 1234D)輸出寬度不足,無結(jié)果(13)已有定義和語句:double a,b,c;scanf(" %lf%lf%lf ",&a,&b,&am

7、p;c);要求給a、 b、 c 分別輸入10.0、 20.0、 30.0,不正確的輸入形式是()A)10.0/B)10.0/C)10 20/D)10.0,20.0,30.0 /20.0/2030/30.0/30.0/(14)已有定義語句:int x=3,y=4,z=5; ,則值為0 的表達(dá)式是()A)x>y+B)x<=+yC)x!=y+z>y-zD)y%z>=y-z(15)x 為奇數(shù)時值為“真”, x 為偶數(shù)時值為“假”的表達(dá)式是()A) !(x%2=1)B)x%2=0C)x%2D)!(x%2)(16)已有定義語句:int m=0,n=1; 執(zhí)行表達(dá)式(m=5<3

8、) &&(n=7>9) 后, n 的值是()A)1B)0C)3D)4(17)以下選項中非法的字符常量是A) ''12' B) ''0xff 'C) ', ' D)''(18)表達(dá)式9'的值是()A)整數(shù)6 B)字符6 C)表達(dá)式不合法,無確定值D)字符9(19)以下不能將變量n 清零的表達(dá)式是()A) n=n&n B)n=n&0 C)n=nAn D)n=n|n(20)putchar 函數(shù)可以向屏幕輸出一個()A)整型變量值B)浮點型變量值C)字符串 D)字符或字符變量值

9、(21).若int a , b , c;則為它們輸入數(shù)據(jù)的正確輸入語句是()A) read(a , b , c);B)scanf(" %d %d %d " ,a , b , c);C)scanf(" %D%D%D ",&a , &b , &c);D)scanf(" &d &d &d ",&a , &b , &c);(22)執(zhí)行語句:printf(" | %10.5f | n",12345.678); 的輸出是()A) |2345.67800|B

10、)|12345.6780|C)|12345.67800|D)|12345.678|(23)若有以下程序段,其輸出結(jié)果是()int a=0,b=0,c=0;c = (a - = a - 5) , (a = b , b + 3 );printf(" %d , %d , %dn ",a , b , c);A)3,0, -10B)0,0,5 C) -10,3, -10D)3,0,3(24)若a為int類型,且a=125,執(zhí)行下列語句后的輸出是()printf(" %d , %o , %x n ",a,a+1,a+2)A)125,175,7DB)125,176,7

11、FC)125,176,7DD)125,175,2F2.2 設(shè)圓半徑為5,編寫程序,求圓的周長和面積。2.3 設(shè) a = 3 , b = 4 , c = 5 , d = 1.2 , e = 2.23 , f = - 43.56 ,編寫程序,使程序輸出為:d = 1.22.23f = -43.5600* *(其中表示空格)2.4. 執(zhí)行下列程序,按指定方式輸入(其中表示空格),能否得到指定的輸出結(jié)果?若不能, 請修改程序,使之能得到指定的輸出結(jié)果。輸入:234/輸出:a = 2 , b = 3 , c = 4x = 6 , y = 24程序:#include <stdio.h>void

12、 main(void)int a , b, c ,x ,y;scanf(" %d , %d , %d ", a , b , c);x = a*b ;y=x*c;printf(" %d %d %d ",a , b , c);printf(" x=%fn ",x , " y=%fn" , y);第三章控制流3.1 輸入一個華氏溫度,要求輸出攝氏溫度。公式為:C=(F-32)*5/9要求:輸出要有文字說明,保留2位小數(shù)。3.2 有一函數(shù):x(x<1)y= 2 2x-1(1<x<10)3 3x-11(x&

13、gt;10)寫一程序,輸入x值,輸出y值。3.3 輸入4個整數(shù),要求按由小到大的次序輸出。3.4 求二次方程 ax2+bx+c=0的根。3.5 運輸公司對用戶計算運費。公司規(guī)定,路程越遠(yuǎn),每公里運費越低。標(biāo)準(zhǔn)如下:Sv 250km沒有折扣250W Sv 5002%折扣500<3< 10005 折扣10000 w Sv 20008% 折扣2000 w Sv 300010% 折扣3000WS15% 折扣設(shè)每公里每噸貨物的基本運費為P,貨物重為 W,距離為S,折扣為d,分別用if結(jié)構(gòu)和switch結(jié)構(gòu)編一程序求總運費F,計算公式為:F=P*W*s*(1-d)3.6 用兀/4弋1-1/3+

14、1/5-1/7+1/9-公式求兀的近似值,直到最后一項的絕對值小于10一6為止。3.7 有一個數(shù)列:1/2,2/3,3/5,5/8,8/13,13/21,試編程序,求數(shù)列的前100項之和。3.8 輸入兩個正數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。3.9 打印所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個 3 位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如,153 是一個水仙花數(shù),因為153= 13+ 53+43o3.10 猴子吃桃就問題。猴子第一天摘下若干桃子,當(dāng)即吃了一半又加一個,第二天早上又將剩下的桃子吃掉一半又加一個。以后每天早上都吃了前一天剩下的一半加一個。到第10 天早上時想吃,就只剩下一個桃

15、子了。求第一天共摘多少桃子。3.11 一個球從100m 高度自由落下,每次落地后反跳回原來高度的一半,再落下。求它在第10次落地時,共經(jīng)過多少m?第10次反彈多高?3.12 用牛頓迭代法求方程2x3-4x2+3x-6=0 在 1.5 附近的根。3.13 用二分法求方程2x3-4x2+3x-6=0 在(10,10)之間的根。3.14 打印以下圖案。*3.15 兩個乒乓球隊進(jìn)行比賽,各隊出三人,每人與對方隊的一人進(jìn)行一場比賽,甲隊出A、 B、C 三人,乙隊出X、 Y、 Z 三人。編程找出所有可能的對陣情況。抽簽之后,有人向隊員打聽對陣情況 ,A 說他不和X 比 ,C 說他不和X、 Z 比 ,編程找

16、出三對手名單。第四章 算法4.1 什么是算法?試從日常生活中找個例子,描述它們的算法。4.2 結(jié)構(gòu)化程序設(shè)計的基本思想是什么?4.3 用流程圖表示求解以下問題的算法:(1) ( 1)依次將 10個數(shù)輸入,找出其中的最小數(shù)。(2) (2)有3 個數(shù),要求按由大到小的順序打印出來。(3) (3)判斷一個數(shù)n 能否同時被3 和 5 整除。(4) (4)將100到 200 之間的素數(shù)打印出來。(5) (5)求二次方程ax2+bx+c=0的根4.4 軟件測試的目的是什么?4.5 什么是軟件測試的白盒法和黑盒法?第五章 數(shù)組和指針5.1 輸入 ai a2、 a10,計算 bi=(a2i-i+a2i)/2i

17、=1、2、105.2 編程將一個數(shù)組中的數(shù)據(jù)按逆序重新存放。例如,原來順序是1、 2、 3、 4、 5,現(xiàn)在改為 5、 4、 3、 2、 1。5.3 已由一個排好序的整數(shù)數(shù)組,輸入一個數(shù)據(jù),要求按原來排序的順序?qū)⑦@個整數(shù)插入到數(shù)組中去。5.4 編程將兩個從小到到排好序的一維數(shù)組歸并成一個有序的一維數(shù)組。5.5 n個人圍成一圈,依次編號從1到no從編號為1的人開始從1到3報數(shù),凡報數(shù)是 3的人退出圈子,編程輸出依次出列的人的編號。5.6 編程將一個整數(shù)形式的數(shù)字字符串(可能含符號位)轉(zhuǎn)換成一個整數(shù)輸出。5.7 編程把一個輸入的十進(jìn)制整數(shù)轉(zhuǎn)換為任意進(jìn)制的數(shù)。5.8 -編程檢查輸入的字符串是否滿足以

18、下兩個條件:( 1)字符串中左括號“(”的個數(shù)與右括號“) ”的個數(shù)相等(2)從首字符開始起順序查找,任何時候右括號“)”的個數(shù)都不能超過左括號。5.9 編程將一個字符串中的所有大寫字母變成小寫,而小寫字母變成大寫,其余字符不變。5.10 輸入 30 個學(xué)生的平均成績和姓名,按照平均成績由高到低的順序輸出每個學(xué)生的姓名和平均成績。5.11 建立兩個4X4的整數(shù)矩陣 A和B,編程求矩陣A和B的和(和矩陣的元素等于兩個相加的矩陣的相應(yīng)元素之和)。5.12 找到一個二維數(shù)組的鞍點,即該位置上的元素在該行上最大,在該列上最小,也可能不存在鞍點。5.13 不使用stracat函數(shù),分別用數(shù)組和指針編程將

19、兩個字符串連接成一個字符串。5.14 編程從一個字符串中刪除子字符串,兩個字符串都由鍵盤輸入。以下習(xí)題要求用指針方法處理5.15 輸入 3 個整數(shù),按從小到大的順序輸出。5.16 有 n 個人圍成一圈,順序排號,從第1 個人開始從1 到 m 報數(shù),凡數(shù)到m 的人出列,問最后留下的是原來圈中第幾號的人員。5.17 編寫程序?qū)⒁粋€不確定位數(shù)的正整數(shù)進(jìn)行三位分節(jié)后輸出,如輸入1234567,輸出1,234, 567。5.18 輸入 n 個整數(shù),組成一個一維數(shù)組,以第k 個數(shù)為界,把后面的數(shù)前移k 個位置,即最后 n-k 個數(shù)變成最前面的n-k 個數(shù)。 原來的最前面的k 個數(shù)據(jù)移到最后變成最后k 個數(shù)

20、據(jù)。例如,數(shù)組原來有數(shù)組元素1 、2、3、4、 5、6,假設(shè)k 為2,則交換后結(jié)果為3、 4、5、6、1、 2 。要求總共只能使用一個數(shù)組。5.19 有5個預(yù)先設(shè)定的關(guān)鍵單詞。編程輸入一行字符串,從前到后查找其中出現(xiàn)的關(guān)鍵單 詞及出現(xiàn)次數(shù)。5.20 輸入一個數(shù)字字符串,將其轉(zhuǎn)換為整數(shù)輸出。4vij = " sik t kj5.21 輸入矩陣s(3 4)和矩陣t (4X5),編程計算它們的乘積V。已知: kg i=1,2,3j=1,2,3,4,55.22 插入排序(在輸入過程中完成排序)。任意順序輸入10個整數(shù),把輸入的第1個數(shù)放在 數(shù)組白第1個位置上。以后每讀入個數(shù)都和已存入的數(shù)進(jìn)行

21、比較,確定該數(shù)按照從小到大的順序在數(shù)組應(yīng)處的位置。把原處于該位置上以及后面的所有數(shù)都后移一個位置,把新輸入的數(shù)填入空出來的位置上。這樣數(shù)組中白數(shù)總是從小到大來排列的。10個數(shù)輸入完以后輸出數(shù)組。5.23 全班30個學(xué)生,輸入每個學(xué)生的平均成績和姓名,按照成績從高到低輸出學(xué)生姓名和 平均成績。5.24 輸入一個字符串,判斷是否是回文?!盎匚摹敝疙樧x和逆讀都一樣的字符串。如“abcdcba:5.25 輸入兩個字符串s和t,判斷s中是否包含字符串to5.26 從一個字符串中刪除指定字符。要求字符串和指定刪除的字符都從鍵盤輸入。5.27 全班有30個學(xué)生,輸入每個學(xué)生姓名、出生日期、學(xué)號、專業(yè)等信息;

22、編程實現(xiàn)查找 查找學(xué)生操作,要求輸入待查找學(xué)生學(xué)號,輸出該學(xué)生基本信息。第六章結(jié)構(gòu)與聯(lián)合類型6.1 編程實現(xiàn)兩個復(fù)數(shù)的加法和減法運算。6.2 定義一個結(jié)構(gòu)類型表示日期,編程輸入今天的日期,輸出明天的日期。6.3 定義一個結(jié)構(gòu)類型表示日期,輸入年號和該年的第幾天的天數(shù),輸出該天的日期。6.4 定義一個結(jié)構(gòu)類型表示日期,輸入一個日期,輸出該天是當(dāng)年的第幾天。6.5 有10個學(xué)生,每個學(xué)生的數(shù)據(jù)包括:學(xué)號、姓名、3門課程的成績,輸入 10個學(xué)生 的數(shù)據(jù),求每個學(xué)生的平均成績,并按平均成績由高到低輸出學(xué)生的姓名、學(xué)號和平均成績。6.6 有10個學(xué)生,每個學(xué)生的數(shù)據(jù)包括:學(xué)號、姓名、3門課程的成績,輸入

23、 10個學(xué)生 的數(shù)據(jù),求每個學(xué)生的平均成績計算平均成績在85分以上的人數(shù)。6.7 編程,輸入10個用戶的姓名和電話號碼,并按照姓名的字典順序輸出用戶的姓名和 電話號碼。6.8 建立一個10個人的學(xué)生情況登記表,每個學(xué)生的信息包括:學(xué)號、姓名、性別、出 生日期(結(jié)構(gòu)類型)、政治面貌,政治面貌可以是黨員、團員或群眾;對于黨員,要 求填寫入黨時間(結(jié)構(gòu)類型)、入黨地點和入黨介紹人姓名;對于團員,要求填寫入 團時間和入團介紹人; 對于群眾,不需要填寫其它附加內(nèi)容。 編程輸入這些學(xué)生的信 息,并輸出指定學(xué)號的學(xué)生的姓名、政治面貌和入黨(團)時間。6.9 分配房間問題,按房間容量從小到大的次序輸入20各房

24、間號和房間容量組成結(jié)構(gòu)數(shù)組。在然后輸入若干班號和各班人數(shù),以輸入班號為0周圍輸入結(jié)束的標(biāo)志。 對于每個班,按照輸入的次序按人數(shù)分配最合適的房間。輸出班號、人數(shù)、有無房間分配、 及分配的房間號、容量。注意一個班只能分配一個房間,一個房間只能分配給一個班。第七章其他數(shù)據(jù)類型和預(yù)處理7.1 輸入一個日期,計算當(dāng)天是該年的第幾天?要求其中月份設(shè)計成枚舉類型數(shù)據(jù)。7.2 輸入某單位每個職工的職工號和工資(以元為單位,不含小數(shù)位)編程求發(fā)工資時,每位職工工資所需的不同人民幣的張數(shù)。并計算該單位職工的工資總和,以及累計所需要的不同人民幣的張數(shù)。7.3 編寫一個程序,求三個數(shù)中的最大數(shù),要求用帶參數(shù)的宏實現(xiàn)。

25、7.4 編程將用戶輸入的一個字符串中的大小寫字母互換,即大寫字母轉(zhuǎn)換為小寫字母,小寫字母轉(zhuǎn)換為大寫字母。要求定義判斷是大寫、小寫字母的宏以及大小寫相互轉(zhuǎn)換的宏。7.5 編程求三角形的面積,三角形的面積計算公式為aeanGqsa)(s b)(sc)其中1s=2(a+b+c),小2 c為三角形的邊長。定義兩個帶參數(shù)的宏,一個用于求s,另一個求area。7.6 分析下列變量a、b、c分別占用多少字節(jié)的空間,并編程計算它們各自占據(jù)的字節(jié)數(shù)。 struct int i:5;int :6;unsigned j:7;a; struct int i:5;int:0;unsigned j:7;b;struct

26、int i:5;unsigned int j;int k:7;c;第八章函數(shù)8.1 編寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結(jié)果,兩個整數(shù)由鍵盤輸入。8.2 編寫一個判斷素數(shù)的函數(shù),在主函數(shù)中輸入一個整數(shù),輸出是否是素數(shù)的信息。8.3 編寫一個程序,已知一個圓筒的半徑、外徑和高,要求調(diào)用函數(shù)計算該圓筒的體積。8.4 編寫一個求水仙花數(shù)的函數(shù),求 100到999之間的全部水仙花數(shù)。所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字的立方的和等于該數(shù)。例如: 153就是一個水仙花數(shù):153=1*1*1+5*5*5+3*3*38.5 編寫一個函數(shù),將給定的一個二維數(shù)組

27、(3X 4)轉(zhuǎn)置,即行列互換。8.6 編寫一個函數(shù),使輸入的一個字符串按反序存放,在主函數(shù)中輸入和輸出字符串。8.7 求方程ax2+bx+c=0的根,從主函數(shù)輸入 a、b、c的值,并用三個函數(shù)分別求當(dāng)b2-4ac大于0、等于0 和小于 0 時的根,并輸出結(jié)果。8.8 一只球從100 米高度自由落下,每次落地后反跳回到原高度的一半再落下。求它在第1.2 次落地時共經(jīng)過多少米?第10 次反跳多高?8.9 編寫一個函數(shù),將兩個字符串連接起來。8.10 編寫一個函數(shù),輸入一個4 位正整數(shù),輸出該4 位數(shù)的 4 個數(shù)字的字符,要求數(shù)字之間空一個空格。如輸入1990,應(yīng)輸出“1 9 9 0”。8.11 編

28、寫一個函數(shù),輸入一行字符,將此字符串中最長的單詞輸出。8.12 編寫一個函數(shù),用“起泡法”對輸入的 10個字符按由小到大的順序排列。8.13 編寫一個函數(shù),輸入一個十進(jìn)制數(shù),輸出相應(yīng)的十六進(jìn)制數(shù)。8.14 使用指針,編寫一個求串長的遞歸函數(shù)。8.15 使用指針,輸入一個字符串,要求用遞歸方法實現(xiàn)以相反的順序輸出該字符串。8.16 編寫一個函數(shù),將一個鏈表按逆序排列,即將鏈頭當(dāng)鏈尾,鏈尾當(dāng)鏈頭。8.17 設(shè)有兩個鏈表,每個鏈表的結(jié)點都包括姓名、學(xué)號、住址、專業(yè)等信息,要求編寫一個函數(shù)把兩個鏈表合并成一個鏈表,按學(xué)號升序排列。8.18 編寫一個函數(shù),創(chuàng)建一個學(xué)生信息的雙向循環(huán)鏈表;鏈表中每個結(jié)點包

29、括學(xué)號、姓名、成績等信息。8.19 有兩個鏈表a和b,設(shè)結(jié)點中包括學(xué)號、姓名等信息。編程從鏈表a中刪除與鏈表b中學(xué)號相同的那些結(jié)點。8.20 編程,實現(xiàn)任意長度的兩個正整數(shù)的加法運算。8.21 編寫一個函數(shù),創(chuàng)建一個一個學(xué)生信息的單向有序鏈表;鏈表中每個結(jié)點包括學(xué)號、姓名、成績等信息,鏈表中結(jié)點按照學(xué)號從小到大排列。第九章 文件9.1 將一個文本文件按二進(jìn)制進(jìn)行讀操作,會出現(xiàn)什么問題?換行符在文件中占幾個字節(jié),其值是什么?9.2 如果打開一個文件后,程序在結(jié)束前會出現(xiàn)什么現(xiàn)象?并請解釋你所發(fā)現(xiàn)的現(xiàn)象。9.3 你認(rèn)為可能有幾種情況使得以讀方式打開一個文件出現(xiàn)故障,寫方式打開文件的故障 呢?9.4

30、 如果在操作系統(tǒng)下可以用命令copy your.txt PRN 將文件 your.txt 送到打印機上打印出來。請你設(shè)計一個C 語言程序完成這個程序的打印。9.5 設(shè)計一個函數(shù)LineCount() 計算一個文本文件的行數(shù)。9.6 編程,輸入的一系列書信息(書名,作者,出版社,單價,庫存數(shù)目,類別等),把這些信息保存到文件 book,dat中。9.7 編寫一個程序,當(dāng)用戶輸入一個關(guān)鍵字后,從按照9.6 題要求建立好的data 文件中找出所有包含該關(guān)鍵字的書的信息。9.8 將題 9.6 中建立好的文件內(nèi)容按照單價由高到低排序,將排好序的內(nèi)容存入到文件newbook.dat 中。9.9 不改變題9

31、.6 建立好的文件book.dat 的內(nèi)容,建立一個book.dat 文件的索引文件bindex.dat,該索引文件按照書名建立索引,bindex.dat文件中存儲每本書的書名以及該書的信息記錄在book.dat 文件中的記錄號,例如index.dat 文件的某個數(shù)據(jù)值為“ C ProgrammingLanguage ” ,10表示書名為 “ CProgramming Language ”的信息是 book.dat 文件中的第10 個數(shù)據(jù)項。9.10 編寫一個程序,輸入一個文件名,按照十六進(jìn)制在屏幕上輸出文件的內(nèi)容。9.11 編寫一個程序,輸入一個文件名,統(tǒng)計該文件的長度(字節(jié)數(shù))。9.12

32、編寫一個程序,輸入一個文件名,將文件的內(nèi)容反序后重新存儲到一個新的文件中。第十章 綜合程序設(shè)計10.1 編寫一個程序,輸入購買的商品的單價和數(shù)量,輸出清單并統(tǒng)計總金額。10.2 編寫一個航班售票系統(tǒng),要求完成以下功能:(1) 假設(shè)該民航有若干航班,要求實現(xiàn)增加航班和取消某個航班的功能。(2) 查詢:根據(jù)用戶提出的終到站查詢航班號、售票情況等航班信息;也可根據(jù)航班號,列出該航班已訂票的乘客名單。(3) 訂票:根據(jù)航班號為客戶訂票,如該航班有余票,則為客戶訂票;如該航班已滿員,則顯示相應(yīng)信息。(4) 退票:按乘客要求退出已預(yù)定的機票。10.3 編寫一個銀行賬戶管理相系統(tǒng),要求建立二進(jìn)制文件存儲銀行

33、賬戶信息,其中每個用戶賬戶信息中要求保存賬戶、用戶身份證號碼、用戶姓名、用戶地址、賬戶金額等,完成以下功能:( 1 )錄入新賬戶;( 2)查詢賬戶情,根據(jù)輸入的賬戶查詢用戶情況和賬戶金額;( 3)修改賬戶信息,要求用戶輸入賬戶,根據(jù)用戶需要修改除了賬戶之外的其余信息;( 4) 刪除賬戶:根據(jù)輸入的賬戶找到要刪除的賬戶信息以后,經(jīng)確認(rèn)后刪除該賬戶信息;10.4 編寫一個撲克牌發(fā)牌的程序,將除了大小王之外的52 張牌發(fā)成四墩10.5 編寫一個計算24 點的游戲的程序第一章 C 語言概述1.1、 CDCCC1.2、 編程題 ( 1 )解:main()printf("printf("

34、;n");printf("printf("n");printf("運行結(jié)果:* * * * * * * * * * n");Very Good! n");* * * * * * * * * * n");*Very Good!*1.1 2) (略)1.3 (略)1.4 (略)1.5 (略)第二章基本數(shù)據(jù)類型和表達(dá)式1.1 、 BABAB DDABD CCDAC ABADD DCBB1.2 (略)1.3 (略)1.4 (略)第三章控制流3 1解:main()float c,f;printf(" 請輸入一個華氏

35、溫度:n");scanf("%f",&f);c=(5.0/9.0)*(f-32);/注意5和 9 要用實型表示,否則5/9 值為零printf(" 攝氏溫度為:%5.2fn",c);運行結(jié)果:請輸入一個華氏溫度:78攝氏溫度為:25.564 2解:main()5 int x,y;printf(" 輸入x: ");scanf("%d",&x);if(x<1)y=x;printf(" X=%d,Y=X=%dn",x,y);else if(x<10)y=2*x-1

36、;printf(" X=%d,Y=2*X-1=%dn",x,y);elsen",x,y);y=3*x-11;printf(" X=%d,Y=3*x-11=%d運行結(jié)果:1 :輸入X:4X = 4,Y=2*X-1 =72:輸入X:1X = - 1, Y = X = - 13:輸入X:20X = 20, Y = 3*x-11 =493 3解:main()int t,a,b,c,d;printf(" 請輸入四個數(shù):");scanf("%d,%d,%d,%d",&a,&b,&c,&d);pr

37、intf("nn a=%d,b=%d,c=%d,d=%dn",a,b,c,d);if(a>b)t=a;a=b;b=t;if(a>c)t=a;a=c;c=t;if(b>c)t=b;b=b;b=t;if(b>d)t=b;b=d;d=t;if(c>d)t=c;c=d;d=t;printf("n 排序后的結(jié)果如下:n");printf("%d%d %d %d n",a,b,c,d);3.4 實際上應(yīng)該有以下幾種可能: a=0,不是二次方程。 (2) (2) bA2-4ac=0,有兩個相等實根。 (3) (3) b

38、A2-4ac>0,有兩個不等實根。 (4) (4) bA2-4ac<0,有兩個共軻復(fù)根。據(jù)此編寫程序如下:#include<math,h> main() float a,b,c,d,disc,x1,x2,realpart,imagpart;scanf ( “ %f,%f,%f ” ,&a,&b,&c);printf( “ The equation ” );if (fabs(a)<=le-6)printf( “ is not a quadratic ” ); elsedisc=b*b-4*a*c;if (fabs(disc)<=le-6

39、)printf( “ has two equal roots:%8n.”,4f-b/(2*a);else if (disc)>le-6x1=(-b+sqrt(disc)/2*a;x2=(-b-sqrt(disc)/2*a;printf( “ has distinct real roots: %8.4f and %8n.4” f ,x1,x2); elserealpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf( “ has complex roont” s: );printf(“ %8.4f+%8.n4”fi ,realpart,imagpa

40、rt);printf(“ %8.4f n” ,realpart,imagpart); 程序中用disc代表bA2-4ac,先計算disc的值,以減少以后的重復(fù)計算。對于判斷bA2-4ac是否等于0時,要注意一個問題:由于 disc (即bA2-4ac)是實數(shù),而實數(shù)在計算和存儲時 會有一些微小的誤差,因此不能直接進(jìn)行如下判斷:if (disc=0)因為這樣可能會出現(xiàn)本來是零的量,由于上述誤差而被判別為不等于零而導(dǎo)致結(jié)果錯誤。所以采取的辦法是判別 disc 的絕對值 ( abs(disc) 是否小于一個很小的數(shù)(例如 10A-6) , 如果小于此數(shù),就認(rèn)為disc=0。程序中以realpart代

41、表實部p,以imagpart代表虛部q,以增加可讀性。3.5分析此問題,折扣的變化是有規(guī)律的:折扣的“變化點”都是 250 的倍數(shù)(250, 500,1000, 2000, 3000) 。利用這一特點,可以在橫軸上加一種坐標(biāo)c, c 的值為s/250。 C 代表250 的倍數(shù)。當(dāng) c<1 時, 表示s<250, 無折扣;1<= c<= 2 時, 表示 250<= s <500, 折扣 d=2%;2<= c <4 時, d=5% ; 4<= c <8 時, d =8%; 8<= c <12 時, d =10%; c >

42、12 時, d =15%;據(jù)此寫出程序如下:main()int c,s;float p,w,d,f;scanf( “ %f,%f,%d ” ,&p,&w,&s);if (s>=3000) c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7: =8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*

43、(1-d/100.0);printf( “ freight=%15.4f ” ,f);運行情況如下:100, 20, 300freight=588000.0000請注意:c、s是整型變量,因此 c=s/250為整數(shù)。當(dāng)s>=3000時,令c=12,而不使c隨s增 大,這是為了在 switch語句中便于處理,用一個case可以處理所有s>=3000的情況。3 6(略)4 7解:main()int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf(" 總和

44、=%9.6fn",s);3 8(略)3 9解:main()int i,j,k,n;printf(" 水仙花數(shù)是:");for(n=100;n<1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf("n%d",n);3 10解:main()int day,x1,x2;day=9;x2=1;while(day>0)x1=(x2+1)*2;x2=x1;day-;printf("桃子總數(shù)=%dn",x1);3 11解:mai

45、n()float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n+)sn=sn+2*hn;hn=hn/2;,sn);printf( 第十次落地是共經(jīng)過的米數(shù)為: “%f”printf( 第十次反彈 “%f 米 n” ,hn);3 12解:#include<math.h>main()float x,x0,f,f1;x=1.5;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;while(fabs(x-x0)>=1e-5);printf("方程的根=%6.2fn"

46、,x);3 13解:#include<math.h>main()float x0,x1,x2,fx0,fx1,fx2;doprintf(" 請輸入 x1,x2 的值: n");scanf("%f,%f",&x1,&x2);fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6;while(fx1*fx2>0);dox0=(x1+x2)/2;fx0=x0*(2*x0-4)*x0+3)-6; if(fx0*fx1)<0)x2=x0; fx2=fx0; else x1=x0; f

47、x1=fx0;while(fabs(fx0)>=1e-5);printf(" 方程的根是%6.2fn",x0);314解:#include<math.h>main()int i,j,k;for(i=0;i<=3;i+)for(j=0;j<=2-i;j+) printf(" ");for(k=0;k<=2*i;k+) printf("*");printf("n");for(i=0;i<=2;i+)for(j=0;j<=i;j+) printf(" "

48、);for(k=0;k<=4-2*i;k+) printf("*");printf("n");3 15解:main()char i,j,k;for(i='x'i<='z'i+)for(j='x'j<='z'j+)if(i!=j)for(k='x'k<='z'k+)if(i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')

49、printf(" 順序為:na-%ctb-%ctc-%cn",i,j,k);運行結(jié)果:順序為:a zb xc y第五章數(shù)組和指針5 2 解:#define N 5main()int aN=8,6,5,4,1,i,temp;printf("n 初始數(shù)組:n");for(i=0;i<N;i+)printf("%4d",ai);for(i=0;i<N/2;i+)temp=ai;ai=aN-i-1;aN-i-1=temp;printf("n 交換后的數(shù)組:n");for(i=0;i<N;i+)printf

50、("%4d",ai);5 3解:main()int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;printf(" 初始數(shù)組如下:");for(i=0;i<10;i+)printf("%5d",ai);printf("n");printf(" 輸入插入的數(shù)據(jù):");scanf("%d",&number);end=a9;if(number>end)a10=number;elsefo

51、r(i=0;i<10;i+)if(ai>number)temp1=ai;ai=number;for(j=i+1;j<11;j+)temp2=aj;aj=temp1;temp1=temp2; break;for(i=0;i<11;i+)printf("%6d",ai);5.4解:#include<stdio.h>#define M 6#define N 4void func(int a, int b, int c)int i=0,j=0,k=0;while(i<M && j<N)if(ai<bj)ck=ai

52、;i+;k+;elseck=bj;j+;k+;while(i<M)ck=ai;i+;k+;while(j<N)ck=bj;j+;k+;void main()int i;int aM=2,5,8,11,20,35;int bN=1,6,15,60;int cM+N;func(a,b,c);printf(" 歸并結(jié)果:");for(i=0; i<M+N; i+)printf("%d",ci);pritnf("n");5.6解:#include<stdio.h>#include<math.h>#in

53、clude<string.h>void main()int i,base,len;char num20;float s=0;printf(" 輸入數(shù)進(jìn)制( 小于等于16):");scanf("%d",&base);printf(" 該進(jìn)制的一個整數(shù):");scanf("%s",num);len=strlen(num);i=len-1;while(i>=0)switch(numi)case 'A':case 'a':s=s+10*pow(float)base,

54、 (float)(len-i-1);break;case 'B':case 'b':s=s+11*pow(float)base, (float)(len-i-1);break;case 'C':case 'c':s=s+12*pow(float)base, (float)(len-i-1);break;case 'D':case 'd':s=s+13*pow(float)base, (float)(len-i-1);break;case 'E':case 'e':s=

55、s+14*pow(float)base, (float)(len-i-1);break;case 'F':case 'f':s=s+15*pow(float)base, (float)(len-i-1);break;case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':s=s+(n

56、umi-'0')*pow(float)base, (float)(len-i-1);break; i-;printf(" 十進(jìn)制結(jié)果:%gnn",s);5.7解:#include<stdio.h>char itc(int n)char c;if(n>=0 && n<=9)c='0'+n;elsec='a'+n-10;return c;void main() int i=0;int base,n,j,num20;scanf("%d",&base); doi+;n

57、umi=n%base;n=n/base;while(n!=0)printf(" 轉(zhuǎn)換的結(jié)果:");for(j=i; j>=1; j-)printf("%c",itc(numj);printf("n");5 13/ * 連接兩個字符串(不用 strca) t */main()char s180,s240;int i=0,j=0;printf("n 請輸入字符串1: ");scanf("%s",s1);printf("n 請輸入字符串2: ");scanf("%s",s2);whi

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論