c語言程序設(shè)計(jì)教程2024韓立毛徐秀芳書后練習(xí)題參考答案_第1頁
c語言程序設(shè)計(jì)教程2024韓立毛徐秀芳書后練習(xí)題參考答案_第2頁
c語言程序設(shè)計(jì)教程2024韓立毛徐秀芳書后練習(xí)題參考答案_第3頁
c語言程序設(shè)計(jì)教程2024韓立毛徐秀芳書后練習(xí)題參考答案_第4頁
c語言程序設(shè)計(jì)教程2024韓立毛徐秀芳書后練習(xí)題參考答案_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

練習(xí)題1參考答案

一、選擇題

序號(hào)12345678

參考答案ACADCCCA

二、填空題

1.程序設(shè)計(jì)語言主要分為以下三類:機(jī)器語言、匯編語言和高級(jí)語言°

2.在C語言中,一個(gè)因數(shù)一般由兩個(gè)部分組成,它們是困數(shù)百部和函數(shù)體。

3.C程序開發(fā)過程的一般步驟為:源程序的編輯、編譯、連接和運(yùn)行。

4.C程序源文件的擴(kuò)展名為」—,編譯勝利后產(chǎn)生的文件擴(kuò)展名為汕—,連接勝

利后產(chǎn)生文件擴(kuò)展名為.exe。

三、應(yīng)用題

練習(xí)題2參考答案

一、選擇題

序號(hào)12345678910

參考答案BACCBABBDc

序號(hào)1112131415

參考答案ABCAC

二、填空題

1.通常一個(gè)字節(jié)包含8個(gè)二進(jìn)制位。在一個(gè)字節(jié)中能存放的最大(十進(jìn)制)整

數(shù)是一255(無符號(hào)),127(帶符號(hào)),最小(十進(jìn)制)整數(shù)息-128,它的

二進(jìn)制數(shù)的形式是一10000000。

2.在C語言中,十進(jìn)制數(shù)30的八進(jìn)制數(shù)表示形式是036,十六進(jìn)制數(shù)表示形式

是一Oxle,在內(nèi)存中它的二進(jìn)制數(shù)表示形式是0000000000011110。

3.條件“20<x<30或x<-100w的C語言表達(dá)式是x〉20&&x〈30Mx〈-100。

4.若a、b和c均是int型變量,則計(jì)算表達(dá)式a=(b=4)+(c=2)后,a值為6,b

值為4,c值為2。

5.已知inty;floatx=-3;,執(zhí)行語句丫=乂%2;后,變量y的值為語句出錯(cuò)。

6.字符串”ab\034\\\x79”的長度為5。

7.在C語言中(以16位PC機(jī)為例),一個(gè)float型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)為

4;一個(gè)double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為8。

8.若s是ini型變量,且s-6,則s%2十(s十1)%2表達(dá)式的值為1。

9.表達(dá)式pow(2.8,scrt(double(x)))值的數(shù)據(jù)類型為double。

10.若a是int型變量,則表達(dá)式(a=4*5,a*2),a+6的值為26。

11.若a是int型變量,則執(zhí)行表達(dá)式a=25/3%3后a的值為2°

12.若i為int整型變量且賦值為6,則運(yùn)算i++后表達(dá)式的值是一6,變量i的

值是7。

13.若x為int型變量,執(zhí)行語句:*=10"+內(nèi)-力-、;則乂的值為20。

14.若x和y為double型變量,則表達(dá)式x=l,y=x+3/2的值是2.000000。

15.(-b+sqrt(b*b-4*a*c))/(2*a)的數(shù)學(xué)式子是[-b+J(b-2-4ac)]/2a

16.sqrt(p*(p-a)*(p-b)*(p-c))的數(shù)學(xué)式子是J[p*(p-a)*(p-b)*(p-c)]。

17.推斷某一年份是否為閏年的表達(dá)式是(ycar%4==0||ycar%100==0)&&ycar%400!=0)o

18.用隨機(jī)函數(shù)rand()產(chǎn)生一個(gè)在[-20,20]兩位整數(shù)的表達(dá)式是x-rand0%11-20。

