《C語言程序設計教程》習題參考答案_第1頁
《C語言程序設計教程》習題參考答案_第2頁
《C語言程序設計教程》習題參考答案_第3頁
《C語言程序設計教程》習題參考答案_第4頁
《C語言程序設計教程》習題參考答案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言程序設計教程習題參考答案祝勝林 主編華南理工大學出版社【習題1】1【習題2】2【習題3】3【習題4】5【習題5】7【習題6】9【習題7】11【習題8】13【習題9】14【習題10】15【習題1】一、簡答題(在課本中尋找答案,略)1.1 C程序的基本結構包括哪些內容?1.2 如何定義標識符?1.3 輸入格式、輸出格式的組成包括哪些內容?1.4 C語言函數(shù)分為哪兩類?1.5 計算表達式的值應該考慮哪些方面?1.6 上機調試程序的步驟如何?二、判斷并改錯1.7 C程序執(zhí)行的入口是main()函數(shù),所以main函數(shù)必須放在程序的開頭。錯誤:main函數(shù)可以放在程序的任何位置。并不限定在程序的開頭

2、。1.8 定義一個函數(shù)包括數(shù)據(jù)說明部分和執(zhí)行語句部分,兩者可以交叉出現(xiàn)。錯誤:不可以交叉出現(xiàn),數(shù)據(jù)說明部分在執(zhí)行語句部分的前面。1.9 編輯與編譯不是一回事。錯誤:不是一回事。編輯完成源程序的輸入和修改;編譯是對源程序進行語法檢查,如果無語法錯誤,則生成目標程序。1.10 scanf("%d,%d",&x,&y);的正確輸入格式:3,4<回車>。正確1.11 注釋內容太多會影響程序的執(zhí)行效率。 錯誤:不會影響程序的執(zhí)行效率。因為在編譯時,編譯系統(tǒng)將注釋內容刪除或用空格代替,所以注釋內容不會編譯到目標程序中。1.12 所有的數(shù)學公式可以直接出現(xiàn)在源

3、程序中。錯誤:數(shù)學公式需要轉換成C語言能夠接受的公式才能出現(xiàn)在源程序中。三、編程題1.13 在屏幕上輸出自己名字的拼音。提示:中文名字叫“張三”,對應的拼音為“Zhang San”,輸出用printf()函數(shù)。1.14 輸入圓的半徑,求圓的周長,并將結果保留兩位小數(shù)輸出到屏幕上。提示:定義圓的半徑r,圓的周長:2*3.14*r,輸出結果保留2位小數(shù)可以用%.2f1.15 輸入兩個整數(shù),輸出其中最大者。提示:模仿例1.31.16 輸入三個整數(shù),輸出其中最小者。提示: min(min(a,b),c); 【習題2】一、簡答題(在課本中尋找答案,略)2.1 常量與變量的區(qū)別?2.2 C語言中的標識符的

4、定義規(guī)則?2.3 變量為什么要“先定義,后使用”?2.4 字符常量'a'與字符串常量"a"有何區(qū)別?2.5 大小寫字母轉換的規(guī)則是什么?2.6 變量的具有哪三種屬性?二、單項選擇題2.7C語言中,int型數(shù)據(jù)在內存中的存儲形式是(D)。A)ASCII碼 B)原碼 C)反碼 D)補碼2.8下面四個選項中,均是不合法的用戶標識符的選項是(C)。)BA 、x_0、do)float、1a0、_Y)x-y、goto、123)_123、tmp、CHAR2.9下列選項中不正確的常數(shù)的選項是(D)。)0x12F )-1.23E-2 )12.0 )03882.10下面正確的字

5、符常量是(B)。)"a" )'' )"n" )"376"2.11下面正確的字符串常量是(C)。)'a' )'376' )"n" )3762.12表達式'A'+4*25.0-'b'的正確結果是(B)。)67 )67.0 )不確定 )67L2.13執(zhí)行printf("%x",100);后的輸出結果是(C)。)100 )0x100 )0X64 )642.14int型的-1在內存中的存儲形式是(A)。)1111 1111 1

