c語言程序設計教程答案_第1頁
c語言程序設計教程答案_第2頁
c語言程序設計教程答案_第3頁
c語言程序設計教程答案_第4頁
c語言程序設計教程答案_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

c語言程序設計教程答案c語言程序設計教程答案全文共35頁,當前為第1頁。【習題1】

一、簡答題(在課本中尋找答案,略)

1.1

C程序的基本結構包括哪些內(nèi)容?

1.2

如何定義標識符?

1.3

輸入格式、輸出格式的組成包括哪些內(nèi)容?

1.4

C語言函數(shù)分為哪兩類?

1.5

計算表達式的值應該考慮哪些方面?

1.6上機調(diào)試程序的步驟如何?

二、判斷并改錯

1.7

C程序執(zhí)行的入口是main()函數(shù),所以main函數(shù)必須放在程序的開頭。

錯誤:main函數(shù)可以放在程序的任何位置。并不限定在程序的開頭。

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

注釋內(nèi)容太多會影響程序的執(zhí)行效率。

錯誤:不會影響程序的執(zhí)行效率。因為在編譯時,編譯系統(tǒng)將注釋內(nèi)容刪除或用空格代替,所以注釋內(nèi)容不會編譯到目標程序中。

1.12

所有的數(shù)學公式可以直接出現(xiàn)在源程序中。

錯誤:數(shù)學公式需要轉換成C語言能夠接受的公式才能出現(xiàn)在源程序中。

三、編程題

1.13

在屏幕上輸出自己名字的拼音。

提示:中文名字叫“張三”,對應的拼音為“ZhangSan”,輸出用printf()函數(shù)。

1.14

輸入圓的半徑,求圓的周長,并將結果保留兩位小數(shù)輸出到屏幕上。

提示:定義圓的半徑r,圓的周長:2*3.14*r,輸出結果保留2位小數(shù)可以用%.2f

1.15

輸入兩個整數(shù),輸出其中最大者。

提示:模仿例1.3

1.16

輸入三個整數(shù),輸出其中最小者。

c語言程序設計教程答案全文共35頁,當前為第2頁。提示:min(min(a,b),c);c語言程序設計教程答案全文共35頁,當前為第1頁。c語言程序設計教程答案全文共35頁,當前為第2頁。c語言程序設計教程答案全文共35頁,當前為第3頁。【習題2】

一、簡答題(在課本中尋找答案,略)

2.1

常量與變量的區(qū)別?

2.2

C語言中的標識符的定義規(guī)則?

2.3

變量為什么要“先定義,后使用”?

2.4

字符常量'a'與字符串常量"a"有何區(qū)別?

2.5

大小寫字母轉換的規(guī)則是什么?

2.6

變量的具有哪三種屬性?

二、單項選擇題

2.7C語言中,int型數(shù)據(jù)在內(nèi)存中的存儲形式是(D)。

A)ASCII碼

B)原碼

C)反碼

D)補碼

2.8下面四個選項中,均是不合法的用戶標識符的選項是(C)。

A)BA、x_0、do

B)float、1a0、_Y

C)x-y、goto、123

D)_123、tmp、CHAR

2.9下列選項中不正確的常數(shù)的選項是(D)。

A)0x12F

B)-1.23E-2

C)12.0

D)0388

2.10下面正確的字符常量是(B)。

A)"a"

B)'\\'

C)"\n"

D)"\376"

2.11下面正確的字符串常量是(C)。

A)'a'

B)'376'

C)"\\n"

D)376

2.12表達式'A'+4*25.0-'b'的正確結果是(B)。

A)67

B)67.0

C)不確定

D)67L

2.13執(zhí)行printf("%x",100);后的輸出結果是(C)。

A)100

B)0x100

C)0X64

D)64

2.14int型的-1在內(nèi)存中的存儲形式是(A)。

A)1111111111111111

B)0000000000000001

C)1111111111111110

D)1000000000000001

2.15存儲字符串"\\\'abc\376"需要的字節(jié)數(shù)是(D)。

A)11

B)13

C)6

D)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,b=2,c=3,d=4,m=n=1,有表達式c語言程序設計教程答案全文共35頁,當前為第4頁。(m=a>b)&&(n=c>d),計算表達式后m,n的值?

(答案:m=0,n=1)

3.7設intb=7;floata=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*8

3.9有如下類型說明:

intk,a,b;