三、閱讀分析下列程序。

1.寫出下列程序的輸出結(jié)果。

18

2.已知字母B的ASCII碼為66,寫出下列程序的輸出結(jié)果。

67,E

3.寫出下列程序的輸出結(jié)果。

a=4,b=3

練習(xí)題3參考答案

一、選擇題

序號(hào)12345678910

參考答案DBDDCDDBBA

二、填空題

1.c語句句尾用尾號(hào)結(jié)束。

2.若有變量定義:inta=l,b=2,c=3,d=4,x=5,y=6;則表達(dá)式(x=a>b)&&(y=c>d)的值為

0o

3.運(yùn)用強(qiáng)制轉(zhuǎn)換方法將正整數(shù)轉(zhuǎn)換成字符。本題程序如下:

本程序的執(zhí)行結(jié)果為輸入一個(gè)正整數(shù)(小于255):97

a的ASCII碼為97°

4.下面程序的輸出是TOO,5()

1=-100,j=50

i=-100

F50。

5.執(zhí)行以下程序時(shí),若從第一列起先輸入數(shù)據(jù),為使變最a=2,b=8,x=6.5,y=56.62,

el='C,c2='b',正確的數(shù)據(jù)輸入形式是a=2b=8x=6.5y=56.62cl=Cc2=b。

三、程序設(shè)計(jì)題

1.編寫程序交換兩個(gè)變量a,b的值,并輸出。如輸入時(shí)a=3,序5,輸出a=5,b=3.

#include<stdio.h>

voidmain()