6、111 1111)0000 0000 0000 0001)1111 1111 1111 1110)1000 0000 0000 00012.15存儲字符串"'abc376"需要的字節(jié)數(shù)是(D)。)11 )13 )6 )7【習題3】一、計算題3.1 2.8+7%3*11%2/4 (答案:2.8)3.2 5/2+5.0/2+7%6 (答案:5.5)3.3 a=12,a*=2+3 (答案:a=60)3.4 a=3,b=4,c=5,a+b>c&&b= =c (答案:0)3.5 3>5?3:5<8?25:40 (答案:25)3.6 設a=1,

7、b=2,c=3,d=4,m=n=1,有表達式(m=a>b)&&(n=c>d),計算表達式后m,n的值?(答案:m=0,n=1)3.7設int b=7;float a=2.5,c=4.7;求下面表達式的值。 a+(int)(b/2*(int)(a+c)/2)%4 (答案:4.5)二、單項選擇題3.8若有代數(shù)式,則不正確的C語言表達式是(C)。A)x/b/c*y*8 B)8*x*y/b/c C)8*x*y/b*c D)x*y/c/b*83.9有如下類型說明:int k,a,b;unsigned long w=8;double x=2.9則以下不符合C語言語法的表達式是(

8、A)。)x%(-3) )w*=-2)k=(a=6,b=4,a-b) )a*=a+=a-=(b=4)*(a=3)3.10有如下類型說明: float n; int m; 則以下能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位四舍五入的表達式是(B)。)n=(n*100+0.5)/100.0 )m=n*100+0.5,n=m/100.0)n=n*100+0.5/100.0 )n=(n/100+0.5)*100.03.11設k=7,x=12;則下列表達式值為3的是(D)。)x%=(k%=5) )x%=(k-k%5))x%=k-k%5 )(x%=k)-(k%=5)3.12已知m=48,ch='a&#

9、39;,n=0;則表達式(m>=n&&ch<'b'&&!n)的值是(B)。)0 )1 )真 )非03.13下面哪個式子在b為奇數(shù)時結果為假(C)。)a%2=1 )!(a%2=0) )!(a%2) )a%23.13執(zhí)行printf("%f",(x=3,y=5,x>y?1:1.5);后的輸出結果是(D)。)語法錯誤 )1 )1.5 )1.5000003.14能表示條件0x100的表達式是(D)。)0<=x<=100 )x>=0,x<=100)0x100 )x>=0&&

10、x<=1003.15判斷char型變量ch為數(shù)字的正確表達式是(B)。)ch>="0"&&ch<="9" )ch>='0'&&ch<='9')'0'ch'9' )ch>='0'|ch<='9'三、編程題(應用條件運算)3.16 輸入一個整型成績x,如果大于等于60分,輸出“pass”,否則輸出“fail”。提示:printf("%s",x>60?"pa

11、ss":"fail");3.17輸入一個年份y,如果是閏年,輸出“y is a leap year”,否則輸出“y is not a leap year.”提示:printf("%d is %s",y%4=0&&y%100!=0|y%400=0?"a leap year.":"not a leap year.");3.18輸入三條邊a,b,c,如果它們能構成一個三角形,輸出“Yes”,否則輸出“No”。提示:printf("%s",a+b>c&&a

12、+c>b&&b+c>a?"Yes":"No");3.19輸入三個數(shù)x,y,z,按從小到大的輸出結果。提示:分別用max0,min0代表最大、最小值,mid0表示中間值。max0=(x>y?x:y)>z?(x>y?x:y):z;max0=(x<y?x:y)<z?(x<y?x:y):z;mid0=x+y+z-max0-min0;3.20輸入一個平面上的點坐標,判斷它是否落在圓心(0,0),半徑為1的圓內,如果在圓內,輸出“Yes”,否則輸出“No”。提示:分別用x,y代表平面上一個點。print

13、f("%s",x*x+y*y<=0?"Yes":"No");【習題4】以下的編程題目要求首先畫出程序的傳統(tǒng)流程圖或N-S流程圖,再編寫程序代碼。上機實驗時再輸入到計算機中進行調試,并將調試過程中出現(xiàn)的問題和測試情況記錄下來。(流程圖請讀者自己參考課本自己畫,略)4.1編程實現(xiàn),輸入一個整數(shù),判斷它是否為偶數(shù),并顯示相應的信息。提示:x代表輸入的整數(shù),if(x%2=0) printf("neven");else printf("nodd");4.2 編程實現(xiàn),輸入一個平面上的點,判斷它是否落

