第三章课后习题(2)
19、水仙花数(三位数,各位数字的立方和等于该数字本身)
#include<iostream>
using namespace std;
int main(){
int n,t;
int n1,n2,n3;
for(n=100;n<1000;n++){
t=n;
n1=t/100;
t=t%100;
n2=t/10;
t=t%10;
n3=t;
if(n1*n1*n1+n2*n2*n2+n3*n3*n3==n){
cout<<n<<" ";
}
}
cout<<endl;
return 0;
}

20、1000以内的完数(数等于因数和)
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int i;
int s;
for(i=1;i<1000;i++){
s=1;
for(int j=2;j<=sqrt(i);j++){
if(i%j==0){
s=s+j+i/j;
}
}
if(i==s){
cout<<i<<",its factors are:";
for(int j=1;j<=sqrt(i);j++){
if(i%j==0){
if(j==1) cout<<j<<" ";
else cout<<j<<" "<<i/j<<" ";
}
}
cout<<endl;
}
}
return 0;
}
21、分数列前20项和(2/1+3/2+5/3+8/5+…)
#include<iostream>
using namespace std;
int main(){
double m=2.0,n=1.0;
double s=0.0;
double k;
for(int i=0;i<20;i++){
s+=m/n;
k=n;
n=m;
m=m+k;
}
cout<<s<<endl;
return 0;
}
22、猴子吃桃
#include<iostream>
using namespace std;
int f(int n){
if(n==10) return 1;
if(n<10) return (f(n+1)+1)*2;
}
int main(){
cout<<f(1)<<endl;
return 0;
}
23、迭代法求平方根
#include<iostream>
using namespace std;
int main(){
double a;
cin>>a;
double x1=a,x2=(a+1)/2;
while(1){
if(x1-x2>-0.00001&&x1-x2<0.00001) break;
double t=x2;
x2=(x2+a/x2)/2;
x1=t;
}
cout<<x1<<" "<<x2<<endl;
return 0;
}
24、输出图案
#include<iostream>
using namespace std;
void f(int n){
for(int i=0;i<n;i++){
cout<<"* ";
}
cout<<endl;
}
int main(){
f(1); f(3); f(5); f(7); f(5); f(3); f(1);
return 0;
}
25、乒乓球比赛名单
#include<iostream>
using namespace std;
int main(){
int m,n;
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(i!=j){
for(int k=1;k<=3;k++){
if(k!=j&&k!=i){
if(i!=1&&k!=1&&k!=3){
cout<<"A —— "<<char(65+22+i)<<endl;
cout<<"B —— "<<char(65+22+j)<<endl;
cout<<"C —— "<<char(65+22+k)<<endl;
}
}
}
}
}
}
return 0;
}