unsignedlongw=8;

doublex=2.9

則以下不符合C語言語法的表達式是(A)。

A)x%(-3)

B)w*=-2

C)k=(a=6,b=4,a-b)

D)a*=a+=a-=(b=4)*(a=3)

3.10有如下類型說明:

floatn;

intm;

則以下能實現(xiàn)將n中的數(shù)值保留小數(shù)點后兩位,第三位四舍五入的表達式是(B)。

A)n=(n*100+0.5)/100.0

B)m=n*100+0.5,n=m/100.0

c語言程序設計教程答案全文共35頁,當前為第5頁。C)n=n*100+0.5/100.0

D)n=(n/100+0.5)*100.0

3.11設k=7,x=12;則下列表達式值為3的是(D)。

A)x%=(k%=5)

B)x%=(k-k%5)

C)x%=k-k%5

D)(x%=k)-(k%=5)

3.12已知m=48,ch='a',n=0;則表達式(m>=n&&ch<'b'&&!n)的值是(B)。

A)0

B)1

C)真

D)非0

3.13下面哪個式子在b為奇數(shù)時結果為假(C)。

A)a%2==1

B)!(a%2==0)

C)!(a%2)

D)a%2

3.13執(zhí)行printf("%f",(x=3,y=5,x>y?1:1.5));后的輸出結果是(D)。

A)語法錯誤

B)1

C)1.5

D)1.500000

3.14能表示條件0≤x≤100的表達式是(D)。

A)0<=x<=100

B)x>=0,x<=100

C)0≤x≤100

D)x>=0&&x<=100

3.15判斷char型變量ch為數(shù)字的正確表達式是(B)。

A)ch>="0"&&ch<="9"

B)ch>='0'&&ch<='9'

C)'0'≤ch≤'9'

D)ch>='0'||ch<='9'

三、編程題(應用條件運算)

3.16

輸入一個整型成績x,3.17

如果大于等于60分,c語言程序設計教程答案全文共35頁,當前為第6頁。3.18

輸出“pass”,3.19

否則輸出“fail”。

提示:printf("%s",x>60?"pass":"fail");

3.17輸入一個年份y,如果是閏年,輸出“yisaleapyear”,否則輸出“yisnotaleapyear.”

提示:printf("%dis%s",y%4==0&&y%100!=0||y%400==0?"aleapyear.":"notaleapyear.");

3.18輸入三條邊a,b,c,如果它們能構成一個三角形,輸出“Yes”,否則輸出“No”。