14、在單位圓上,并顯示相應的信息。提示:x,y代表平面坐標,if(x*x+y*y=1) printf("nYes");else printf("nNo");4.3 編程實現(xiàn),輸入一個成績等級(A-E),顯示相應的百分制成績段。 A: 90-100 B: 80-89 C: 70-79 D: 60-69 E: <60提示:char grade; if(grade='A') printf("n90-100"); else if(grade='B') printf("n80-89"); .

15、4.4 寫出下面程序的運行結果: #include<stdio.h> main() int a=-1,b=1,c=5; switch(a>0) case 1:switch(b-2<0) case 1:printf("&");break; case 2:printf("*");break; case 0:switch(c= =5) case 0:printf("!");break; case 1:printf("#");break; default:printf("%&quo

16、t;); default:printf("");運行結果:&#4.5 將以下語句改寫成switch語句。 if(t>0)&&(t<=10) if(t>=3)&&(t<=6) x=2; else if(t>1)|(t>8) x=3; else x=1; else x=0;提示:int t; if(t<=0|t>10) c=0; else c=t;switch(t) case 0: x=0;break; case 1: case 2: x=3; case 3:case 4:case 5: c

17、ase 6: x=2; case 7:case 8: case 9: x=3; case 10: x=2; 4.7 編程實現(xiàn)一個具有簡單四則運算功能的計算器。提示:參照例4.18,隨機產(chǎn)生3個數(shù),其中一個數(shù)用來判斷是哪種運算。4.8 編程實現(xiàn),輸入一行字符,將其中的數(shù)字字符對應的整數(shù)值加起來并輸出結果。如: a45b8&*3 則是4+5+8+3,結果為20。提示:char c; int sum=0;while(c=getchar()!='n') if(c>='0'&&c<='9') sum=sum+c-'

18、;0'4.9 編程實現(xiàn),求的值。提示:先計算n!,再在計算階乘的外面套上一層循環(huán)。注意:20!是一個很大的值,float s=1;int i;例如:計算6!:for(i=1;i<=6;i+) s=s*i;4.10 編程實現(xiàn),找出1000之內的所有完數(shù),并按下面格式輸出其因子: 6 its factors are 1,2,3, 所謂“完數(shù)”是指一個數(shù)如果恰好等于它的因子之和,因子是指能夠整除該數(shù)的數(shù)。提示:先判斷數(shù)是否為完數(shù),如果是再考慮輸出因子。以6為例輸出因子: for(i=1;i<6;i+) if(6%i=0) printf("%d,",i);4.1

19、1 編程實現(xiàn),計算序列的前20項之和, ,.提示:這是一個累加式,每項是一個分式,用a、b分別表示分子、分母。注意:如果a、b都是整數(shù),則是整除。float sum=0,a=2,b=1; int i;for(i-1;i<=20;i+)sum=sum+a/b;a=a+b;b=a-b; 4.12 編程實現(xiàn),求Sn=a+aa+aaa+.+aa.a之值,其中a是一個數(shù)字。如:2+22+222+2222+22222(此時n=5),n,a由鍵盤輸入。提示:這是一個累加式,后1項可以由前一項表示,譬如:第2項可以由第1項表示: 第1項 t=a; 第2項:t=t*10+a;4.13 編程實現(xiàn),把從鍵盤輸

20、入的金額數(shù)(以圓為單位)按人民幣面額劃分,然后顯示支付該金額的各種面額人民幣的數(shù)量。提示:譬如:123.58元可以表示100元:1張;20元:1張;2元:1張;1元:1張;5角:1張;5分:1枚;2分:1枚;1分:1枚。為了簡單可以只完成整數(shù)部分轉換,即輸入的金額數(shù)為整數(shù)。4.14 編程實現(xiàn),使用循環(huán)結構打印以下圖案。 * * * * * * * * * * * * * * * * * * * * * * * * *提示:輸出時,本圖案要按向上三角形和向下三角形進行輸出。每行輸出中包括空格輸出,*號輸出。輸出空格和*號個數(shù)要與行循環(huán)控制變量關聯(lián)起來。4.15 編程實現(xiàn),以菜單方式實現(xiàn)猜數(shù)游戲系

