版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C++程序設(shè)計基礎(chǔ)教程(第2版)
課后習(xí)題參考答案
第1章C++基礎(chǔ)
一、選擇題
(1)B(2)D(3)B(4)C(5)A(6)D(7)B(8)B
二、程序閱讀題(寫出各程序的輸出結(jié)果)
(1)
***
***
(2)
inputa,b:310
7
(3)
5.6(輸入)
98.4704
三、編程題
1、編寫程序,輸入兩個數(shù),按由大到小的順序輸出這兩個數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
{inta,b;
cin?a?b;
if(a>b)
cout?a?**?b;
else
cout<vb<<''<<a;
return0;
)
2、編寫程序,輸入某一年份,計算5月1日是該年份的第幾天。
#include<iostream>
usingnamespacestd;
intmain()
(
intyear,days;
cout<<”請輸入年份:
cin?year;
days=31+30+31+30+1;
if((year%4==0&&year%100!=0)||(year%400==0))days++;
cout<<"它是第"<<days<<"夭";
return0;
第2章基本數(shù)據(jù)類型與運算符
一、選擇題
(1)C(2)A(3)A(4)A(5)B
二、程序閱讀題(寫出各程序的輸出結(jié)果)
(1)
abcHabc
abc\abc
(2)
i=2
i=2
(3)
10333.2
04t3
(4)
011
122
212
(5)
1
1
3
(6)
2
/*結(jié)果為2,預(yù)期應(yīng)為3。主要的原因是在將雙精度實型數(shù)據(jù)的表示是近似值,在轉(zhuǎn)換為整
型數(shù)據(jù)時有誤差*/
三、填空題
(1)
x*x*(a+b)/(a-b)
(2)
1
(3)
(m/100)(m/10)%10m%10
(4)
0.0雙精度實型
149.0雙精度實型
84.0雙精度實型
四、編程題
1、編寫程序,輸入整型數(shù)a,b的值,分別計算并輸出(a++)+b、a+(++b)和a+++b的值。
#include<iostream>
usingnamespacestd;
intmain()
(
inta,b;
cin?a?b;
cout?(a++)+b?endl;
cin?a?b;
cout?a+(++b)?endl;
cin?a?b;
cout?a+++b?endl;
return0;
)
2、編寫程序,對輸入的一個3位正整數(shù),分離出個位、十位和百位,并輸出各位數(shù)之和。
#include<iostream>
usingnamespacestd;
intmain()
(
intn,a,b,c;
cin?n;
a=n/100;
b=(n/10)%10;
c=n%10;
cout?a+b+c?endl;
return0;
)
第3章程序控制
一、選擇題
(1)C(2)A(3)A(4)A(5)B
二、編程題
1、編程計算數(shù)學(xué)上的符號函數(shù):
1%>0
y=0x=0
.-1%>0
#include<iostream>
usingnamespacestd;
#include<cmath>
intmain(){
doublex,y;
cin?x;
if(fabs(x)<le-5)
y=0;
elseif(x>l)
y=l;
else
y=-i;
cout?,'x=,,?x?,',y=,'?y;
return0;
)
2、編寫一個程序,通過輸入的年份,判斷是否為閏年。
#include<iostream>
usingnamespacestd;
intmain()(
intyear;
cout?nPleaseinputayear:\n";
cin?year;
if(year%4==0&&year%100!=0||year%400==0)
cout?year?"isaleapyear.\n";
else
cout?year?"isnotaleapyearAn";
return0;
)
3、編程求三個數(shù)中最小數(shù),要求用戶輸入三個數(shù),顯示其中的最小值。
#include<iostream>
usingnamespacestd;
intmain(){
inta,b,c;
cout?nPleaseinputthreenumbers:\n";
cin?a?b?c;
intmin;
min=a;
if(b<min)
min=b;
if(c<min)
min=c;
cout?"Theminimumnumberamong"?a?""?b?""?c?"is"?min;
return0;
}
4、編程計算一元二次方程。尤2+bx+c=0的解,考慮各種可能情況。
#include<iostream>
usingnamespacestd;
intmain(){
doublea,b,c;
doublexl,x2;
cout?nPleaseinputthreenumbers:\nH;
cin?a?b?c;
doubledelta=b*b-4*a*c;
if(delta<0)
cout?nTheequtionhasnosolution."
elseif(delta==0){
xl=x2=(-b)/(2*a);
cout?nThisequationhasuniquesolution:"?xl;
)
else{
xl=(-b-sqrt(delata))/(2*a));
x2=(-b+sqrt(delata))/(2*a));
cout?"Thisequationhastwosolutions:x1="?x1?",x2="?x2;
)
return0;
}
5、編寫程序,輸入月份輸出其英文名稱和天數(shù)。
#include<iostream>
usingnamespacestd;
intmain(){
intmonth;
cout?"Pleaseinputamonthinnumber(l-12):\n";
cin?month;
switch(month){
case1:cout?"Januaryhas31days.";break;
case2:cout?"Februaryhas28/29days.";break;
case3:cout?"Marchhas31days.";break;
case4:cout?"Aprilhas30days.1';break;
case5:cout?nMayhas31days.";break;
case6:cout?"Junehas30days.";break;
case7:cout?"Julyhas31days.";break;
case8:cout?"Augusthas31days.";break;
case0:cout?HSeptemberhas30days.";break;
case10:cout?"Octoberhas31days.";break;
case11:cout?"Novemberhas30days.";break;
case12:cout?"Decememberhas31days.";break;
)
return0;
)
6、輸入一個百分制成績(double型),要求輸出成績等級A,B,C,D,E。90分以上
為A',80?90分為B,70?79分為C,60?69分為D,60分以下為E。
#include<iostream>
#include<cmath>
usingnamespacestd;
intmain()
(
doublescore;
chargrade;
cout?"pleaseenterscoreofstudent:";
cin?score;〃輸入百分制成績
while(score>100||score<0)〃超出范圍,則報錯,重新接受輸入
(
cout?"dataerror,enterdataagain.";
cin?score;
)
switch(int(score/10))
(
case10:
case9:if(fabs(score-90)<1e-6)grade='B';
elsegrade='A';
break;
case8:grade二B;break;
case7:grade二C;break;
case6:grade='D';break;
default:grade='ET;
)
cout?"scoreisn?score?n,gradeis"?grade?endl;
return0;
)
7、編程計算初。"由用戶輸入,輸入的"不合法時給出錯誤提示。
#include<iostream>
usingnamespacestd;
intmain(){
intn;
cout?"Pleaseinputanumber(1-100):\n";
cin?n;
if(n>=100||n<0)
(
cout?"Toobig!";
exit(l);
}
doublefactorial=l;
for(inti=l;i<=n;i++)
factorial*=i;
cout?n?'Hsfactorialis"?factorial;
return0;
)
8、輸入n(n<13),計算1!+2!H------1-n!o
#include<iostream>
usingnamespacestd;
intmain(){
intn;
cout?"Pleaseinputanumber(l-12):\n";
cin?n;
intsum=0;
for(intx=l;x<=n;x++){
intsubSum=l;
for(inti=l;i<=x;i++)
subSum*=i;
sum+=subSum;
cout?"Thesumis:n?sum;
return0;
9、求100以內(nèi)能同時被3和5整除的奇數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
{
for(inti=l;i<=100;i+=2)
(
if(i%3==0&&i%5==0)
cout?i?H
)
return0;
)
10、給出一個不多于5位的正整數(shù),(1)求它是幾位數(shù),(2)從最高位到最低位輸出每位數(shù)
字,(3)從最低位到最高位輸出各位數(shù)字。
【方法一】
#include<iostream>
usingnamespacestd;
intmain()
(
intnum;
intindiv,ten,hundred,thousand,ten_thousand,bitCount;
/*分別代表個位,十位,百位,千位,萬位和位數(shù)*/
cout?"enteraninteger(0-99999):";
cin?num;
if(num>9999)
bitCount=5;
elseif(num>999)
bitCount=4;
elseif(num>99)
bitCount=3;
elseif(num>9)
bitCount=2;
elsebitCount=l;
cout?"bitCount="?bitCount?endl;
〃計算各位數(shù)字
ten_thousand=num/l0000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*1OOOO-thousand*1OOO-hundred*l00)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
cout?"originalorder:*';
switch(bitCount)
{
case5:cout?ten_thousand?,',"?thousand?'V'?hundred?n,,'?ten?","?indiv?endl;
cout?"reverseorder:";
cout?indiv?ten?hundred?thousand?ten_thousand?endl;
break;
case4:cout?thousand?","?hundred?","?ten?",H?indiv?endl;
cout?"reverseorder:";
cout?indiv?ten?hundred?thousand?endl;
break;
case3:cout?hundred?n,n?ten?","?indiv?endl;
cout?"reverseorder:*';
cout?indiv?ten?hundred?endl;
break;
case2:cout?ten?",''?indiv?endl;
cout?"reverseorder:";
cout?indiv?ten?endl;
break;
case1:cout?indiv?endl;
cout?"reverseorder:*';
cout?indiv?endl;
break;
}
return0;
)
【方法二】
#include<iostream>
usingnamespacestd;
#include<cmath>
intmain()
(
longintnum;
intindiv,ten,hundred,thousand,ten_thousand,bitCount=0;
/*分別代表個位,十位,百位,千位,萬位和位數(shù)*/
cout?"enteraninteger(0-99999):";
cin?num;
inttmp二num;
while(tmp)
bitCount++;
tmp/=10;
)
cout<<”它的位數(shù)為:"<<bitCount?endl;
〃逆序輸出
tmp=num;
while(tmp)
(
cout?tmp%10?n
tmp/=10;
)
cout?endl;
〃順序輸出
tmp=num;
while(tmp)
(
cout?int(tmp/pow(float(10),float(bitCount-l)))?"";
tmp=int(tmp%int(pow(float(10),float(bitCount-1))));
bitCount—;
)
return0;
)
11、對于一個整數(shù)num,逆向輸出其各位數(shù)字,同時求出其位數(shù)以及各位數(shù)字之和。
#include<iostream>
usingnamespacestd;
intmain(){
intnum,sum=0,k,i=0;
cin?num;
while(num>0)
(
k=num%10;
cout?k?"
sum+=k;
i++;
num二num/10;
)
cout?”\n各位數(shù)字之和:n?sum?endl;
cout?“位數(shù):"<<i?endl;
return0;
}
12、分別使用while,dowhile語句打印輸出九九乘法表。
[while]
#include<iostream>
usingnamespacestd;
intmain(){
inti=l,j;
while(i<=9)
(
j=l;
while(j<=i)
(
cout?i?n*H<<j?H=n?i*j?H\tn;
J++;
)
cout?endl;
i++;
)
return0;
}
[do...while]
#include<iostream>
usingnamespacestd;
intmain(){
inti=l,j;
do
{
j=l;
do
(
cout?i?"*"?j?"="?i*j?"\t";
j++;
}while(j<=i);
cout?endl;
i++;
}while(i<=9);
return0;
)
13、求正整數(shù)n的階乘n!,其中l(wèi)<=n<=13。
#include<iostream>
usingnamespacestd;
intmain()
intnum;
cin?num;
longfac=l;
for(inti=l;i<=num;i++)
fac*=i;
cout?num?"!="?fac;
return0;
)
14、使用循環(huán)語句,對cos(x)多項式求和。
22n-2
rY4Ji
cos(x)=l-—+---(-1嚴(yán)+...
2!4!(2n-2)l
#include<iostream>
#include<cmath>
usingnamespacestd;
intmain()
inti=l;
floatx,t,value;
cout?"請輸入X的值
cin?x;
value=l;t=l;
while(fabs(t)>=1e-9)
t=t*(-l)*x*x/((2*i)*(2*i-l));〃通項的值
value=value+t;
i++;
)
cout?"cos(',?x?',)=',?value?endl;
return0;
)
15、一個整數(shù)如果是另一個整數(shù)的完全平方,那么就稱該數(shù)為完全平方數(shù),如0、1、4、9、
16.............要求不允許使用開方函數(shù)sqrt(),計算輸出100以內(nèi)的所有完全平方數(shù)。
#include<iostream>
usingnamespacestd;
intmain(){
intn,m,h;
cin?n;
for(m=l;m<=n/2;m++){
h=m*m;
if(h==n){
cout?nTRUE\nn;
return0;
)
)
cout?,'False\nn;
return0;
)
16、回文數(shù)的概念:即是給定一個數(shù),這個數(shù)順讀和逆讀都是一樣的。例如:121,1221是
回文數(shù),123,1231不是回文數(shù)。編程實現(xiàn)回文整數(shù)的判斷。
#include<iostream>
usingnamespacestd;
intmain(){
inti=l,j;
intx,newed,t,n;
cin?x;
newed=0;
n=x;
do{
newed=newed*10+x%10;
x/=10;
}while(x>0);
if(n==newed)
cout?"Yes\nn;
else
cout?HNo\nH;
return0;
)
17、輸出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)字的立方之和
等于該數(shù)本身。例如,153是一個水仙花數(shù),因為153=展+53+33。
#include<iostream>
usingnamespacestd;
intmain(){
inti,j,k,n;
cout?"narcissusnumbersare:n?endl;
for(n=100;n<1000;n++)
(
i=n/100;〃百位數(shù)
j=n/10-i*10;〃十位數(shù)
k=n%10;//個位數(shù)
if(n==i*i*i+j*j*j+k*k*k)
cout?n?"
)
cout?endl;
return0;
)
18、求1000之內(nèi)所有“完數(shù)”。所謂的“完數(shù)”是指一個數(shù)恰好等于它的所有因子之和。例
如6是完數(shù),因為6=1+2+3。
#include<iostream>
usingnamespacestd;
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){
cout?m?n是一個完數(shù)"<<endl;
cout?"itsfactorsare:";
for(i=l;i<m;i++)
if(m%i==0)cout?i?"n;
cout?endl;
}
)
return0;
)
19、猴子吃桃問題。猴子第1天摘了若干個桃子,當(dāng)即吃了一半,還不解饞,又多吃了一個;
第2天,吃剩下的桃子的一半,還不過癮,又多吃了一個;以后每天都吃前一天剩下的一半
多一個,到第10天想再吃時,只剩下一個桃子了。問第一天共摘了多少個桃子?
#include<iostream>
usingnamespacestd;
intmain(){
intday,xl,x2;
day=9;
x2=l;
while(day>0){
xl=(x2+l)*2;//前天的桃子數(shù)是后天桃子數(shù)加后的倍
x2=xl;
day—;
)
cout<<"total=n?xl?endl;
return0;
}
20、盒子中放有12個球,其中3個紅球,3個白球,6個黑球,從中任取6個球,問其中至
少有一個球是紅球的取法有多少種?輸出每一種具體的取法。
#include<iostream>
usingnamespacestd;
intmain(){
inti,j,k;
intnumber=O;
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
for(k=0;k<=6;k++)
if(i+j+k==8)
(
cout<<“紅球"<<i?"個,白球"<<j?"個,黑球"vvk<<”個。\nH;
number++;
}
cout?"Totalnumber:H?number;
return0;
)
21、*張三說李四說謊,李四說王五說謊,王五說張三和李四都說謊。判斷3人中到底誰真
誰假。
#include<iostream>
usingnamespacestd;
#defineZHANGSAN(L==0)
#defineLISI(W==0)
#defineWANGWU(Z==0&&L==0)
intmain(){
intZ=0,L=0,W=0;
for(Z=0;Z<=1;Z++)
for(L=0;L<=1;L++)
for(W=0;W<=1;W++)
if(ZHANGSAN=二Z&&LISI==L&&WANGWU==W){
Z?cout<〈"張三說的是真話\n”:cout<〈”張三說的是假話\n”;
L?cout?"李四說的是真話坨”:cout<<"李四說的是假話\n";
W?cout<<"王五說的是真話3":cout<〈"王五說的是假話\n";
)
return0;
22、*兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決
定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找
出三隊賽手的名單。
#include<iostream>
usingnamespacestd;
intmain()
chari,j,k;〃i是A的對手;j是B的對手;k是C的對手
for(i=,X,;i<=,Z';i++)
for產(chǎn)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')
cout?"A-"?i<<"C-"?k?endl;
return0;
第4章函數(shù)
一、選擇題
(1)D(2)C(3)A(4)B(5)A
二、編程題
1、編寫函數(shù)把華氏溫度轉(zhuǎn)換成攝氏溫度,公式為C=g(F-32)。輸入輸出在主函數(shù)中完
成。
#include<iostream>
usingnamespacestd;
doubleconvertToF(double);
intmain()
(
doubletemper;
cout<<"輸入要轉(zhuǎn)換的華氏溫度值:”;
cin?temper;
cout<<”轉(zhuǎn)換后的攝氏溫度為:"<<convertToF(temper)?endl;
return0;
)
doubleconvertToF(doubleF)
(
return(F-32)*5/9;
)
2、已知y=其中,s/t為雙曲正弦函數(shù),即s以t)=二二。編寫程序,輸入x的
“sh(2x)+sh(3x)2
值,計算y的值。
#include<iostream>
usingnamespacestd;
#include<cmath>
doublesh(doublet)
(
return(exp(t)-exp(-t))/2;
)
doubley(doublex){
returnsh(1+sh(x))/(sh(2*x)+sh(3*x));
)
intmain(){
doublex;
cout?nPleaseinputx:\n";
cin?x;
cout?y(x);
return0;
)
3、求400之內(nèi)的“親密對數(shù)二所謂“親密對數(shù)”,即整數(shù)A的所有因子之和等于整數(shù)B,
而B的所有因子之和等于A(說明:一個整數(shù)的因子是指除了本身之外的所有因子,包含
Do
#include<iostream>
#include<cmath>
usingnamespacestd;
voidmain(){
intFactorSum(intfac);
intanotherNum;
for(inti=l;i<=400;i++){
anotherNum=FactorSum(i);
if(FactorSum(anotherNum)==i&&i<anotherNum)
cout?"("?i?","?anotherNum<<")";
intFactorSum(intfac){〃親密對數(shù)計算
intsum=1;
for(inti=2;i<fac;i++){
if(0==fac%i){
sum+=i;
returnsum;
4、有些回文數(shù)同時還是一個數(shù)的平方。比如676是回文數(shù),同時也是26的平方,稱為平方
回文。編程找出100000以內(nèi)的平方回文。
#include<iostream>
usingnamespacestd;
#include<cmath>
boolpalindrome(intx){
intm,newed=0;
m=x;
do{
newed=newed*10+m%10;
m/=10;
}while(m>0);
if(x==newed)returntrue;
returnfalse;
)
intmain(){
for(intn=l;n<=100000;n++){
if(palindrome(n)&&((int)sqrt(n))*((int)sqrt(n))==n)
cout?n?"
)
return0;
}
5、設(shè)計函數(shù)intdigit(longn,intk),返回整數(shù)n從右邊開始第k個數(shù)字的值,若不存在第k個
數(shù)字則返回-1。例如:
digit(123456,2)=5
digit(3456,6)=-l〃位數(shù)不夠,返回-1
#include<iostream>
#include<cmath>
usingnamespacestd;
voidmain()
(
intnum,k;
COUt<<”請輸入待測整數(shù):”;
cin?num;
COUt<<”請輸入待測位數(shù)(從右邊開始):”;
cin?k;
intdigit(longint,int);
cout?num<〈”從右邊數(shù)第“<<k?“位數(shù)字是"<<digit(num,k)?endl;
)
intdigit(longintn,intk)
(
if(k<=0)return-1;//簡單的異常處理
if(n==0&&k==1)return0;
unsignedlongi=1;
n=(n<0?-n:n);〃這行可以用n=abs(n)替換
for(k=k-1;k>0;k—)
(
n=n/10;
)
if(n>=l)returnn%10;
elsereturn-1;
6、編寫兩個函數(shù),分別計算兩個整數(shù)的最大公約數(shù)和最小公倍數(shù)。
#include<iostream>
usingnamespacestd;
intmain(){
inthcf(int,int);〃函數(shù)聲明
intlcd(int,int,int);
intu,v,h,l;
cin?u?v;
h=hcf(u,v);〃求最大公約數(shù)
cout?"H.C.F="?h?endl;
]=lcd(u,v,h);〃求最小公倍數(shù)
cout?"L.C.D="?l?endl;
return0;
)
inthcf(intu,intv){
intt,r;
if(u<v){〃交換
t=u;u=v;v=t;
}
while((r=u%v)!=0){
u=v;
v=r;
)
retum(v);
)
intlcd(intu,intv,inth){
retum(u*v/h);
)
7、求出2007000所有這樣的整數(shù),它們的各位數(shù)字之和等于5,其中判斷一個數(shù)的各位數(shù)
字之和是否為5的功能封裝為一個函數(shù)。
#include<iostream>
usingnamespacestd;
intmain(){
intcount=0,s,k,i;
for(i=200;i<=1000;i++){
s=0;
k=i;
while(k>0){
s=s+k%10;
k=k/10;
if(s!=5)continue;
else{
count++;
cout?i?"
if(count%10==0)cout?endl;
)
)
return0;
}
8、寫一個函數(shù)驗證哥德巴赫猜想:一個不小于6的偶數(shù)可以表示為兩個素數(shù)之和,如6=3+3,
8=3+5,,10=3+7.......在主函數(shù)中輸入一個不小于6的偶數(shù)n,然后調(diào)用函數(shù)gotbaha,在gotbaha
函數(shù)中再調(diào)用prime函數(shù),prime函數(shù)的作用是判別一個數(shù)是否為素數(shù)。在gotbaha函數(shù)中
輸出以下形式的結(jié)果:34=3+31
#include<iostream>
#include<cmath>
usingnamespacestd;
voidgotbaha(inta);
boolIsPrime(inta);
intmain(){
inta;
cin?a;
gotbaha(a);
return0;
)
voidgotbaha(inta){
inti;
for(i=3;i<=a/2;i+=2){
if(IsPrime(i)&&IsPrime(a-i))
cout?a?'-n?i?"+n?a-i?endl;
)
}
boolIsPrime(inta){
inti;
fbr(i=2;i<=int(sqrt(a));i++){
if(a%i==0)returnfalse;
)
if(i>=sqrt(a))returntrue;
elsereturnfalse;
)
9、組合數(shù)公式為。器=£工,編寫程序,輸入zn和"的值,計算C九其中階乘計算寫成函
數(shù)。注意算法優(yōu)化。要求,主函數(shù)調(diào)用一下函數(shù)組合數(shù):
intfabricate(intm,intn);〃返回C丸
fabricate函數(shù)內(nèi)部調(diào)用multiplicate函數(shù)
intmultiplicate(intp,intq);〃返回pX(p—1)X...Xq
程序由4個文件組成。頭文件用于存放函數(shù)原型,作為調(diào)用接口;其它3個源文件
分別是main,fabricate和multiplicate函數(shù)定義。
#header.h
intfabricate(intm,intn);
intmultiplicate(intp,intq);
//main.cpp
#include<iostream>
usingnamespacestd;
#include"header.h"
intmain(){
intm,n;
cout?"Pleaseinputm,n:\nH;
cin?m?n;
cout?fabricate(m,n);
return0;
)
#fabricate.cpp
#include"header.h"
intfabricate(intm,intn){
returnmultiplicate(m,1)/(multiplicate(m-n,1)*multiplicate(n,1));
}
#multiplicate.cpp
intmultiplicate(intp,intq){
intt=l;
for(inti=p;i>=q;i—)
t*=i;
returnt;
)
10、編寫函數(shù)sumSeries,它的功能是:計算下列級數(shù)的和。
S=1+x+J+*…其中n和x由鍵盤輸入。
#include<iostream>
usingnamespacestd;
intmain(){
intn;
floata,sum,x;
cin?n?x;
sum=l,a=x;
for(inti=1;i<=n;){
sum+=a;
++i;
a*=x/i;
)
cout?sum;
return0;
)
11、編寫函數(shù)toOcr(intn),將十進制數(shù)n轉(zhuǎn)換為對應(yīng)的八進制數(shù)。
#include<iostream>
#include<cmath>
usingnamespacestd;
voidmain()
(
inttoOcr(intn);
intnum;
cout<<”請輸入一個十進制整數(shù):
cin?num;
COUtVV”對應(yīng)的八進制數(shù)是:”;
cout?toOcr(num);
)
inttoOcr(intn)
(
intremainder;
if(n<=7)returnn;
else
(
remainder二n%8;
returnremainder+10*toOcr(n/8);
)
)
12、用遞歸方法求n階勒讓德多項式的值,遞歸公式為
1(n=0)
匕(x)=,x(n=l)
((2n-l)-x-Pi(九)一(〃一1)?pn_2(x))/n(n>l)
#include<iostream>
#include<cmath>
usingnamespacestd;
voidmain(){
floatp(int,double);
intn;
doublex;
cout<v”請輸入n和x的值:”;
cin?n?x;
cout?"P"?n?"("?x?H)=n?p(n,x);
)
floatp(intn,doublex){
if(n==0)
return(l);
elseif(n==l)
retum(x);
else
retum(((2*n-l)*x*p((n-l),x)-(n-l)*p((n-2),x))/n);
)
13、用遞歸法將一個整數(shù)n轉(zhuǎn)換成字符串。例如,輸入483,應(yīng)輸出字符串“483”。n的位
數(shù)不確定,可以是任意位數(shù)的整數(shù)。
#include<iostream>
usingnamespacestd;
intmain()
{
voidconvert(intn);
intnumber;
cout?"inputaninteger:";
cin?number;
cout?"output:H?endl;
if(number<0)
(
cout?n-n;
number=-number;
)
convert(number);
cout?endl;
return0;
}
voidconvert(intn)
inti;
charc;
if((i=n/10)!=0)
convert(i);
c=n%10+'0‘;
cout?""?c;
)
14、編寫一個遞歸函數(shù),將整數(shù)的每個位上的數(shù)字按相反的順序輸出。例如,輸入1234,輸
出4321o
#include<iostream>
usingnamespacestd;
intmain(){
voidconvert(intn);
intnumber;
cout?"inputaninteger:";
cin?number;
cout?"output:"?endl;
if(number<0){
cout?n-n;
number二-number;
}
convert(number);
return0;
)
voidconvert(intn){
if(n<10)cout?n;
else{
cout?n%10;
convert(n/10);
)
)
15、用牛頓迭代法求根。方程為63+加;2+5+1=°。系數(shù)以仄C、d的值依次為1、
2、3、4由主函數(shù)輸入。求出根后由主函數(shù)輸出。設(shè)方程為/(嗎=(),則牛頓迭代公式為:
/i+i=g-/(g)"’&),其中尸(%)是〃>)的導(dǎo)函數(shù)。迭代初值由鍵盤輸入。
#include<iostream>
#include<cmath>
usingnamespacestd;
intmain()
doublevalue(double,double,double,double);
doublea,b,c,d;
cout?ninputa,b,c,d:H;
cin?a?b?c?d;
cout?"x="?value(a,b,c,d)?endl;
return0;
}
doublevalue(doublea,doubleb,doublec,doubled)
(
doublex=l,x0,f,fl;
do{
x0=x;
f=((a*x0+b)*x0+c)*x0+d;
fl=(3*a*x0+2*b)*x0+c;〃導(dǎo)數(shù)求值
x=x0-f/fl;}〃為什么這樣寫?
while(fabs(x-xO)>=1e-6);
returnx;
)
16>*使用梯形法計算定積分。/(冗)比¥的值,其中a=0,b=1,f(x)=sin(x)o
提示:將積分區(qū)間分成ri等份,每份的寬度為八=等,在區(qū)間[a+/,a+(i+l)網(wǎng)上
使用梯形的面積近似原函數(shù)的積分,貝I:
rgra+G+DAgh
I/(x)dx=ZIf(x)dx(f(a+%)+f(a+(i+l)/i)
ai=0。+%i=l
=h曄普+詼))
這就是數(shù)值積分的梯形求積公式。71越大或八越小,積分就越精確。本題也可以取1000。
#include<iostream>
usingnamespacestd;
#include<cmath>
doubleintegrate(floata,floatb,intn=1000){
doubleh=(b-a)/n;
doubleresult=(sin(a)+sin(b))/2;
for(inti=l;i<=n-l;i++)
result+=sin(a+i*h);
result*=h;
returnresult;
)
intmain(){
doublea,b;
cin?a?b;
intn;
cout?integrate(0,1,1000);
return0;
)
17、使用重載函數(shù)編寫程序分別把兩個數(shù)和三個數(shù)從大到小排列。
#include<iostream>
usingnamespacestd;
voidsort(inta,intb){
inttemp;
if(a>b){
temp二a;
a=b;
b=temp;
)
cout?a?","?b?endl;
)
voidsort(floatx,floaty,floatz){
floattemp;
if(x>y){
temp二x;
x=y;
y=temp;
)
if(z<x)cout?z?n,"?x?",n?y?endl;
elseif(z<y)cout?x?',,',?z?","?y?endl;
elsecout?x?",''?y?',"?z?endl;
)
intmain(){
voidsort(inta,intb);
voidsort(floatx,floaty,floatz);
floatx,y,z;
inta,b;
cout<<”請輸入兩個整數(shù):"?endl;
cin?a?b;
cout<<"排序從小到大為:"?endl;
sort(a,b);
cout<<”請輸入三個浮點數(shù):"?endl;
cin?x?y?z;
cout<〈
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆云南省紅河州瀘源中學(xué)高二物理第一學(xué)期期中聯(lián)考模擬試題含解析
- 四川省瀘縣二中2025屆高三上物理期中監(jiān)測試題含解析
- 甘肅省會寧一中2025屆物理高三上期末達標(biāo)檢測試題含解析
- 遼寧省大連市普蘭店市第三中學(xué)2025屆高一物理第一學(xué)期期末質(zhì)量檢測試題含解析
- 2025屆四川省成都市達標(biāo)名校物理高二第一學(xué)期期中綜合測試試題含解析
- 2025屆貴州省遵義求是高級中學(xué)物理高一第一學(xué)期期中綜合測試試題含解析
- 上海中學(xué)、復(fù)旦附中等八校2025屆物理高一上期末質(zhì)量檢測模擬試題含解析
- 遼寧省沈陽市重點高中協(xié)作校2025屆物理高二上期中檢測模擬試題含解析
- 2025屆吉林省長春市榆樹市一中高三物理第一學(xué)期期末復(fù)習(xí)檢測模擬試題含解析
- 河南省輝縣一高2025屆高三物理第一學(xué)期期中調(diào)研模擬試題含解析
- 過程風(fēng)險和機遇分析評估表
- 熱質(zhì)交換原理與設(shè)備智慧樹知到答案章節(jié)測試2023年廣州大學(xué)
- 安全生產(chǎn)、文明施工措施費用明細(xì)表臺帳清單
- 2022 年第一次廣東省普通高中學(xué)業(yè)水平合格性考試(春考)語文試卷
- 8.第十四章-口腔醫(yī)療保健中的感染與控制
- 國際貿(mào)易理論與實務(wù)智慧樹知到答案章節(jié)測試2023年山東外貿(mào)職業(yè)學(xué)院
- 實施卓越績效管理《自我評價報告》
- 粒子物理基礎(chǔ)
- 珠寶首飾制作倒模工藝流程
- 2023年象山縣特殊教育崗位教師招聘考試筆試題庫及答案解析
- YY/T 1760-2021一次性使用腹膜透析引流器
評論
0/150
提交評論