提示:printf("%s",a+b>c&&a+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的圓內(nèi),如果在圓內(nèi),輸出“Yes”,否則輸出“No”。

提示:分別用x,y代表平面上一個點。

c語言程序設計教程答案全文共35頁,當前為第7頁。printf("%s",x*x+y*y<=0?"Yes":"No");c語言程序設計教程答案全文共35頁,當前為第3頁。c語言程序設計教程答案全文共35頁,當前為第4頁。c語言程序設計教程答案全文共35頁,當前為第5頁。c語言程序設計教程答案全文共35頁,當前為第6頁。c語言程序設計教程答案全文共35頁,當前為第7頁。c語言程序設計教程答案全文共35頁,當前為第8頁。【習題4】

以下的編程題目要求首先畫出程序的傳統(tǒng)流程圖或N-S流程圖,再編寫程序代碼。上機實驗時再輸入到計算機中進行調(diào)試,并將調(diào)試過程中出現(xiàn)的問題和測試情況記錄下來。

(流程圖請讀者自己參考課本自己畫,略)

4.1編程實現(xiàn),輸入一個整數(shù),判斷它是否為偶數(shù),并顯示相應的信息。

提示:x代表輸入的整數(shù),if(x%2==0)printf("\neven");elseprintf("\nodd");

4.2

編程實現(xiàn),輸入一個平面上的點,判斷它是否落在單位圓上,并顯示相應的信息。

提示:x,y代表平面坐標,if(x*x+y*y==1)printf("\nYes");elseprintf("\nNo");

4.3

編程實現(xiàn),輸入一個成績等級(A-E),顯示相應的百分制成績段。

A:90-100

B:80-89

C:70-79

D:60-69

E:<60

提示:chargrade;

if(grade=='A')printf("\n90-100");

elseif(grade=='B')printf("\n80-89");

....

4.4

寫出下面程序的運行結果:

#include<stdio.h>

main()

{

inta=-1,b=1,c=5;

switch(a>0){

case1:switch(b-2<0){

case1:printf("&");break;

case2:printf("*");break;

}

case0:switch(c==5){

case0:printf("!");break;

case1:printf("#");break;

default:printf("%%");

}

default:printf("@");

}

}

c語言程序設計教程答案全文共35頁,當前為第9頁。運行結果:&#@

4.5

將以下語句改寫成switch語句。

if((t>0)&&(t<=10))

if((t>=3)&&(t<=6))x=2;

elseif((t>1)||(t>8))x=3;

elsex=1;

elsex=0;

提示:intt;

if(t<=0||t>10)c=0;

elsec=t;

switch(t)

{case0:x=0;break;

case1:case2:x=3;

case3:case4:case5:case6:x=2;

case7:case8:case9:x=3;

case10:x=2;

}

4.7

編程實現(xiàn)一個具有簡單四則運算功能的計算器。

提示:參照例4.18,隨機產(chǎn)生3個數(shù),其中一個數(shù)用來判斷是哪種運算。

4.8

編程實現(xiàn),輸入一行字符,將其中的數(shù)字字符對應的整數(shù)值加起來并輸出結果。如:

c語言程序設計教程答案全文共35頁,當前為第10頁。

a45b8&*3則是4+5+8+3,結果為20。

提示:charc;intsum=0;

while((c=getchar())!='\n')if(c>='0'&&c<='9')sum=sum+c-'0';

4.9編程實現(xiàn),求的值。

提示:先計算n!,再在計算階乘的外面套上一層循環(huán)。注意:20!是一個很大的值,floats=1;inti;例如:計算6!:

for(i=1;i<=6;i++)s=s*i;

4.10

編程實現(xiàn),找出1000之內(nèi)的所有完數(shù),并按下面格式輸出其因子:

6itsfactorsare1,2,3,

所謂“完數(shù)”是指一個數(shù)如果恰好等于它的因子之和,因子是指能夠整除該數(shù)的數(shù)。

提示:先判斷數(shù)是否為完數(shù),如果是再考慮輸出因子。以6為例輸出因子:

for(i=1;i<6;i++)if(6%i==0)printf("%d,",i);

4.11

編程實現(xiàn),計算序列的前20項之和,

,,,,,,...

提示:這是一個累加式,每項是一個分式,用a、b分別表示分子、分母。注意:如果a、b都是整數(shù),則是整除。floatsum=0,a=2,b=1;inti;

c語言程序設計教程答案全文共35頁,當前為第11頁。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),把從鍵盤輸入的金額數(shù)(以圓為單位)按人民幣面額劃分,然后顯示支付該金額的各種面額人民幣的數(shù)量。

提示:譬如:123.58元可以表示100元:1張;20元:1張;2元:1張;1元:1張;5角:1張;5分:1枚;2分:1枚;1分:1枚。

為了簡單可以只完成整數(shù)部分轉換,即輸入的金額數(shù)為整數(shù)。c語言程序設計教程答案全文共35頁,當前為第8頁。c語言程序設計教程答案全文共35頁,當前為第9頁。c語言程序設計教程答案全文共35頁,當前為第10頁。c語言程序設計教程答案全文共35頁,當前為第11頁。c語言程序設計教程答案全文共35頁,當前為第12頁。4.14

編程實現(xiàn),使用循環(huán)結構打印以下圖案。

*

***

*****

*******

*****

***

*

提示:輸出時,本圖案要按向上三角形和向下三角形進行輸出。每行輸出中包括空格輸出,‘*’號輸出。輸出空格和‘*’號個數(shù)要與行循環(huán)控制變量關聯(lián)起來。

4.15

編程實現(xiàn),以菜單方式實現(xiàn)猜數(shù)游戲系統(tǒng)。(功能自己設定)

提示:模仿例4.14和例4.18完成。功能可以包括猜數(shù)范圍,人數(shù)等設置。

4.16

編程實現(xiàn),以菜單方式實現(xiàn)四則運算輔助教學系統(tǒng)。

提示:隨機產(chǎn)生兩個操作數(shù)和運算符+、-、*、/,由使用者輸入一個數(shù),判斷計算結果與輸入的數(shù)是否相等,如果相等,表示正確,否則是錯誤的。c語言程序設計教程答案全文共35頁,當前為第12頁。c語言程序設計教程答案全文共35頁,當前為第13頁。【習題5】