21、統(tǒng)。(功能自己設定)4.16 編程實現(xiàn),以菜單方式實現(xiàn)四則運算輔助教學系統(tǒng)。提示:隨機產(chǎn)生兩個操作數(shù)和運算符+、-、*、/,由使用者輸入一個數(shù),判斷計算結果與輸入的數(shù)是否相等,如果相等,表示正確,否則是錯誤的?!玖曨}5】一、 填空題5.1 若有定義int a35;則排列在數(shù)組中的第9個元素是( a13 )。5.2 strlen("How are youn")的值是( 12 )。5.3 C語言中字符串結束的標志是( '0' )。5.4 寫出一個名為s的單精度實型一維數(shù)組,長度是6,所有元素初值均為0,其數(shù)組定義語句是(float s6=0; )。5.5 str

22、cmp("how","How")的值是(32 或>0 )。二、 選擇題5.6 若有int s4=1,2,3,4;,則ss0+2*s2-s3的值是( D ) A.1B.2C.3D.45.7 對數(shù)組的描述正確的是( B )。 A數(shù)組一旦定義其大小是固定的,但數(shù)組元素的類型可以不同。 B數(shù)組一旦定義其大小是固定的,但數(shù)組元素的類型必須相同。 C數(shù)組一旦定義其大小是可變的,但數(shù)組元素的類型可以不同。 D數(shù)組一旦定義其大小是可變的,但數(shù)組元素的類型必須相同。5.8 對字符串"Boy"進行完整賦值的操作是( B )。 Achar s3 =

23、'B','o','y' B. char s = "Boy" Cchar s3 = "Boy"D.char s3; s="Boy"5.9在c語言中引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是( C)。 A整型常量 B.整型表達式 C整型常量或整型表達式D.任何類型的表達式5.10對以下說明語句的正確理解是( B )。 int a10=6,7,8,9,10; A將5個初值依次賦給a1至a5 B將5個初值依次賦給a0至a4 C將5個初值依次賦給a6至a10 D因為數(shù)組長度與初值的個數(shù)不相同,所以

24、此語句不正確三、看程序寫結果5.11main()int a33 = 1,0,2, 2,2,0,2, c33,i,j; for(i=0; i<3; i+) for(j=0; j<3; j+) cij = aaijaji; printf("%5d",cij);printf("n");運行結果為: 2 2 0 0 0 2 2 0 1 5.12當運行以下程序時,從鍵盤輸入:Ah2MA A3ha,請寫出輸出結果。main() char s80, c='a' int i=0; scanf("%s",s); while(

25、si+!='0') if(si = c) si=si-32; else if(si=c-32) si=si+32; puts(s); 運行結果為:AH2Ma四、編程題5.13 用數(shù)組方法定義一個矩陣,求其轉置矩陣。提示:已知a32,轉置后的結果存放在b23; 則bji=aij;5.15 從鍵盤輸入9個不同的整數(shù),組成三行三列的二元數(shù)組,找出每一列中的最大元素,并輸出其行、列下標。提示:已知a33,max,row,col分別用來存放一列的最大值,行下標和列下標。5.15利用一個二維數(shù)組,打印出以下楊輝三角形,要求打印出10行。11112113311464115101051 提示:

26、定義一個10行10列的二維數(shù)組,并且通過兩重循環(huán)對第1列所有元素賦值1,主對角線也賦值。根據(jù)aij=ai-1j+ai-1j-1求出其它元素的值。5.16 從鍵盤上輸入一串字符(長度小于50個字符),找出其中最前面的一個X和最后面的一個X之間的子串,并輸出子串的長度。提示:定義一個長度為81的字符數(shù)組,從左邊查找第一字符'X'的下標,從右邊查找第一個字符'X'的下標。5.17 矩陣A是一個3×3的矩陣,B是一個3×2的矩陣,編程求C=A´B。提示:定義一個3X2的數(shù)組c32,該數(shù)組的元素值由A數(shù)組的一行元素分別與B的一列元素相乘得到。

27、譬如:c00=a00*b00+a01*b10+a02*b20。5.18 把30個學生的學號和兩門課程的成績輸入到一個二維數(shù)組中,求出的每個學生的兩門課程的總成績也放于此數(shù)組中,請按學生總分的高低打印出成績單(包括學號、兩門課程成績和總分)。提示:定義一個30行4列的數(shù)組。為了先快速測試算法是否正確?可以定義一個3行4列的數(shù)組,并且通過賦初始值,減少調試程序時反復輸入數(shù)據(jù)的麻煩,算法調試成功后在加上輸入數(shù)據(jù)部分。實現(xiàn)從高到低打印出成績可以通過排序(降序);也可以通過另外定義1個一維數(shù)組作為索引,再通過索引打印成績。5.19 不用現(xiàn)有的函數(shù)求計算字符串長度的程序。提示:通過循環(huán)從前到后計算字符個數(shù)