(

inta,b,c;

printf("輸入兩個(gè)數(shù):a,b");

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

c=a;

a=b;

b=c;

printf("a=%d,b=%dw,a,b);

)

2.編寫程序輸入小寫字符boy,輸出大寫字符BOY。

#include<stdio.h>

voidmain()

charc;

printf(wInput:");

scanf("%c",&c);

c=c-32;

printf("%c",c);

)

3.已知華氏溫度與攝氏溫度的轉(zhuǎn)換公式為:C=(F-32)*5/90編寫程序當(dāng)輸入華氏溫度F

時(shí),愉出對(duì)應(yīng)的攝氏溫度,

#include<stdio.h>

voidmain()

{floatF;

scanf(“%f",&F);

printf(,(F-32)*5/9);}

4.設(shè)圓的半徑r=1.5,圓柱高h(yuǎn)=3,編寫程序求圓周長、圓面積、圓球表面積、圓球體

積及圓柱體積。用scanf函數(shù)輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取小數(shù)點(diǎn)

后2位數(shù)字。

nclude<stdio.h>

intmainO

{floath,r,1,s,sq,vq,vz;

floatpi=3.141592;

printf(“請(qǐng)輸入圓半徑r,圓柱高h(yuǎn):");

scanf(,&r,&h);

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=3.0/4.0*pi*r*r*r;

vz=pi*r*r*h;

printf(“圓周長為:l=%6.2f\nM,1);

printf(“圓面積為:s=%6.2f\nw,s);

printf(“圓球表面積為:sq=%6.2f\n",sq);

printf("圓球體積為:vq=%6.2f\n",vq);

printf(“圓柱體積為:vz=%6.2f\n",vz);

ruturn0;}

5.編寫程序輸入梯形的上底下a,底b和高h(yuǎn),輸出該梯形的面積。

#include<stdio.h>

voidmain。

{floata,b,h,s;

printf(“請(qǐng)輸入梯形上底,下底和高:\n");

scanf(rt%f%f%fw,&a,&b,&h);

s=(a+b)*h/2;

printf(“梯形面積為:%f\nw,s);}

6.編寫程序?qū)ⅰ癈hina〃譯成密碼,密碼規(guī)律是:用原來的字母后面第4個(gè)字母代替原來

的字母。例如,字母〃A〃后面第4個(gè)字母是"E",用〃E〃代替"〃。因此,“China”應(yīng)譯為"Glmre”。

三、程序設(shè)計(jì)題

1.編寫程序輸入有3個(gè)整數(shù)a、b、c,并依據(jù)從小到大的依次輸出。

ftinclude<stdio.h>

intmain()

{inta,b,c,t;

printf("pleaseinputabc\n");

scanf(a%d%d%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=c;c=t;(

printf("%d,與d,%d\n”,a,b,c);

return0;}

2.有一個(gè)函數(shù):

xx<\

y=-2,v-ll<x<10

3x-llx>10

編寫一個(gè)程序,輸入x的值,輸出y的值。

#include<stdio.h>

intmainO

(intx,y;

printf(“輸入x:");

scanf("%d",&x);

if(x<l)

{y=x;

a

printf(x=%dyy=x=%d\n”,x,y);}

elseif(x<10)

{y=2*x-l;

printf(ax=%d.y=2*xT=%d\n",x,y);}

else

{y=3*x-ll;

printf(ax=%d,y=3*x-ll=%d\nw,x,y);)

return0;}

3.輸入學(xué)生的百分制成果,要求輸出學(xué)生的成果、等級(jí)以及相應(yīng)的評(píng)語。設(shè)用'A'、,B'、

‘C'、,D'、'E'五個(gè)等級(jí),且90分以上為等級(jí)”',評(píng)語為“成果優(yōu)秀”,80-89分為等

級(jí)'B',評(píng)語為“成果良好”,70-79分為等級(jí)'C',評(píng)語為"成果中等”,60-69分為等級(jí)

'D',評(píng)語為“成果及格”,60分以下為等級(jí)'E',評(píng)語為“成果不及格”。分別用if條件

語句和switch開關(guān)語句編寫程序。

方法一:if條件語句

#includc<stdio.h>

voidmainO

intscore;

printf("輸入成果:”);

scanf&score);

if(score>100Iscore<0)

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

elseif(score>=90)

printf("成果為%d,等級(jí)為A,成果優(yōu)秀\n”,score);

elseif(score>=80)

printf("成果為%d,等級(jí)為B,成果良好\n”,score);

elseif(score>=70)

printf("成果為%d,等級(jí)為C,成果中等\n”,score);

elseif(score>=60)

printf("成果為舟d,等級(jí)為D,成果及格\n”,score);

else

printf(〃成果為與d,等級(jí)為E,成果不及格\n〃,score);

}

方法二:switch開關(guān)語句

#include<stdio.h>

voidmain(){

intscore;

printf("輸入成果:”);

sccinf("*d”,&score);

if(score>100IIscore<0)

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

else

switch(score/10)

case10:

case9:

printf(〃成果為%d,等級(jí)為A,成果優(yōu)秀\n”,score);break;

case8:

printf(〃成果為%d,等級(jí)為B,成果良好\n〃,score);break;

case7:

printf("成果為為d,等級(jí)為C,成果中等\n〃,score);break;

case6:

printf("成果為國d,等級(jí)為D,成果及格\n〃,score);break;

default:

prinlf("成果為%d,等級(jí)為E,成果不及格\n",score);

}

}

4.編寫程序輸入三個(gè)整數(shù),推斷它們是否能夠構(gòu)成三角形。若能構(gòu)成三角形,則輸出

三角形的類型(等邊三角形、等腰三角形、一般三角形),并計(jì)算三角形的面積;若不能構(gòu)

成三角形,則輸出“不能構(gòu)成三角形”的信息。

#include<stdio.h>

#include<math.h>

voidmain()

floata,b,c,s,t;

printf("inputa,b,c'n");

scanfC%f%f%fz;&a,如,&c);

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

(

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

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

if(a==b&&b==c)

{printf("這是等邊三角形,面積為與f'n",s);)

elseif((a==b)i&(b!=c)||(b==c)&&(a!=c)||(a==c)&&(a!=b))

{printf(〃這是等腰三角形,面積為昭\n”,s);)

elseprintf("這是一般三角形,面積為5f\n",s);

1

else

printf(〃不能構(gòu)成三角形〃);

)

5.編寫程序在屏幕上顯示一張如下所示的時(shí)辰表:

*****Time*****

1morning

2afternoon

3night

Pleaseenteryourchoice(l-3):

操作人員依據(jù)提示進(jìn)行選擇,程序依據(jù)輸入的時(shí)間序號(hào)顯示相應(yīng)的問候信息,選擇1

時(shí)顯示"Goodmorning”,選擇2時(shí)顯示“Goodafternoon”,選擇3時(shí)顯示“Goodnight",

對(duì)于其他選擇顯示"Selectionerror!”。

#include<stdio.h>

voidmainO

(

intn;

printfC*****Timo******\nlmorning'n");

printf(/z2afternonn\n3night'n");

printf(z,Plcaseenteryourchoice(l-3):\nw);

scanf&n);

switch(n){

case1:printf('Goodmorning\nz,);break;

case2:printf("Goodafternoon\n,z);break;

case3:printf(z,Goodnight\n/,);break;

default:printf(''Selectionerror!\r),/);

)

)

6.設(shè)銀行整存整取不同期限的月利率分別為:一年定期為0.63%;二年定期為0.66%;

三年定期為0.69知五年定期為0.75與;八年定期為0.84機(jī)要求輸入存款的本金和期限,

求到期能從銀行得到的本金和利息的合計(jì)。分別用if語句和switch語句編與程序。

#include<stdio.h>

voidmain()

(

constdoubleratc[]=(0.0063,0.0066,0.0069,0.0075,0.0084};

intyears=0;

floatinit=0;

doublesum=0;

printf(^Xnlnputinitialamountofmoney/);

scanf("%f”,&init);

printf(^XnTypeinsaveperiodinyears:");

scanf(“與d”,&yoars);

if(years==l||years==2||years==3||years==5||years==8)

(

if(ycars==l)

sum=init*(l+rate[0]*12*years);

else

if(years==2)

sum=init*(l+rate[l]*12*years);

else

if(years==3)

sum=init*(l+rate[2]*12*ycars);

else

if(ycars==5)

sum=init*(l+rate[3]*12*years);

else

sum=init*(l+rate[4]*I2*years);

printf(^XnTotalamountafter%dyears:%.2f\n*,years,sum);

)

else

{

printf(^\n'Vrongnumber,Pleasetypeinyearsagain:;

scanf(“%d”,&years);

}

1

7.編寫程序計(jì)算個(gè)人所得稅。個(gè)人所得稅的計(jì)算方法:(實(shí)發(fā)工資-3500)*稅率-扣除數(shù),

設(shè)個(gè)人所得稅起征點(diǎn)為3E00元。共分為7級(jí),詳細(xì)如下:

級(jí)數(shù)應(yīng)納稅額稅率(%)扣除數(shù)

1不超過1500元的30

2超過1500元至4500元的部分10105

3超過4500元至9000元的部分20555

4超過9000元至35000元的部分251005

5超過35000元至55000元的部分302755

6超過55000元至80000元的部分355505

7超過80000元的部分4513505

#include<stdio.h>

voidmain()

(

floata;〃實(shí)發(fā)工資

floatb;〃應(yīng)納稅部分工資

floats;〃稅率

floatkouchu;//扣除數(shù)

floatptax;〃個(gè)人所得稅

printf("輸入工資:“);

scanf&a);

b=a-3500;

if(b>0&&b<=1500)

(s=0.03;kouchu=0;}

elseif(b<=4500)

{s=0.1;kouchu=105;}

elseif(b<=9000)

{s=0.2;kouchu=555;}

elseif(b<=35000)

{s=0.25;kouchu=1005;}

elseif(b<=55000)

{s=0.3;kouchu=2755;}

elseif(b<=800D0)

{s=0.35;kouchu=5505;}

else

(s=0.45;kouchu=13505;}

ptax=b*s-kouchu;

printf("個(gè)人所得稅為ptax);

)

8.編寫程序計(jì)算貨款。設(shè)按購買貨物款的多少分別賜予不同的實(shí)惠折扣,購貨不足250

元,沒有折扣;購貨25()元(含250元,下同),不足50()元,減價(jià)5%;購貨500元,不足

1000元,減價(jià)7.5%:購貨1000元,不足2000元,減價(jià)1C%;購貨2000元及以上,減價(jià)15%。

#include<stdio.h>

voidmain()

{floatm,d,t;

prinlf(〃請(qǐng)輸入購物金額:〃);

scanf&m);

if(m<250)

d=0;

elseif(m<500)

d=0.05;

elseif(m<1000)

d=0.075;

elseif(m<2000)

d=0.1;

else

d=O.15;

t=m*(l-d);

printf(〃實(shí)際應(yīng)付金額*f”,t);

)

9.給一個(gè)不多于5位的正整數(shù),編寫程序?qū)崿F(xiàn):(1)求出它是幾位數(shù);(2)分別輸出每

一位數(shù)字;(3)按逆序輸出各位數(shù)字。

ttinclude<stdio.h>

intmain()

(inti,j,a,b,c,d,k=0,n=0,s=l00000,t=10,p;

scanf(線d",&a);

P=a;〃保存原始輸入值,后面用到

if(p/s!=O)〃超過5位數(shù),干脆錯(cuò)誤提示,程序結(jié)束。

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

else

(printf("逆序輸出各位數(shù)字:〃);

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

{b=a;

if(b!=0)

{k++;

b=a%t;〃對(duì)10求余可得個(gè)十百千萬位

printf('%d",b);

a=a/t;

)

)

printf(,z\n%d是個(gè)%d位數(shù)\n",p,k);

printf("正序輸出各位數(shù)字:");

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

(

c=p;

d=c/s%10;//除以s后對(duì)10求余可得萬千百十個(gè)位

s=s/10;〃s要依次/10,求解后面的數(shù)值

if(d!=0)

printf(?,%d",d);

}

printf;

}

return0;

}

10.編寫程序?qū)?shù)據(jù)進(jìn)行加密。設(shè)加密方法為:對(duì)隨意給定的4位整數(shù),每一位數(shù)字均

加2,若某位數(shù)字加2后大于9,則取其除以10的余數(shù),如數(shù)據(jù)6987加密后的數(shù)據(jù)為8109。

#include<stdio.h>

voidmain()

(

inta,b,c,d,m;

scanf("%d",&m);

a=m%10+2;if(a>=10)a=a%10;

b=m/l()%IO+2;if(b>=IO)b=b%IO;

c=m/100%10+2;if(c>=10)c=c%10;

d=m/1000+2;if(d>=l0)d=d%IO;

m=a+b*10+c*100+d*1000;

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

練習(xí)題5參考答案

一、選擇題

序號(hào)12345678910

參考答案ABBABDCDBD

二、填空題

1.以下程序的輸出結(jié)果是52。

2.以卜程序的輸出結(jié)果是170

3.有以下程序:

程序運(yùn)行時(shí),假如從健盤輸入:Y?N?〈回車),則輸出結(jié)果為X。

4.下面程序的運(yùn)行結(jié)果s=254。

5.下面程序段中循環(huán)體的執(zhí)行次數(shù)是30

6.下面程序段的運(yùn)行結(jié)果是一**。

7.下面程序的運(yùn)行結(jié)果是1,-2°

8.下面程序段的運(yùn)行結(jié)果是一8。

9.下面程序的功能是:計(jì)算1?10之間的奇數(shù)之和與偶數(shù)之和,試完善程序。

10.下面程序的功能是:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的全部整數(shù),請(qǐng)?zhí)羁铡?/p>

三、程序設(shè)計(jì)題

1.編寫程序計(jì)算1+3+5+7+…+97+99的值。

#include<stdio.h>

voidmainO

inti,sum;

sum=0;

for(i=l;i<=99;i+=2)

(

sum=sum+i;

)

,/,,

printf(%d\n,sum);

)

2.編寫程序從鍵盤輸入正整數(shù)n,求n!。

#include<stdio.h>

voidmain()

(

inti,n,fact=l:

scanf

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

(

fact*=i;

}

printfCzn=%d,n!=%d\n",n,fact);

)

3.編寫程序求一個(gè)十進(jìn)制整數(shù)的位數(shù)。

#include<stdio.h>

voidmainO

(

intn,m;

scanf("/d",&n);

if(n<0)

printf(”請(qǐng)輸入正整數(shù)!感謝合作!\n");

if(n<=9&&n>=0)

m=l;

else

(

m=0;//t=n/10;

while(n>=l)

{

n=n/10;

++m;

)

)

printf("為d\n",m);

)

4.編寫程序輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。

#include<stdio.h>

intmain(void)

〃輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。

charch;

intchar_num=O,kongge_num=0>int_num=O,other_num=0;

while((ch=getchar())!='\n')〃回車鍵結(jié)束輸入,并且回車符不計(jì)入

(

if(ch>=,a&&ch<=,z*||ch<=,z'&&ch>=,a')

char_num++;

elseif(ch==,')

kongge_num++;

elseif(ch>=0'&&ch<=9')

int_num++;

else

other_num++;

)

printfC字母二與d,空格;機(jī)1,數(shù)字二機(jī)1,其它

=%d\n”,charnum,kongge_num,intnum,othernum);

return0;

}

5.編寫程序求一個(gè)十進(jìn)制整數(shù)是否為回文數(shù)。所謂回文數(shù)是指從左向右讀或從右向左讀

都是相同的數(shù),也就左右對(duì)稱的數(shù),如:232、3553>123321等。

#include<stdio.h>

#include<string.h>

intmain()

(

chardigits[]00],i,n;

scanf(“/s”,digits);

n=strlen(digits);

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

(

if(digits[i]!=digits[n-i-l])

(

printf("不是回文數(shù)\n");

return0;

}

}

printf(〃是回文數(shù)\n〃);

return0;

)

6.編寫程序用兩種方法(一種方法是運(yùn)用三重循環(huán)形成100?999之間的全部數(shù),另一種

方法是運(yùn)用單重循環(huán)干脆形成100?999之間的全部數(shù))求100?999之間的全部“水仙花數(shù)”。

所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153是一個(gè)

水仙花數(shù),因?yàn)?53=13+5,+33O

方法一:三重循環(huán)

#include<stdio.h>

intmain()

{inti,j,k,n;

printf(^parcissusnumbersarc:");

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

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

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

(

n=i*100+j*10+k;

if(n=i*i*i+j*j*j+k*k*k)

printf("%5d”,n);

}

printf("\n");

return0;

)

方法二:單重循環(huán)

#include<stdio.h>

intmain()

(inti,j,k,n;

printf(^parcissusnumbersare:");

for(n=100;n<1000;rH-+)

(

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf(“先5d”,n);

)

printf("\n");

return0;

)

7.編寫程序找出1000之內(nèi)的全部“完備數(shù)(完全數(shù)、完備數(shù))”。“完備數(shù)”也稱為“完

數(shù)”,它是指一個(gè)數(shù)恰好等于它的因子之和。例如,6的因子為1、2、3,而6=1+2+3,因此

6是“完數(shù)”。

#include<stdio.h>

intmain()

(

intm,s,i;

for(m=2;m<1000;m++)

(

s=0;

for(i=l;i〈m;i++)

if((m%i)==0)

s=s+i;

if(s==m)

printf(^%d,itsfactorsare1〃,m);

for(i=2;i<m;i++)

if(m%i==0)

printf(/,+%3d,/,i);

printf("\n");

)

)

return0;

}

8.編寫程序用窮舉法求解我國古代《張丘建算經(jīng)》中一道聞名的百雞問題:雞翁一,值

錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,雞翁、雞母、雞雛各幾何?

#include<stdio.h>

voidmain()

(

intcocks=0,hens,chicks;

while(cocks<=20)

(

hens=0;

while(hens<=33)

(

chicks=100-cocks-hens;

if(5.0*cocks+3.0*hcns+chicks/3.0==100.0)

printf("公雞外d只,母雞%d只,小雞猊只\n\n”,cocks,hens,chicks);

hens++;

)

cocks++;

)

v2J

9.已知爐=1+x+工+工+?-,編寫程序輸入x的值,求/的近似值(要求被舍去的

2!3!

項(xiàng)小于10”)。

#include<stdio.h>

#include<math.h>

voidmain()

(

doubletemp=l,sum=l,b=l.0;

inti=l;

doublex,a=l.0;

scanf(飛If",&x);

while(fabs(temp)>=le-6)

(

b=b*i;

a=a*x;

temp=a/b;//定義每一項(xiàng)的內(nèi)容

sum=sum+temp;

i++;

)

printfsum);

}

10.編寫程序利用泰勒級(jí)數(shù)sinx^x—《+看一/+^-…計(jì)算sinx的值,要求最

3!5!7!9!

終一項(xiàng)的肯定值小于10M并計(jì)算共求了多少項(xiàng)。

#include<stdio.h>

include<math.h>

voidmainO

(

intn=l,count=0;

doublex,sum,term;

printf(^pleaseinputanumberx:");

scanf&x);

sum=x;

term=x;

while(fabs(term)>=le-6)

(

term=-term*x*x/((n+1)*(n+2));〃定義后一項(xiàng)與前一項(xiàng)的關(guān)系

sunrsum+term;

n=n+2;

count++;

}

printf(,,sin(x)=%f,count?二/d\n”,sum,count);

)

11.編寫程序用牛頓迭代法求方程2/-4./+3x-5=0在1.5旁邊的根。

#include<stdio.h>

4include<math.h>

doubleFl(double);〃原函數(shù)

doubleF2(double);〃原函數(shù)的一階導(dǎo)數(shù)函數(shù)

doubleNewton(double,double):

voidmain()

(

doublexO=1.5;

doublee=pow(10,-5);

printf(''theresultis%lf\n,,?Newton(xO,e));

)

doubleFl(doublex)

(

return2*:《*x*x-4*x*x+3*x-5;

)

doubleF2(doublex)

(

return6*;《*x-8*x+3;

)

doubleNewton(doublexO,doublee)

(

doublexl;

do

(

xl=xO;

xO=xl-Fl(xl)/F2(xl);

(while(fabs(xl-xO)>e);

returnxO;

)

12.編寫程序用二分法求方程2d-4田+3%-5=0在(TO,10)之間的根。

#include<stdio.h>

#include<math.h>

doublefunction(doublex)

(

doublef;

f=2*x*x*x-4*x*x+3*x-5;

returnf;

)

voidmainO

(

doublea=-10,b=10,c,fa,fb,fc;

fa=function(a);

fb二function(b);

do

c=(a+b)/2.0;

fc=function(c);

if(fc*fa<0)

{

b=c;

fb=fc;

)

else

fa=fc;

}

}while(fabs(a-b)>=le-6);

printf(''Therootis%lf\n,/,c);

)

13.編寫程序?qū)⒁粡埫嬷禐?00元的人民幣等值換成100張5元、1元和5角的零鈔,

要求每種零鈔不少于1張,

#include<stdio.h>

intmainO{

intn5,nl,n05;

intcount=0;

for(n5=l;n5<20;n5++){

for(nl=l;nl<(100~n5);nl++){

n05-100-n5-nl;

if((n5*10+nl*2+n05)==200){

count++;

printf("第%d種:%d張五元,%d張一元,%d張五角\n",count,

n5,nl,n05);

}

}

)

return0;

)

14.編寫程序驗(yàn)證哥德巴赫猜想(任何一個(gè)大于等于6的偶數(shù)都可以分解為兩個(gè)素?cái)?shù)之

和),驗(yàn)證范圍限定為6到2000。

^include<stdio.h>

intmain()

inti,j,k,1;

intss(intn);

for(i=6;i<=20D0;i++)

(

if(i%2==0)

for(j=2;j<=(int)(i/2);j++)

{

k=ss(j);

l=ss(i-j);

if(k==l&&l==l)

printfC^d+%d=%d\n",j,i-j,i);

)

)

return0;

)

intss(intn)

(

inti;

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

(

if(n%i==0&&n!=i)

return0;

if(n==i)

return1;

)

)

15.愛因斯坦數(shù)學(xué)題。有一條長階梯,若每步跨2階,最終剩下1階;若每步跨3階,

最終剩下2階;若每步跨5階,最終剩下4階;若每步跨6階,最終剩下5階;只有每步跨

7階,最終才正好1階不剩。編制程序求這條階梯共有多少階?

#include<stdio.h>

voidmain()

(

intn=l;

while(l)

(

if((n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5)&&(n%7==0))〃推斷

(

printf(,z%d\nv,n);

break;

}

n++;

}

printf(線d哪2Ad3%d\n”,n,n/2,n%2);〃驗(yàn)算

//

printf(^%d%%3=%d...%d\n>n,n/3,n%3);

printf5yd...%d\n”,n,n/5,n%5);

printf(//%d%%6=%d...%d\n,,?n,n/6,n%6);

printfC%d%%7=%d...%d\n,\n,n/7,n%7);

)

16.三色球問題。若一個(gè)口袋中放有12個(gè)球,其中有3個(gè)紅色的,3個(gè)白色的,6個(gè)黑

色的,從中任取8個(gè)球,編寫程序求共有多少種不同的顏色搭配?

^include<stdio.h>

voidmain()

(

intn=0;

inta,b,c;

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

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

for(c=0;c<=6;c++)

if(a+b+c==8)n++;

printf(''%d\n,z,n);

)

練習(xí)題6參考答案

一、選擇題

序號(hào)12345678910

參考答案DDDAADACBC

序號(hào)11121314

參考答案CDAA

二、填空題

1.下面程序的運(yùn)行結(jié)果是—

1123

581321

3455

2.以下程序的輸出結(jié)果是abc。

3.若有定義:inta:3][4]={{1,2),{0},{4,6,8,10});,則初始化后,

得到的初值是(),得到的i初值是6。

4.以卜.程序可求出全部水仙花數(shù)(水仙花數(shù)是指一個(gè)3位正整數(shù),其各位數(shù)字的立方

之和等于該正整數(shù)。如:407=4*4*4+0*0*0+7*7*7,故407是一個(gè)水仙花數(shù))。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

voidmain()

{intx,y,z,a[8],m,i=0;

printf("Thespecialnumbersare:\n");

for(m=100;水1000;m++)

(x=m/10D;

y=(m/10)%10;

z=m%10;

if(x*100+y*1O+z==x*x*x+y*y*y+z*z*z)

{a[i]-m;i++;}

)

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

printf("%6d",a[x]);

)

5.下面程序的功能是:將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素從小到大排列,其他元素

不變,請(qǐng)?zhí)羁铡?/p>

^include<stdio.h>

#include<string.h>

voidmainO

{chara[]=Hclanguage",t;

inti,j,k;

k=strlen(a);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j<k;i+=2;)

if()

{t=a[i];a[i]=a[j];a[j]=t;)

puts(a);

printf("\n");

)

6.下面程序的功能是將二維數(shù)組a中每個(gè)元素向右移一列,最右一列換到最左一列,

移后的數(shù)組存到另一個(gè)二維數(shù)組b中,并按矩陣形式輸出a和b,請(qǐng)?zhí)羁铡?/p>

例如:arraya:arrayb:

456645

123312

^include<stdio.h>

voidmainO

{inta[2][3]={4>5,6,l,2,3},b[2][3];

inti,j;

printf("arraya:\n");

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

{for(j=D;j<3;j++)

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

)

printf("\n");

}

for(i=0;i<=l;i++)b[i][0]=a[i][2];

printf("arrayb:\n");

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

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

printf(M%5d\b[i][j]);

printf(〃\n"):

)

)

7.下面程序中的數(shù)組a包括10個(gè)整數(shù)元素,從a中其次個(gè)元素起,分別將后項(xiàng)減前項(xiàng)

之差存入數(shù)組b,并按每行3個(gè)元素輸出數(shù)組b。請(qǐng)?zhí)羁铡?/p>

0include<stdio.h>

voidmain()

{inta[10],b[10],i;

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

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

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

b[i]=a[i]-a[i-l];

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

{printf("%3d",b[i]);

if(諼3=0)printf("\n");

}

}

8.以下程序是求矩除a,b的和,結(jié)果存入矩陣C中,并按矩陣形式輸出。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

voidmain()

{inta[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2});

intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2});

inti,j,c[3][4];

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

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

c[i][,j]-a[i][j]+b[i][j];

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論