填空題

5.1若有定義inta[3][5];則排列在數(shù)組中的第9個元素是(a[1][3])。

5.2strlen("Howareyou\n")的值是(12

)。

5.3C語言中字符串結束的標志是('\0')。

5.4寫出一個名為s的單精度實型一維數(shù)組,長度是6,所有元素初值均為0,其數(shù)組定義語句是(

floats[6]={0};

)。

5.5strcmp("how","How")的值是(

32或>0)。

選擇題

5.6若有ints[4]={1,2,3,4};,則s[s[0]+2*s[2]-s[3]]的值是(D)

A.1

B.2

C.3

D.4

5.7對數(shù)組的描述正確的是(B

)。

A.數(shù)組一旦定義其大小是固定的,但數(shù)組元素的類型可以不同。

B.數(shù)組一旦定義其大小是固定的,但數(shù)組元素的類型必須相同。

C.數(shù)組一旦定義其大小是可變的,但數(shù)組元素的類型可以不同。

D.數(shù)組一旦定義其大小是可變的,但數(shù)組元素的類型必須相同。

5.8對字符串"Boy"進行完整賦值的操作是(B)。

A.chars[3]={'B','o','y'};

B.chars[]="Boy";

C.chars[3]={"Boy"};

D.chars[3];s="Boy";

5.9在c語言中引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是(

C

)。

A.整型常量

B.整型表達式

C.整型常量或整型表達式

D.任何類型的表達式

5.10對以下說明語句的正確理解是(B)。

c語言程序設計教程答案全文共35頁,當前為第14頁。

inta[10]={6,7,8,9,10};

A.將5個初值依次賦給a[1]至a[5]

B.將5個初值依次賦給a[0]至a[4]

C.將5個初值依次賦給a[6]至a[10]

D.因為數(shù)組長度與初值的個數(shù)不相同,所以此語句不正確

三、看程序寫結果

5.11

main()

{inta[3][3]={{1,0,2},{2,2},{0,2}},c[3][3],i,j;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

c[i][j]=a[a[i][j]][a[j][i]];

printf("%5d",c[i][j]);

}

}

printf("\n");

}

運行結果為:

2

2

0

0

0

2

2

0

1

5.12當運行以下程序時,從鍵盤輸入:Ah2MA

A3ha,c語言程序設計教程答案全文共35頁,當前為第15頁。請寫出輸出結果。

main()

{

char

s[80],c='a';

inti=0;

scanf("%s",s);

while(s[i++]!='\0')

if(s[i]==c)

s[i]=s[i]-32;

else

if(s[i]==c-32)

s[i]=s[i]+32;

puts(s);

}

運行結果為:AH2Ma

四、編程題

5.13用數(shù)組方法定義一個矩陣,求其轉置矩陣。

提示:已知a[3][2],轉置后的結果存放在b[2][3];則b[j][i]=a[i][j];

5.15從鍵盤輸入9個不同的整數(shù),組成三行三列的二元數(shù)組,找出每一列中的最大元素,并輸出其行、列下標。

提示:已知a[3][3],max,row,col分別用來存放一列的最大值,行下標和列下標。

5.15利用一個二維數(shù)組,打印出以下楊輝三角形,要求打印出10行。

c語言程序設計教程答案全文共35頁,當前為第16頁。1

11

121

1331

14641

15101051

提示:定義一個10行10列的二維數(shù)組,并且通過兩重循環(huán)對第1列所有元素賦值1,主對角線也賦值。根據(jù)a[i][j]=a[i-1][j]+a[i-1][j-1]求出其它元素的值。

5.16從鍵盤上輸入一串字符(長度小于50個字符),找出其中最前面的一個X和最后面的一個X之間的子串,并輸出子串的長度。

提示:定義一個長度為81的字符數(shù)組,從左邊查找第一字符'X'的下標,從右邊查找第一個字符'X'的下標。

5.17矩陣A是一個3×3的矩陣,B是一個3×2的矩陣,編程求C=A′B。

提示:定義一個3X2的數(shù)組c[3][2],該數(shù)組的元素值由A數(shù)組的一行元素分別與B的一列元素相乘得到。譬如:c語言程序設計教程答案全文共35頁,當前為第17頁。c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]。