28、,遇到字符串結束標志'0'結束。5.20 從鍵盤上輸入一串字符,將其逆向顯示。提示:首先計算字符串的長度,在從右邊逐一顯示字符,直到下標等于0為止。5.21 找出一個二位數(shù)組中的鞍點的位置,即該位置上的元素在該行上最大,在該列上最小。如果有,輸出其所在的行、列號,如果沒有,則輸出提示信息。提示:先找出行的最大元素,根據(jù)列下標找出列的最大元素。5.22 從鍵盤上輸入一串字符,將字符串中的所有A去掉后組成新的字符串,并將兩字符串輸出。提示:簡單的方法是通過定義兩個一維數(shù)組,逐個讀出原字符串的字符,如果不為'A',則存入目的數(shù)組。當然也可以只用一個一維數(shù)組實現(xiàn),通過兩

29、個下標指示來實現(xiàn)。【習題6】一、 填空題6.1 C語言程序執(zhí)行的開始處是 main函數(shù) 。6.2 C程序中的一個函數(shù)由兩部分組成,即 聲明部分 和 執(zhí)行部分 。6.3為了保證被調用函數(shù)不返回任何值,其函數(shù)定義的類型應為 void 。6.4若一個局部變量的存儲類型是static,則該變量的值在 程序執(zhí)行完成 時被釋放。6.5預處理命令#include的作用是 文件包含 。6.6定義一個宏,功能是判斷兩個數(shù)是否相等,相等為1,不等為0。 #define EQU(a,b) (a)=(b)?1:0 6.7 變量的存儲類別有 自動型 、 靜態(tài)型 、 寄存器型 、和 外部類型 共4種,它們分別用 auto

30、 、 static 、 register 、 extern 標識。二、 選擇題6.8下述函數(shù)定義形式正確的是(C)。A. int f(int x; int y)B. int f(int x,y)C. int f(int x, int y)D. int f(x,y: int)6.9 關于函數(shù)參數(shù),說法正確的是(A)。A. 實參與其對應的形參各自占用獨立的內存單元B. 實參與其對應的形參共同占用一個內存單元C. 只有當實參和形參同名時才占用同一個內存單元D. 形參是虛擬的,不占用內存單元6.10 用數(shù)組名作為函數(shù)的實參時,傳遞給形參的是(A)。A. 數(shù)組的首地址B. 數(shù)組的第1個元素C. 數(shù)組中的

31、全部元素D. 數(shù)組的元素個數(shù)6.11復合語句中定義的變量的作用范圍是(D)。A. 整個源文件B. 整個函數(shù)C. 整個程序D. 所定義的復合語句6.12一個函數(shù)的返回值由( D)確定。 A. return語句中的表達式B. 調用函數(shù)的類型C. 系統(tǒng)默認的類型D. 被調用函數(shù)的類型6.13在一個C源文件中,若要定義一個只允許本源文件所有函數(shù)使用的全局變量,其他文件中不允許使用,則該變量需要使用的存儲類別是(D)。A. autoB. registerC. externD. static三、 判斷題6.14若定義的函數(shù)沒有參數(shù),則函數(shù)名后的圓括號可以省略。(´)6.15函數(shù)的函數(shù)體可以是空語

32、句(Ö)。6.16只有main函數(shù)才能調用其他函數(shù)。(Ö)6.17return語句中表達式的類型必須與函數(shù)定義的類型一致。(´)6.18函數(shù)的實參和形參可以是相同的名字。(Ö)6.19函數(shù)調用中,形參與實參的類型和個數(shù)必須保持一致。(Ö)6.20外部類型的變量只能定義一次,但可在不同地方聲明多次。(Ö)6.21外部類型的變量作用范圍大,編程中應多用外部變量。(´)6.22預處理命令行必須以開頭,且最后要用分號結尾。(´)6.23宏命令的處理占用編譯時間,而不占用運行時間。(Ö)四、 看程序寫結果 6.24

