《C語(yǔ)言程序設(shè)計(jì)(第2版)》課后習(xí)題參考答案_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)(第2版)》課后習(xí)題參考答案_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)(第2版)》課后習(xí)題參考答案_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)(第2版)》課后習(xí)題參考答案_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)(第2版)》課后習(xí)題參考答案_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《C語(yǔ)言程序設(shè)計(jì)》(邱曉紅主編)課后習(xí)題參考答案

第1章c語(yǔ)言及程序設(shè)計(jì)概述

1.單選題

(1)A(2)B(3)A(4)B(5)C

2.填空題

(1)//,/*...*/

(2)scanf()

(3)printf()

3.判斷題

(1)對(duì)(2)錯(cuò)(3)錯(cuò)(4)對(duì)

1.4簡(jiǎn)答題

①概述C語(yǔ)言和C語(yǔ)言程序的主要特點(diǎn)。

答:

1.C語(yǔ)言是高級(jí)語(yǔ)言。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來。

2。C語(yǔ)言是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的

信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。

①C語(yǔ)言功能齊全-具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。

②C語(yǔ)言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS,UNIX、LINUX等等:也適用于多種機(jī)型。

②請(qǐng)編程,在計(jì)算機(jī)屏幕上顯示:“您好,歡迎進(jìn)入C語(yǔ)言世界!”

解:

#include<stdio.h>

voidmain()