5.18把30個學生的學號和兩門課程的成績輸入到一個二維數(shù)組中,求出的每個學生的兩門課程的總成績也放于此數(shù)組中,請按學生總分的高低打印出成績單(包括學號、兩門課程成績和總分)。

提示:定義一個30行4列的數(shù)組。為了先快速測試算法是否正確?可以定義一個3行4列的數(shù)組,并且通過賦初始值,減少調(diào)試程序時反復輸入數(shù)據(jù)的麻煩,算法調(diào)試成功后在加上輸入數(shù)據(jù)部分。實現(xiàn)從高到低打印出成績可以通過排序(降序);也可以通過另外定義1個一維數(shù)組作為索引,再通過索引打印成績。

5.19不用現(xiàn)有的函數(shù)求計算字符串長度的程序。

提示:通過循環(huán)從前到后計算字符個數(shù),遇到字符串結束標志'\0'結束。

5.20從鍵盤上輸入一串字符,將其逆向顯示。

提示:首先計算字符串的長度,在從右邊逐一顯示字符,直到下標等于0為止。

5.21找出一個二位數(shù)組中的鞍點的位置,即該位置上的元素在該行上最大,在該列上最小。如果有,輸出其所在的行、列號,如果沒有,則輸出提示信息。

提示:先找出行的最大元素,根據(jù)列下標找出列的最大元素。

c語言程序設計教程答案全文共35頁,當前為第18頁。5.22從鍵盤上輸入一串字符,將字符串中的所有A去掉后組成新的字符串,并將兩字符串輸出。

提示:簡單的方法是通過定義兩個一維數(shù)組,逐個讀出原字符串的字符,如果不為'A',則存入目的數(shù)組。當然也可以只用一個一維數(shù)組實現(xiàn),通過兩個下標指示來實現(xiàn)。c語言程序設計教程答案全文共35頁,當前為第13頁。c語言程序設計教程答案全文共35頁,當前為第14頁。c語言程序設計教程答案全文共35頁,當前為第15頁。c語言程序設計教程答案全文共35頁,當前為第16頁。c語言程序設計教程答案全文共35頁,當前為第17頁。c語言程序設計教程答案全文共35頁,當前為第18頁。c語言程序設計教程答案全文共35頁,當前為第19頁。

【習題6】

填空題

6.1C語言程序執(zhí)行的開始處是

main函數(shù)

6.2C程序中的一個函數(shù)由兩部分組成,即

聲明部分

和執(zhí)行部分

6.3為了保證被調(diào)用函數(shù)不返回任何值,其函數(shù)定義的類型應為void

6.4若一個局部變量的存儲類型是static,則該變量的值在程序執(zhí)行完成時被釋放。

6.5預處理命令#include的作用是

文件包含

6.6定義一個宏,功能是判斷兩個數(shù)是否相等,相等為1,不等為0。

#defineEQU(a,b)

(a)==(b)?1:0

6.7變量的存儲類別有自動型

、靜態(tài)型

、寄存器型

、和外部類型

共4種,它們分別用auto、static、register、extern

標識。

選擇題

6.8下述函數(shù)定義形式正確的是(C)。

A.intf(intx;inty)

B.intf(intx,y)

C.intf(intx,inty)

D.intf(x,y:int)

6.9關于函數(shù)參數(shù),說法正確的是(A)。

A.實參與其對應的形參各自占用獨立的內(nèi)存單元

B.實參與其對應的形參共同占用一個內(nèi)存單元

C.只有當實參和形參同名時才占用同一個內(nèi)存單元

D.形參是虛擬的,不占用內(nèi)存單元

6.10用數(shù)組名作為函數(shù)的實參時,傳遞給形參的是(A)。

A.數(shù)組的首地址

B.數(shù)組的第1個元素

C.數(shù)組中的全部元素

D.數(shù)組的元素個數(shù)

6.11復合語句中定義的變量的作用范圍是(D)。

A.整個源文件

B.整個函數(shù)

C.整個程序

D.所定義的復合語句

6.12一個函數(shù)的返回值由(D

)確定。

A.return語句中的表達式

B.調(diào)用函數(shù)的類型

C.系統(tǒng)默認的類型

D.被調(diào)用函數(shù)的類型

6.13在一個C源文件中,若要定義一個只允許本源文件所有函數(shù)使用的全局變量,其他文件中不允許使c語言程序設計教程答案全文共35頁,當前為第20頁。用,則該變量需要使用的存儲類別是(D)。