33、int fun(int n)int f=1; f = f*n*2; return(f);main() int i,j; for(i=1; i<=5; i+) printf("%dt", fun(i);程序運行結果:2 4 6 8 106.25int x1=30, x2=40;main()int x3=10,x4=20; sub(x3,x4); sub(x2,x1); printf("x1=%d,x2=%d,x3=%d,x4=%d", x1,x2,x3,x4);sub(int x,int y)int x1=x; x=y; y=x1;程序運行結果:x1

34、=30,x2=40,x3=10,x4=206.26#define A 4#define B(x) A*x/2main()float c, a = 4.5; c=B(a); printf("c=%5.1f", c);程序運行結果:c= 9.0五、 編程題6.25寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調用這兩個函數(shù),并輸出結果。兩個整數(shù)由鍵盤輸入。提示:最大公約數(shù)可以采用“輾轉相除法”,最小公倍數(shù)將兩數(shù)乘積除于最大公約數(shù)?!拜氜D相除法”:設兩個數(shù)分別用m,n表示且m>n,臨時變量t,t=m%n;m=n;n=t;直到n等于0。6.26有3´3

35、的矩陣A和3´2的矩陣B,編制一個函數(shù),求C=AX´B。提示:參照習題5.17,A,B,C三個數(shù)組作為函數(shù)參數(shù)。 6.27編寫一函數(shù),使輸入的一個字符串按反序存放,在主函數(shù)中輸入輸出字符串。提示:一維字符數(shù)組用來存放字符串,并且將它傳遞到函數(shù),在函數(shù)中通過元素值交換來完成反序存放。 6.28編制一個函數(shù),由參數(shù)傳入一個字符串,統(tǒng)計此字串中字母、數(shù)字、和其他字符的個數(shù),在主函數(shù)中輸入字符串并顯示統(tǒng)計結果。提示:參照例題6.10。 6.29 定義一個宏,實現(xiàn)將兩個數(shù)互換,并寫出程序,輸入兩個數(shù)作為使用參數(shù),并顯示結果。提示:帶參數(shù)宏,swap(a,b,t).6.30編寫以下函數(shù)

36、:輸入職工的姓名和職工號;按職工號由小到大排序,姓名順序也隨之調整;輸入一個職工號,用折半法找出該職工的姓名,從主函數(shù)輸入要查找的職工號,輸出該職工姓名。提示:定義一個二維數(shù)組來存放職工信息;用數(shù)組名作函數(shù)的參數(shù)傳遞;通過“起泡算法”或“選擇算法”;折半查找法先決條件是數(shù)據(jù)已經(jīng)有序?!玖曨}7】1.1 語句int a,*p=&a;的含義是什么? 答:定義整型變量a,和整型指針變量p,并且p指向變量a。1.2 寫出下列數(shù)組元素的指針法表示。 (1)num3 (2) data42 答:(1)*(num+3) (2) *(*(data+4)+2)1.3 寫出下列數(shù)組元素的下標法表示。 (1)