(

printf("您好,歡迎進(jìn)入c預(yù)言世界!“);

)

第二章:數(shù)據(jù)類型運(yùn)算符與表達(dá)式

1.單選題

(DC(2)D(3)C(4)B(5)C(6)A(7)B(8)D(9)A(10)B

(11)C(12)C(13)D(14)A(15)B(16)C(17)A(18)A(19)B(20)C

(21)C(22)D(23)C(24)A(25)D(26)B(27)C(28)B(29)B(30)A

2.填空題

(1)sqrt(pow(y,x)+log10(y))(2)36

(3)6(4)33

(5)6(6)36

(7)intx=8,y=8;(8)1

(9)E(10)7,9,6,8)

(11)6(12)66,96

(13)240(14)1,1,-1,-1

(15)5,2,6(16)1

(17)!(18)2

(19)(a>0&&a<101)&&(a%3==0||a%7==0)

(20)A

3.程序分析題

(1)27(VC++環(huán)境下,其它編譯環(huán)境可能有不一樣的結(jié)果)

27

49

44

1212

(2)3140

1-6

16

(3)100d68D

97a491

(4)0101

(5)2467

-0.58000007.000000

4

6.580000

7.500000

(6)3

31

21

13130

8

232

(7)6

1830

18

1

(8)1100

4.改錯(cuò)題

(1)①無初始賦值,不能輸出

②數(shù)據(jù)精度丟失

③少號(hào)

④單字符變量不能保存字符串常量

⑤不能連續(xù)初始化

⑥非法標(biāo)識(shí)符

(2)shorti=38000溢出

PI=3.1416常量不能修改值

Printf(t4%d,\x%y)%必須是整數(shù)

a*=(b+c)/=d復(fù)合賦值左邊不能是表達(dá)式

5、

(1)

#include<stdio.h>

intmain()

intH;

floatv,Ll,L2,L,T,sl,M;

prinlf(”請(qǐng)輸入開始里程數(shù),單位為千米:\n'');

scanf("%f;&Ll);

printf(”請(qǐng)輸入結(jié)束里程數(shù),單位為千米:\n*,);

scanf(n%f;&L2);

primf("請(qǐng)輸入時(shí)間,格式為時(shí),分,秒\n”);

scanf("%d,%f,%F,&H,&M,&s1);

T二H+M/60.0+S1/3600.0,將時(shí)間折算成小時(shí);

L=L2-L1;〃計(jì)算出這段時(shí)間走的路程,以千米計(jì):

v=L/T;

printf("%f\n';v);

return0;

(2)

#include<stdio.h>

#definePI3.14

intmain()

(

doubler=2.5,h=5,V;

V=(PI*r*r*h)/3;

primf("%f\n”,V);

return0;

第三章:算法概念與順序結(jié)構(gòu)程序設(shè)計(jì)

1.選擇題

(1)D(2)D(3)D(4)B(5)C(6)A(在16位機(jī)答案為D)(7)B(8)C

(9)B(10)D

2.填空題.

(1)一條語(yǔ)句;

(2)小于左右

(3)%%

(4)輸出項(xiàng)列表輸出控制符

(5)取地址取a的地址

(6)從盤獲取一個(gè)字符

(7)大括號(hào)

(8)f=68.000000

(9)nl=%d\nn2=%d

(10)75c=3

3.程序分析題.

(1)i=100,c=a,f=1.234000

(2)i=65535戶65536

(10)1234,123.5,12345.5

3.4編程題

?編寫一個(gè)程序,交換兩個(gè)數(shù)的值.

#include<stdio.h>

intmain()

inta,bftemp;

scanf("%d%d”,&a,&b);

HM

printf(a=%dzb=%d\nza,b);

temp=a;

a=b;

b=temp;

printf("a=gd,b=%d\n",a,b);

return0;

I

輸入任意一個(gè)4位數(shù)整數(shù),將該數(shù)反序輸出(例如輸入1354,輸出4531)。

#include<stdio.h>

intmain()

{

inta,ans=0;

scanf("%d",&a);

while(a)

(

ans=ans*10+a%10;

a/=10;

)

printf(n%d\n",ans);

return0;

)

①?gòu)逆I盤輸入能夠構(gòu)成三角形的三條邊長(zhǎng),編程計(jì)算該三角形的面積。

#include<stdio.h>

#include<math.h>

intmain()

(

inta,b,c,p;

doubleans;

printf("請(qǐng)輸入a,b,c-);

scanf(n%d%d%d",&a,&b,&c);

if((a+b)>c||(a"b)<c)

{

p=(a+b+c)/2;

ans=sqrt(double(p*(p-a)*(p-b)*(p-c)));

printf("%f\n",ans);

)

else

printf("輸入錯(cuò)誤\n");

return0;

)

(4)編寫程序,用getchar函數(shù)讀入兩個(gè)字符給cl和。2,然后分別用putchar函數(shù)和printf函

數(shù)輸出這兩個(gè)字符。在程序?qū)崿F(xiàn)時(shí)考慮

①變量cl和c2應(yīng)定義為字符型還是整型?還是兩者皆可?

#include<stdio.h>

intmain()

(

intclzc2;

charClzC2;

cl=getchar();getchar();

c2=getchar();getchar();

printfcl);

putchar(c2);putchar(1\n1);

Cl=getchar();getchar();

C2=getchar();

printf(n%c\tn,Cl);

putchar(C2);putchar(1\n1);

return0;

)

②要求輸出cl和c2的ASCII碼,應(yīng)如何處理?

#include<stdio.h>

intmain()

{

charcl,c2;

cl=getchar();getchar();

c2=getchar();getchar();

n

printf(%d\t%d\n"zcl,c2);

return0;

}

第四章:選擇結(jié)構(gòu)程序設(shè)計(jì)

1.選擇題

(1)C(2)B(3)B(4)B(5)D(6)D(7)D(8)A(9)D(有一語(yǔ)句缺

了;,若補(bǔ)齊則答案為B(10)A(11)B(12)B(13)D(14)A(15)C(16)A(17)

C(18)C(19)B(20)D(21)A(22)C(23)A(24)A

2.填空題.

(1)1(2)588

(3)4599(4)2

(5)10200(6)21

(7)-4(8)3

(9)No(10)25

(11)4545(12)0

(13)5.5(14)13

(15)3

3、

(1)參考代碼如下:

#include<stdio.h>

intmain()

(

intx;

printf("請(qǐng)輸入一個(gè)整數(shù):");

scanf(n%d",&x);

if(x%7==0)printf("Yes");

elseprintf("No");

return0;

1

(2)參考代碼如下:

#include<stdio.h>

#include<math.h>

intmain()

(

floata,b,c,s,m;

printf("請(qǐng)輸入三個(gè)數(shù):\n“);

scanf(M%f%f

if((a+b>c)&&(a+c>b)&&(b+c>a))

(

s=(a+b+c)/2;

m=sqrt(s*(s-a)*(s-b)*(s-c));

printf("Theareais:%lf\n",m);

)

elseprintf("輸入的三個(gè)數(shù)不能構(gòu)成三角形)

return0;

(

(3)會(huì)發(fā)現(xiàn)程序1輸出“優(yōu)秀”,程序2輸出“優(yōu)秀”“良好”“中等”“及格”四個(gè),因?yàn)槌绦?使用的是多

分支條件句,運(yùn)行時(shí)只執(zhí)行其中一個(gè),而程序2是多個(gè)條件語(yǔ)句,可以被多次判斷并且執(zhí)行。

(4)參考代碼如下:

#include<stdio.h>

intmain()

intm;

scanf("%d",&m);

switch(m)

(

casel:printf("Monday");break;

case2:printf("Tuesday");break;

case3:printf("Wednesday");break;

case4:printf("Thursday");brcak;

case5:prinlf("Friday");break;

case6:printf("Saturday");brcak;

case7:printf("Sunday");break;

default:printf(,'ErrorH);

1

return0;

)

(5)參考代碼如下:

#include<stdio.h>

intmain()

(

intm,n;

scanf(n%d",&m);

switch(m/10)

(

case1:case2:n=1;break;

case3:n=2;break;

case4:n=3;break;

case5:n=4;break;

default:n=5;

}

printf("%d\n",n);

return0;

)

(6)參考代碼如下:

不嵌套的if語(yǔ)句:

#include<stdio.h>

intmain()

(

intx,y;

printf("請(qǐng)輸入x的值:

scanf(M%d",&x);

if(x<0)

(

y=x;

printf("y=%d';y);

)

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

(

y=x-10;

printf(,'y=%d",y);

1

if(x>=10)

(

y=x+10;

printf(ny=%d'\y);

)

return0;

)

嵌套的if語(yǔ)句:

#include<stdio.h>

intmain()

(

intx,y;

printf("請(qǐng)輸入x的值:”);

scanf("%d”,&x);

if(x>=0)

if(x>=10)

y=x+10;

printf(',y=%d,,,y);

)

else

(

y=x-10;

printf("y=%d'\y);

J

)

else

(

y=x;

printf(”y=%d",y);

)

return0;

I

多分支的if語(yǔ)句:

#include<stdio.h>

intmain()

(

intx,y;

printf("請(qǐng)輸入x的值:”);

scanf("%d",&x);

if(x<0)

{

y=x;

printf(ny=%d",y);

)

elseif(x>=0&&x<10)

(

y=x-10;

printf(ny=%d'\y);

)

else

(

y=x+10;

printf(',y=%d",y);

)

return0;

1

(7)參考代碼如下:

使用多分支if語(yǔ)句:

#include<stdio.h>

intmain()

{

intx;

printf("請(qǐng)輸入x的值:

scanf(n%d",&x);

if(x<60)

printfC'E1');

elseif(x>=60&&x<70)

printf(nDH);

elseif(x>=70&&x<80)

printf(uCn);

elseif(x>=80&&x<90)

printf(nBH);

elseif(x>=90&&x<=100)

printf(HAn);

else

printf("輸入有誤”);

return0;

)

使用switch語(yǔ)句:

#include<stdio.h>

intmain()

intx;

printf("請(qǐng)輸入x的值:”);

scanf(n%d",&x);

switch(x/10)

(

case1:case2:case3:case4:case5:printf(,'E");break;

case6:printf("D");break;

case7:printf(HC");break;

case8:printf("B");break;

case9:case10:printf("A");brcak;

default:printf("輸入有誤)

)

return0;

)

(8)參考代碼如下:

#include<stdio.h>

intmain()

(

intx;

scanf("%d",&x);

printf("請(qǐng)輸入x的值:”);

switch(x)

(

case1:case3:printf("高等數(shù)學(xué)課");break;

case2:case4:printf("程序設(shè)計(jì)課)break;

case5:printf(n外語(yǔ)課)break;

case6:printf("政治課");break;

caseO:prinlf("無課程安排");break;

default:printf("輸入有誤");

I

return0;

第五章:循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

1.選擇題

(1)C(2)A(3)D(4)C(5)D(6)B(7)A(8)A(輸出4444)(9)

B(10)A(11)B(12)C(13)B(缺了循環(huán)體,不完整)(14)C

2.填空題.

(1)r=m;m=n;n=r

m%n

(2)3

(3)-5

(4)i%3==2&&i%5==3&&i%7==2

j%5==0

(5)i==j

j!=k

(6)ints=8,j=i+2

k+i+j==8

(7)8

(8)k&&i<=500k/10continue

①編程實(shí)現(xiàn)對(duì)鍵盤輸入的英文名句子進(jìn)行加密。用加密方法為,當(dāng)內(nèi)容為英文字母時(shí)其在26字母中的其后

三個(gè)字母代替該字母,若為其它字符時(shí)不變。

②#include<stdio.h>

@#include<ctype.h>

?#include<string.h>

@#defineMAX1000

@intmain()

⑧charstr[MAX];

⑨gets(str);

⑩inti,len=strlen(str);

?for(i=0;i<len;i++)

?{

?if(isupper(str[i])||islower(str[i]))

?{

?if(str[i]>=,x*&&str[i]<=,z,)

?str[i]='z1;

@elseif(str[i]>=,X'&&str[i]<='Z*)

?str[i]='Z1;

?else

@str[i]+=3;

21)

22)

23printf(n%s\nn,str);

24return0;

25}

26編程實(shí)現(xiàn)將任意的十進(jìn)制整數(shù)轉(zhuǎn)換成R進(jìn)制數(shù)(R在2-16之間)。

^include<stdio.h>

intmain()

(

intx,r,ans[100],i=0;

printf(〃請(qǐng)?輸?入?十?進(jìn)?制?數(shù)筋x,進(jìn)?制?R:〃);

scanf(,z%d%d/z,&x,&r);

while(x)

(

ans[i++]=x%r;

x/=r;

)

while(i-)

printf(螺d",ans[i]);

printfCXn");

return0;

)

27

28少鍵盤胞入一呼金額[以元大單位;如吧5.78),然后顯示支付該金額的各種面額人民幣數(shù)量,要求

顯示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少?gòu)垺?輸出面額最大值:

比如345?78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8)

#include<stdio.h>

intmain()

(

longx,y,f;

doublen;

intx_100,x_50,x_10,x_5,x_2,x_l,y_5,y_l,f_5,f_l;

x_100=x_50=x10=x_5=x_2=x_.l=y_5=y_l=f_5=f1=0;

scanf&n);

x=int(n);

x_100=x/100;x%=100;

x_50=x/50;x%=50;

x_10=x/10;x%=10;

x_5=x/5;x%=5;

x_2=x/2;x%=2;

x_l=x/l;

n*=10;y=int(n)%10;

y_5=y/5;y%=5;

y_i=y/i;

n*=10;f=int(n)%10;

f_5=f/5;f%=5;

f_l=f/l;

printf(/z100元a\t:%d\n50元a\t:%d\nlO元a\t:%d\n5元a\t:%d\n2元a\t:%d\nl元a\t:%d\n5

角?\t:%d\nl角?\t:%d\n5分?分?x_100,x50,x10,x5,x2,x1,y_5,y1,f5,f_l);

return0;

}

29

30隨機(jī)產(chǎn)生20個(gè)[10,50]的正整數(shù)存放到數(shù)組中,并求數(shù)組中的所有元素最大值、最小值、平均值及各

元素之和。

#include<stdio.h>

^include<stdlib.h>

^defineINF10000

intmain()

(

inti,arr[20],sum=0,max=-INF,min=INF;

doubleaver;

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

{

arr[i]=rand();

sum+=arr[i];

if(arr[i]>max)max=arr[i];

if(arr[i]<min)min=arr[i];

}

aver=(doub1e)sum/20;

printf(〃max=%d\nmin=%d\nsum=%d\naver=%lf\n”,max,min,sum,aver);

return0;

)

31

32試編程判斷輸入的正整數(shù)是否既是5又是7的整倍數(shù)。若是,則輸出yes,否則輸出no.

#include<stdio.h>

intmainO

(

intx;

scanf&x);

if(!(x%5)&&!(x%7))

printf(〃yes\n〃);

else

printf("no\n〃);

return0;

)

33

34編寫程序?qū)崿F(xiàn)功能:用戶從鍵盤輸入?行字符,分別統(tǒng)計(jì)出其英文字母和數(shù)字字符的個(gè)數(shù)(不記回車符號(hào))。

#include<stdio.h>

^include<ctype.h>

#include<string.h>

intmainO

(

charstr[100];

gets(str);

inti,len=strlen(str),a=0,x=0;

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

(

if(isalpha(str[i]))

a++;

if(isdigit(str[i]))

x++;

}

printf("alpha:%d\nnumber:%d\n〃,a,x);

return0;

}

35

36編程在一個(gè)已知的字符串中查找最長(zhǎng)單詞,假定字符串中只含字母和空格,空格用來分隔不同單詞。

#include<stdio.h>

#include<ctype.h>

^include<string.h>

intmain()

(

charstr[100];

gets(str);

inti,len=strlen(str),a=0,max=0;

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

(

if(isalpha(str[i]))

(

a++;

if(a>max)max=a;

)

if(isspace(str[i]))

a=0;

)

printf(*maxlenghl:%d\n”,max);

return0;

)

37

38模擬n個(gè)人參加選舉的過程,并輸出選舉結(jié)果:假設(shè)候選人有四人,分別用A、B、C、D表示,當(dāng)選某候

選人時(shí)直接輸入其編號(hào)(編號(hào)由計(jì)算機(jī)隨機(jī)產(chǎn)生),若輸入的不是A、B、C、D則視為無效票,選舉結(jié)束后按

得票數(shù)從高到低輸出候選人編號(hào)和所得票數(shù)。

#include<stdio.h>

^include<stdlib.h>

^include<ctype.h>

^include<string.h>

intmain()

(

intn,a=0,b=0,c=0,d=0;

charx;

scanf&n);

while(n--)

(

x=rand();

switch(x)

(

case'a':

case'A':a++;break;

case'b':

case'B':b++;break;

case'c:

case'C':c++;break;

case'd':

case'D':d++;break;

default:break;

)

}

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

{

if(a>b&&a>c&&a>d)

(

printf(〃A:%d\n”,a);

a=0;

}

elseif(b>a&&a>c&&a>d)

(

printf(〃B:%d\n',b);

b=0;

}

elseif(c>b&&c>a&&c>d)

(

printf('C:%d\n”,c);

c=0;

)

elseif(d>b&&d>c&&d>a)

(

printf("D:%d\n〃,d);

d=0;

)

}

if(a)

printf("A:%d\n〃,a);

if(b)

printf('B:%d\n",b);

if(c)

printf(〃C:%d\n",c);

if(d)

printf(〃D:%d\n”,d);

return0;

(9)任何一個(gè)自然數(shù)m的立方均可寫成m個(gè)連續(xù)奇數(shù)之和。例如:

17=1

2人3=3+5

3人3=7+9+11

4人3=13+15+17+19

編程實(shí)現(xiàn):輸入一自然數(shù)n,求組成2的n個(gè)連續(xù)奇數(shù)。

#include<stdio.h>

intmain()

(

inti;

intn;

printf("輸?入?一?個(gè)?自?然?數(shù)篇:");

scanf("%d",&n);

if(n<0)

(

printf("輸?入?數(shù)露據(jù)丫有甑錯(cuò)洙?誤6");

)

else

{

printf("%d"3=",n);

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

if(i!=n-l)

printf("%d+”,n*(n-l)+l+2*i);

else

prinlf(〃%d\n〃,n*(nT)+l+2*i);

)

}

return0;

}

(9)分別編寫程序,打印以下各圖案。

/、(b)

(a)

1

a

234

ab

56789

abc

0123456

…789012345

ab..z

6789012345

(a)#include<stdio.h>

intmain()

(

inti,j;

for(i=l;i<=26;i++)

(

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

printf(z,%c'a+j);

printfC\nO;

}

return0;

}

(b)#include<stdio.h>

intmain()

(

inti,j,x=O;

for(i=l;i<=10;i++)

{

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

(

if(++x>9)x-=10;

printf(/z%d〃,x);

)

printf(〃\n〃);

)

return0;

第六章:數(shù)組

1.選擇題

(1)B(2)C(3)D(4)D(5)B(6)C(7)B(8)A(9)A(10)D

2.填空題.

(1)按行序優(yōu)先的原則

(2)09

(3)0

(4)12

(5)6

(6)前者以回車后者以空格或回車作為間隔符

(7)strcpy(gets。函數(shù)是鍵盤輸入字符串)

(8)&a|i++]

(9)k)/2+1

(10)98

3.程序分析題.

(1)13715

(2)123

056

009

(3)讀取輸入字符串中數(shù)字字符

(4)?if(strl==str2)(strcmp(strl,str2)==0)

②&cl⑼

6.4編程題

編寫程序,查找數(shù)組中的最大元素和最小元素。

#include<stdio.h>

#defineMAX1000

voidmain(){

inta[MAX]={100,2,3,4,5,6};//假定數(shù)組為整數(shù),

intlenght=6;//用于確定數(shù)組的長(zhǎng)度;

intmax,min;//用于保存最大值和最小值;

inti;

max=a[0];//開始的參考數(shù)

min=a[0]”/同上

for(i=l;i<lenght;i++)//(1)

(

if(max<a[i])

max=a[i];

if(min>a[i])

min=a[i];

)

printf(nthemaxis:%d\n”,max);//輸出最大值

printf("theminis:%d\n”,min);//輸出最小值

)

//為了尋找最大值和最小值,我對(duì)整個(gè)數(shù)組進(jìn)行判斷(1);當(dāng)當(dāng)前數(shù)組元素值比max的數(shù)值大時(shí),就把

max的值更新為當(dāng)前數(shù)組元素的值,

//

有15個(gè)整數(shù)按升序提排列,現(xiàn)輸入一個(gè)數(shù),請(qǐng)寫程序,用折半查找法判斷該數(shù)在序列中是否存在,若存

在則指出是第幾個(gè)。

#include<stdio.h>

voidmain()

(

inta[15];//用于存15個(gè)整數(shù);

inti;

intmid;

intkey;

intok=0;

intnum;

printf(”請(qǐng)輸入15個(gè)數(shù)(數(shù)與數(shù)用空格隔開)\n”);

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

scanf(n%dH,&a[i]);

printf(”請(qǐng)輸入需要判斷的數(shù)\n");

scanf(*'%d",&key);

mid=a[6];

if(mid<=key)

for(i=6;i<15;i++)

(

if(a[i]==key)

(

ok=l;

num=i+l;

)

)

elsefor(i=0i++)

{

if(a[i]=key)

(

ok=l;

num=i+l;

)

)

if(ok==l)

printf("存在,是第%<1個(gè)\n",num);

elseprintf("不存在\n");

)

//因?yàn)檎麄€(gè)數(shù)組是升序數(shù)組所以需要判斷的數(shù)要是比中間的數(shù)大,就〃在數(shù)組的右邊,否則就在數(shù)組的左

邊,只需循環(huán)左邊或右邊就能判〃斷出需要判斷數(shù)的位置和是否存在整個(gè)數(shù)組中,

(3)尋找一個(gè)整型二維數(shù)組的“鞍點(diǎn)”,所謂“鞍點(diǎn)”就是這樣一個(gè)元素,該元素在所在行中值是最小,

在所在列中值是最大。如果存在,則輸出“鞍點(diǎn)”所在的行、列及其“鞍點(diǎn)”得值。

#include<stdio.h>

intmain()

(

inta[3][3]={],3,1,1,1,4,12,7,11};〃用于存二維數(shù)組;

intline=3;〃行

intlinel;

intlist=3;//歹l]

intlistl;

int

intok=0;

intokl=0;

intmaxzmin;

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

(

for(p=0;p<list;p++)

(

listl=p;

for(j=0;j++)

if(a[i][p]<=a[i][j])

okl=l;

else

okl=0;

if(okl==l)

(

linel=i;

ok=l;

for(k=0;k<line;k++)

if(a[i][p]<a[k][listl])

ok=0;

if(ok==l)

break;

)

}

)

if(ok=l)

printf("存在“鞍點(diǎn)”,“鞍點(diǎn)”在第%d行第%(1列\(zhòng)11”,11]^1+1,1*七1+1);

elseprintf("不存在\n”);

return0;

)

〃先尋找行中最小值,在這基礎(chǔ)上,判斷這個(gè)最小值是否是列中最小值。

第七章:函數(shù)的調(diào)用

1.選擇題

(1)B(2)C(3)C(4)A(5)A(6)D(7)D(8)D(9)B(10)D(11)A

(12)A(13)B(14)B

2.填空題.

(1)標(biāo)準(zhǔn)庫(kù)函數(shù)自定義函數(shù)(若從函數(shù)的形式上,有參無參

(2)順序類型

(3)定義調(diào)用

(4)①fmax(a,N)②k=p(注意非s[k]=s[p])

(5)@age(n-1)+2②age(n)

(6)①prt(c,n-l)②prt('\n-i)③prt('*',2*i-l)

3.程序分析題.

(1)h1o

(2)3

(3)26

(4)21

(4)525

7.4編程題

①編寫一遞歸函數(shù)求斐波納契數(shù)列的前40項(xiàng)。

解:

1.#include<stdio.h>

intfib(intn)

(

if(n==l||n==2)

return1;

returnfib(n-1)+fib(n-2);

)

intmain()

(

intn;

n

scanf(%d"z&n);

printf("%d\n",fib(n));

return0;

}

①編寫程序,輸入長(zhǎng)方體的長(zhǎng)寬高求體積及三個(gè)面l*w,l*h,w*h的面積。

#include<stdio.h>

voiduboid(float1,floatw,floath)

(

printf("體積=%.215”,1*亞*11);

printf("l*w=%.2f\n",l*w);

printf(”l*h=%.2f\n”,l*h);

printf(',h*w=%.2f\n",h*w);

)

intmain()

(

floatll,ww,hh;

scanf(,,%f%f%f',&ll,&ww,&hh);

uboid(ll,ww,hh);

return0;

①編寫程序,使給定的一個(gè)5x5的二維整型數(shù)組轉(zhuǎn)置,即行列互換。

#include<stdio.h>

intmain()

(

inta[5][5],b[5][5],i,j;

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

(

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

(

scanf("%d",&a[i][j]);

b[j][i]=a[i][j];

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

(

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

printf(',%d\b[i][j]);

printf(n\n");

}

return0;

①編寫程序,輸入一個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。

#include<stdio.h>

intmain()

{

longintfunc(chars[]);

charstr[100];

charc;

inti=0;

intflag,flagl;

flag=0;

flagl=l;

printf(ninputahexnumber:n);

while((c=getchar())!='\0'&&i<100&&flagl)

(

if((c<='91&&c>='0T)||(c<=1F'&&c>=*A')||(c<='f*&&c>=,a1))

{

flag=l;

str[i++]=c;

)

elseif(flag)

{

str[i]=*\0';

printf("decimalnumber%ld:\n",func(str));//

printf("Continueornot?”);

c=getchar();

if(c=='n,||c=='N1)

flagl=0;

elseif(c==,y'||c==fY')

(

flag=0;

i=0;

printf("\npleaseinputahexnumber:");

}

)

)

)

longintfunc(chars[])

{

longintnum=0;

inti=0;

for(i=0;s[i]!='\0*;i++)

{

if(s[i]>=,0,&&s[i]<=,9,)//字符串!!!!!!

num=num*16+s[i]-101;

elseif(s[i]>=,a,&&s[i]<=,f)

num=num*16+s[i]-*a'+10;

elseif(s[i]>=,A'&&s[i]<=,F,)

num=num*16+s[i]-1A*+10;

}

returnnum;

)

①編寫程序,使輸入的一個(gè)字符串按反序存放。

#include<stdio.h>

#include<string.h>

intmain()

(

chara[100];

gets(a);

intl=strlen(a);

inti;

for(i=l-l;i>=0;i-)

nn

printf(%cza[i]);

return0;

)

習(xí)題八

8.1選擇題

(1)C(2)B(3)A(4)C(5)A(6)C(7)B(8)D(9)A(10)B(11)C(12)D(13)C(14)A(15)D

8.2填空題

①返回值為指針的函數(shù)f指向一個(gè)函數(shù)的指針

②地址變量

③0

④int*z

⑤*(p+5)

⑥a+i&a[i]*(a+i)

⑦*(a+i)+j&a[i]|j]

指向數(shù)組的指針數(shù)組開頭的集合

@4

⑨指針的數(shù)組

(10)指針的數(shù)組指向數(shù)組4元素的指針

8.3程序設(shè)計(jì)

①編寫一個(gè)程序計(jì)算一個(gè)字符串的長(zhǎng)度。

#include<stdio.h>

intcompute(char*p)

(

intsum=0;

while(l)

(

if(*p!='\0')

(

sum++;

p=p+l;

)

elsebreak;

)

returnsum;

)

voidmain()

(

chara[1000];

intlenght;

scanf("%s",&a);

lenght=compule(a);

printf("字符串的長(zhǎng)度是:%d\n",lenght);

〃在儲(chǔ)存字符數(shù)組時(shí),以\0為結(jié)尾標(biāo)志,可以利用這個(gè)特點(diǎn)。

②編寫一個(gè)程序,當(dāng)鍵盤輸入整數(shù)為1到12時(shí),解釋顯示相應(yīng)的英文月份名,鍵入其它整數(shù)時(shí)顯示錯(cuò)誤信

息。

#include<stdio.h>

voidmain()

(

intnum;

scanf("%d”,&num);

switch(num)

(

case1:printf("January\nM);break;

case2:printf("Februaiy\n");break;

case3:printf("lMarch\n*');break;

case4:printf("April\n");break;

case5:printf("May\n");break;

case6:printf("June\n");break;

case7:printf("July\n");break;

case8:printf("August\n");break;

case9:printf("September\n',);break;

case10:pnntf("October\n");break;

case11:printf("November\n");break;

case12:printf("December\n");break;

default:printf("ERRO\nn);

}

}

〃簡(jiǎn)單switch用法

③編一程序,將字符串software賦給一個(gè)字符數(shù)組,然后從第一個(gè)字母開始間隔地輸出該串。請(qǐng)用指針完

成。

#include<stdio.h>

voidmain()

(

chara[]="software";

inti;

fbr(i=0;i<8;i=i+2)

printf(n%c",*a+i);

printf("\n^^);

)

④編一程序,將字符串中的第m個(gè)字符開始的字符子串復(fù)制成另一個(gè)字符串。要求在主函數(shù)中輸入字符串

及m的值并輸出復(fù)制結(jié)果,在被調(diào)函數(shù)中完成復(fù)制。

#include<stdio.h>

#include<string.h>

voidcopy(char*p,intlenghtjntm,char*p2)

inti;

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

*(p2+i)=*(p+i+m-1);

)

voidmain()

(

chara|1000|;

chara2[1000];

char*p3;

intlen;

intm;

inti;

gets(a);

scanf(n%d",&m);

len=strlen(a);

copy(a,len,m,a2);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論