A.auto

B.register

C.extern

D.static

判斷題

6.14若定義的函數(shù)沒有參數(shù),則函數(shù)名后的圓括號可以省略。(′)

6.15函數(shù)的函數(shù)體可以是空語句(?)。

6.16只有main函數(shù)才能調(diào)用其他函數(shù)。(?)

6.17return語句中表達式的類型必須與函數(shù)定義的類型一致。(′)

6.18函數(shù)的實參和形參可以是相同的名字。(?)

6.19函數(shù)調(diào)用中,形參與實參的類型和個數(shù)必須保持一致。(?)

6.20外部類型的變量只能定義一次,但可在不同地方聲明多次。(?)

6.21外部類型的變量作用范圍大,編程中應多用外部變量。(′)

6.22預處理命令行必須以#開頭,且最后要用分號結尾。(′)

6.23宏命令的處理占用編譯時間,而不占用運行時間。(?)

看程序寫結果

6.24

c語言程序設計教程答案全文共35頁,當前為第21頁。

intfun(intn)

{intf=1;

f=f*n*2;

return(f);

}

main()

{inti,j;

for(i=1;i<=5;i++)

printf("%d\t",fun(i));

}

程序運行結果:2

4

6

8

10

6.25

intx1=30,x2=40;

main()

{intx3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

printf("x1=%d,x2=%d,x3=%d,x4=%d",x1,x2,x3,x4);

}

sub(intx,inty)

c語言程序設計教程答案全文共35頁,當前為第22頁。{intx1=x;

x=y;

y=x1;

}

程序運行結果:x1=30,x2=40,x3=10,x4=20

6.26

#defineA

4

#defineB(x)

A*x/2

main()

{floatc,a=4.5;

c=B(a);

printf("c=%5.1f",c);

}

程序運行結果:c=

9.0

編程題

6.25寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結果。兩個整數(shù)由鍵盤輸入。

提示:最大公約數(shù)可以采用“輾轉相除法”,最小公倍數(shù)將兩數(shù)乘積除于最大公約數(shù)。“輾轉相除法”:設兩個數(shù)分別用m,n表示且m>n,臨時變量c語言程序設計教程答案全文共35頁,當前為第23頁。t,t=m%n;m=n;n=t;直到n等于0。

6.26有3′3的矩陣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ù):①輸入職工的姓名和職工號;②按職工號由小到大排序,姓名順序也隨之調(diào)整;③輸入一個職工號,用折半法找出該職工的姓名,從主函數(shù)輸入要查找的職工號,輸出該職工姓名。

提示:定義一個二維數(shù)組來存放職工信息;用數(shù)組名作函數(shù)的參數(shù)傳遞;通過“起泡算法”或“選擇算法”;折c語言程序設計教程答案全文共35頁,當前為第24頁。c語言程序設計教程答案全文共35頁,當前為第19頁。c語言程序設計教程答案全文共35頁,當前為第20頁。c語言程序設計教程答案全文共35頁,當前為第21頁。c語言程序設計教程答案全文共35頁,當前為第22頁。c語言程序設計教程答案全文共35頁,當前為第23頁。c語言程序設計教程答案全文共35頁,當前為第24頁。c語言程序設計教程答案全文共35頁,當前為第25頁。【習題7】

1.1語句inta,*p=&a;的含義是什么?

答:定義整型變量a,和整型指針變量p,并且p指向變量a。

1.2寫出下列數(shù)組元素的指針法表示。

(1)num[3]

(2)data[4][2]

答:(1)*(num+3)

(2)*(*(data+4)+2)

1.3寫出下列數(shù)組元素的下標法表示。

(1)*(*(a+1)+2)

(2)

(*(a+3))[4]

(3)

*(a[2]+5)

答:(1)a[1][2]

(2)a[3][4]

(3)a[2][5]

1.4分析程序,寫出程序輸出結果。

(1)main()

{

inta[5]={1,2,3,4,5};

int*p=&a[1];

printf("%d",p[2]);

}

輸出結果:4

(2)main()

{chara[]="IloveChina!";

char*p=a;

p=p+2;

printf("%s",p);

}

輸出結果:loveChina!

(3)main()

{

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*pa)[4]=a;

pa++;

printf("%d",*(*(pa+1)+2));

}

輸出結果:11

(4)main()

{char*str[]={"zhao","qian","sun","li"};

inti;

for(i=0;i<4;i++)

printf("%c",str[i][0]);

}