37、*(*(a+1)+2) (2) (*(a+3)4 (3) *(a2+5) 答:(1)a12 (2) a34 (3) a251.4 分析程序,寫出程序輸出結果。(1) main() int a5=1,2,3,4,5; int *p=&a1; printf("%d",p2); 輸出結果:4(2) main() char a="I love China!" char *p=a; p=p+2; printf("%s",p); 輸出結果:love China!(3) main() int a34=1,2,3,4,5,6,7,8,9,10

38、,11,12; int (*pa)4=a; pa+; printf("%d",*(*(pa+1)+2);輸出結果:11(4) main() char *str="zhao","qian","sun","li" int i; for (i=0;i<4;i+) printf("%c",stri0); 輸出結果:zqsl(5) void sub(int x,int y,int *z) *z=y-x; main() int a,b,c;sub(10,5,&a); sub

39、(7,a,&b); sub(a,b,&c); printf("%4d,%4d,%4dn",a,b,c); 輸出結果: -5, -12, -7(6) #include <stdio.h> fun(char *s) char *p=s; while (*p) p+; return(p-s);main() char *str="abcd" int i; i=fun(str); printf("%d",i);輸出結果:41.5 定義語句int *f(); 和int (*f)();的含義分別是什么?答:int *f(

40、);表示函數(shù)返回一個整型指針;int (*f)();表示f是函數(shù)指針,指向整型函數(shù)。1.6 在二維數(shù)組中存放有4個學生,5門課程的成績,用指針編程實現(xiàn):(1)求出每門課程的平均成績。(2)求每個學生的總成績和平均成績。(3)在屏幕上列出各課成績在85分以上的學生名單。(4)在屏幕上列出補考通知單。提示:(1)(2)(3)略,(4)根據(jù)成績小于60分,由于有5門課程的成績,所以需要使用else if結構。1.7 輸入一個字符串,內有數(shù)字和非數(shù)字字符,例如:a345dsaf412 x?371+89tah74編程將其中連續(xù)的數(shù)字作為一個證書,一次存放到一個數(shù)組d中,例如:345放在d0,412放在d

41、1,.。統(tǒng)計共有多少個證書,并輸出這些整數(shù)。提示:從字符串中提取"345":t=ch-'0't=t*10+(ch-'0');t=t*10+(ch-'0');t='3'-'0'=3;t=3*10+('4'-'0')=34;t=34*10+('5'-'0')=3451.8 編寫把十六進制數(shù)字字符串變換成整數(shù)的函數(shù): int htoi(char *s)。提示:同1.7 1.9 編寫把十進制整數(shù)變換成二進制數(shù)字字符串的函數(shù): char *i

42、tob(int n)。提示:同1.7 1.10 用字符指針實現(xiàn)字符串拷貝功能,不能使用庫函數(shù)。提示:定義兩個字符數(shù)組a,b,復制操作bi=ai;1.11 用字符指針實現(xiàn)字符串連接功能,不能使用庫函數(shù)。提示:定義兩個字符數(shù)組a,b,先將下標定位到a的末尾'0',在將b的元素賦值給a的對應元素,注意:別忘了添加字符串結束標志'0'。1.12 用指向指針的指針的方法對5個字符串排序并輸出。提示:一個指針數(shù)組和一個指向指針的指針變量。【習題8】8.1 定義復數(shù)結構體,并寫出復數(shù)的加、減、乘、除、的計算函數(shù)。提示:復數(shù)包括兩個部分:實部和虛部。8.2 定義一個結構體變量(

43、包括年、月、日)。計算該日在本年中是第幾天。注意閏年問題。提示:計算該日是本年中的第幾天,是從本年1月1日起。8.3 有5個學生,每個學生的數(shù)據(jù)包括學號、姓名、3門課的成績,從鍵盤輸入5個學生數(shù)據(jù),要求在屏幕上顯示出3門課程的平均成績,以及最高分數(shù)的學生的數(shù)據(jù)(包括學號、姓名、3門課程成績、平均分)。提示:定義結構體數(shù)組。最高分數(shù)是指每個學生3門課程的平均分最高。8.4 編寫求鏈表長度的函數(shù)。提示:從鏈表指針頭往表尾移動計算結點的個數(shù)。8.5 已有兩個鏈表a、b,每個鏈表的結點包括學號、成績。要求把兩個鏈表合并,按學號升序排列。提示:可以定義一個新的鏈表,先從鏈表a,再從鏈表b中取出結點,依次

44、按學號升序插入到新的鏈表中。8.6 利用8.8節(jié)中的struct card結構編寫一個程序實現(xiàn)5個人員數(shù)據(jù)輸入和在屏幕上顯示的功能:如果job項為't',則在position項為教師的職稱(助教、講師、副教授、教授);如果job項為's',則class項為學生的班級號,如501。提示:在結構體中嵌入共用體position,根據(jù)job成員確定position的具體值。8.7 口袋中有紅、黃、蘭3中顏色的球若干個。每次從口袋中取出1個球,根據(jù)顏色的不同,輸入相應的顏色英文字符串。要求用枚舉變量實現(xiàn)。提示:參照例8.8。【習題9】一、簡答題9.1文件分為哪些類型?各有何特點?答:文件分為二進制文件和文本(ASCII碼)文件。二進制文件在內存和外存的形式是一樣的,無需進行數(shù)據(jù)轉換,用記事本打開該文件,看到得可能是亂碼;文本(ASCII碼)文件在內存是按二進制形式存在,在外存是以文本(ASCII碼)形式存在,存在數(shù)據(jù)的轉換,用記事本打開該文件,可以讀懂其中的內容。9.2什么是文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論