輸出結果:zqsl

(5)voidsub(intx,inty,int*z)

{

*z=y-x;

}

main()

{

c語言程序設計教程答案全文共35頁,當前為第26頁。inta,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

printf("%4d,%4d,%4d\n",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";

inti;

i=fun(str);

printf("%d",i);

}

輸出結果:4

1.5定義語句int*f();和int(*f)();的含義分別是什么?

c語言程序設計教程答案全文共35頁,當前為第27頁。答:int*f();表示函數(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門課程的成績,所以需要使用elseif結構。

1.7輸入一個字符串,內(nèi)有數(shù)字和非數(shù)字字符,例如:

a345dsaf412x?371+89tah74

編程將其中連續(xù)的數(shù)字作為一個證書,一次存放到一個數(shù)組d中,例如:345放在d[0],412放在d[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')=345

1.8編寫把十六進制數(shù)字字符串變換成整數(shù)的函數(shù):inthtoi(char*s)。

提示:同1.7

1.9編寫把十進制整數(shù)變換成二進制數(shù)字字符串的函c語言程序設計教程答案全文共35頁,當前為第28頁。數(shù):char*itob(intn)。

提示:同1.7

1.10用字符指針實現(xiàn)字符串拷貝功能,不能使用庫函數(shù)。

提示:定義兩個字符數(shù)組a,b,復制操作b[i]=a[i];

1.11用字符指針實現(xiàn)字符串連接功能,不能使用庫函數(shù)。

提示:定義兩個字符數(shù)組a,b,先將下標定位到a的末尾'\0',在將b的元素賦值給a的對應元素,注意:別忘了添加字符串結束標志'\0'。

1.12用指向指針的指針的方法對5個字符串排序并輸出。

提示:一個指針數(shù)組和一個指向指針的指針變量。c語言程序設計教程答案全文共35頁,當前為第25頁。c語言程序設計教程答案全文共35頁,當前為第26頁。c語言程序設計教程答案全文共35頁,當前為第27頁。c語言程序設計教程答案全文共35頁,當前為第28頁。c語言程序設計教程答案全文共35頁,當前為第29頁。【習題8】

8.1

定義復數(shù)結構體,并寫出復數(shù)的加、減、乘、除、的計算函數(shù)。

提示:復數(shù)包括兩個部分:實部和虛部。

8.2

定義一個結構體變量(包括年、月、日)。計算該日在本年中是第幾天。注意閏年問題。

提示:計算該日是本年中的第幾天,是從本年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中取出結點,依次按學號升序插入到新的鏈表中。

8.6利用8.8節(jié)中的structcard結構編寫一個程序實現(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。

c語言程序設計教程答案全文共35頁,當前為第30頁。【習題9】

一、簡答題

9.1文件分為哪些類型?各有何特點?

答:文件分為二進制文件和文本(ASCII碼)文件。二進制文件在內(nèi)存和外存的形式是一樣的,無需進行數(shù)據(jù)轉換,用記事本打開該文件,看到得可能是亂碼;文本(ASCII碼)文件在內(nèi)存是按二進制形式存在,在外存是以文本(ASCII碼)形式存在,存在數(shù)據(jù)的轉換,用記事本打開該文件,可以讀懂其中的內(nèi)容。

9.2什么是文件類型指針?什么是文件位置指針?各有何用途?

答:文件類型指針就是用FILE結構體定義的指針變量。文件位置指針是文件存取操作的位置。前者指向被打開的文件;后者在文件存取操作后移動到下一個存取位置。

9.3什么是設備文件?常用的設備文件有哪些?

答:在操作系統(tǒng)中,設備也被看作一個文件進行管理,即設備文件。常用的設備文件有:stdin,stdout,PRN等。

二、選擇題

9.4若想對文本文件只進行讀操作,打開此文件的方式為(

A)。

c語言程序設計教程答案全文共35頁,當前為第31頁。A."r"

B."W"

C."a"

D."r+"

9.5如果要打開C盤file文件夾下的abc.dat文件,fopen函數(shù)中第一個參數(shù)應為(D)。

A.c:file\abc.dat

B.c:\file\abc.dat

C."c:\file\abc.dat"

D."c:\\file\\abc.dat"

9.6用(A)函數(shù)打開文件,操作完畢后用(C)函數(shù)關閉它。

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論