將下面的程序補充完整,以完成指定的功能。
1.輸入10個整數,找出最大數。
#include <iostream>
using namespace std;
int main()
{
int k,x,max;
cin>>x;
max=______; // (1)
for (k=2; k<=___ ; k++) { // (2)
cin>>x;
if (_______) max=x; // (3)
}
cout<<“Max=“<<max<<endl;
return 0;
}
2.猴子吃桃問題:猴子摘下若干個桃子,第一天吃了桃子的一半多一個,以后每天吃了前一天剩下的一半多一個,到第十天吃以前發現只剩下一個桃子,問猴子共摘了幾個桃子?
#include <iostream>
using namespace std;
int main()
{
int day,x1,x2;
day=9;
x2=1;
while (day>0)
{
x1=2*(x2+1);
_____________ ; // (1)
_____________ ; // (2)
}
cout<<"Total="<<x1<<endl;
return 0;
}
3.求符合下列條件的四位數中最大的一個數。條件為:它的千位數字與十位數字之和等於百位數字與個位數字之積,例如,3136,3+3=1*6 ,故3136是符合條件的一個四位數。
#include <iostream>
using namespace std;
int main()
{
int i,a,b,c,d;
for ( i=9999; i>=1000; i--)
{
a= _____________; // (1)
b=(i-a*1000)/100;
c=(i-a*1000-b*100)/10;
d=i%10;
if ( _____________ ) // (2)
{
cout<<i<<endl;
_____________; // (3)
}
}
}
4.求所有的水仙花數。所謂水仙花數是指一個三位數的各位數字的立方和等於該數本身。例如:13+53+33=153。
#include <iostream>
using namespace std;
int main()
{
int i,j,k;
for (i=_____;i<=9;i++) // (1)
for (j=_____;j<=9;j++) // (2)
for (k=_____;k<=9;k++) // (3)
if (i*i*i+j*j*j+k*k*k==i*100+_______________) // (4)
cout<< i*i*i+j*j*j+k*k*k <<" ";
cout<<endl;
return 0;
}
5.求所有的水仙花數。所謂水仙花數是指一個三位數的各位數字的立方和等於該數本身。例如:13+53+33=153。
#include <iostream>
using namespace std;
int main()
{
int i,x,y,z;
for (i=100;i<=999;i++)
{
x=i/100;
____________; // (1)
z=i%10;
if (____________) // (2)
cout<<i<<endl;
}
return 0;
}
6.輸出1000以內能被3整除且個位數為6的所有整數。
#include <iostream>
using namespace std;
int main()
{
int i, num;
for (i=0;_________; i++) // (1)
{
num=i*10+6;
if (num %3!=0) ____________; // (2)
cout<<num<<" ";
}
cout<<endl;
return 0;
}
7.按從小到大的順序輸出用0至9之間的不同的數字組成的全部三位數(從102到987共648個)。
#include <iostream.h>
int main()
{
int i,j,k,cnt=0;
for (i=1;i<=9;i++)
for (j=0;j<=9;j++)
if (_____________) continue; // (1)
else
for (k=0;k<=9;k++)
if (____________________) // (2)
{
cout<<_______________ <<" "; // (3)
cnt++;
}
cout<<endl<<cnt<<endl;
return 0;
}
8.按從小到大的順序輸出用0至9之間的不同的數字組成的全部三位數(從102到987共648個)。
#include <iostream>
using namespace std;
int main()
{
int i,a,b,c,cnt=0;
for (i=100;i<=999;i++)
{
a=i/100;
b=____________; // (1)
c=____________; // (2)
if (a==b || a==c || b==c)
____________; // (3)
cout<<i<<" ";
cnt++;
}
cout<<endl<<cnt<<endl;
return 0;
}
9.將100元換成10元、5元和1元的組合,共有多少種組合方法。
#include <iostream>
using namespace std;
int main()
{
int i,j,k,count=0; // i是10元張數,j是5元張數,k是1元張數
for (i=0; ___________; i++) // (1)
for (j=0; ___________ ; j++) // (2)
{
k= ___________ ; // (3)
cout<<i<<'\t'<<j<<'\t'<<k<<endl;
count++;
}
cout<<count<<endl;
return 0;
}
10.用1元人民幣兌換成1分、2分、5分,共有多少種不同的兌換方法。
#include <iostream>
using namespace std;
int main()
{
int five,two,count=0;
for (five=0;five<=__________;five++) // (1)
for (two=0; two<=__________;two++) // (2)
count++;
cout<< "共有 " << count << " 種兌換方法" <<endl;
return 0;
}
11.從鍵盤輸入一個非負整數,將它反向顯示出來。例如,輸入1234,輸出4321。
#include <iostream>
using namespace std;
int main()
{
int number,digit;
cin>>number;
cout<< number <<" 的逆序數為 ";
do {
digit=_________________________; // (1)
number=________________________; // (2)
cout<<digit;
} while (______________________); // (3)
cout<<endl;
return 0;
}
12.數根可以通過把一個數的各個位上的數字加起來得到。如果得到的數是一位數,那么這個數就是數根。如果結果是兩位數或者包括更多位的數字,那么再把這些數字加起來。如此進行下去,直到得到是一位數為止。例如,24的數根是6,39的數根是3。輸入一個正整數,輸出它的數根。
#include <iostream.h>
#include <math.h>
int main()
{
int n,m,t;
cin>>n;
t=n;
while (__________) // (1)
{
m=0;
while (__________) // (2)
{
m=m+t%10;
t=t/10;
}
__________; // (3)
}
cout<<t<<endl;
return 0;
}
13.輸出2至99之間的所有質數(質數是只能被1和它本身整除的正整數)。
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int i,n,temp;
for (n=2; ___________; n++) { // (1)
temp=sqrt(n);
for (i=2; i<=temp; i++)
if(n%i==0) ______________; // (2)
if(i>temp) cout<<n<<" ";
}
cout<<endl;
return 0;
}
14.把從鍵盤上輸入的一個大於等於3的整數分解為質因子的乘積。如輸入24時得到的輸出結果為“2 2 2 3”,輸入50時得到的輸出結果為“2 5 5”,輸入37時得到的輸出結果為“37”。
#include <iostream>
using namespace std;
int main()
{
int x;
cout<<"請輸入一個整數,若小於3則重輸:";
do cin>>x; while (___________); // (1)
int i=2;
do {
while (___________) { // (2)
cout<<i<<" ";
x/=i;
}
__________; // (3)
} while(i<x);
if (x!=1) cout<<x;
cout<<endl;
return 0;
}
15.求1―1/3+1/5―1/7+1/9…的前100項的和。
#include <iostream>
using namespace std;
int main()
{
int n,sign=1;
double s=0;
for ( n=1;___________;n++) // (1)
{
s=s+_____________; // (2)
sign=___________; // (3)
}
cout << “s=" << s << endl;
return 0;
}
16.利用公式π/4=1-1/3+1/5-1/7+…求π 的近似值,最后一項的絕對值小於10-6 為止。
#include <iostream>
using namespace std;
int main()
{
long int i;
double pi,t;
int s;
pi=0; t=1 ; i=1; s=_______; // (1)
while ( t>1e-6)
{
pi=pi+_________; // (2)
i=__________; // (3)
s=-s;
t=1.0 / i;
}
pi=___________; // (4)
cout << “PI=" << pi << endl;
return 0;
}
17.程序利用公式e = 1 + 1/1! + 1/2! + 1/3! + … + 1/10! 求e的近似值。
#include <iostream>
using namespace std;
int main()
{
int i,n=1;
double e=1;
for (i=1;i<=10;i++)
{
___________; // (1)
___________; // (2)
}
cout<<e<<endl;
return 0;
}
18.求一個二維整型數組中的最小值,並指明它是數組的第幾行第幾列的元素(約定:下標為[0][0]的元素是第1行第1列的元素)。
#include <iostream>
using namespace std;
int main()
{
int a[3][4]={10,2,3,4,5,99,7,8,9,10,56,23},k,m,min,i,j;
min=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if (________________ ) // (1)
{
____________________ ; // (2)
m=i ;
k=j;
}
cout<< "最小值="<<min<<" , 是第"<<m+1<<" 行第" <<k+1<<" 列\n";
}
19.有3*4的整數數組,求出最大的那個元素的值以及其所在的行列號。
#include <iostream.h>
int main()
{
int a[3][4]= {34,18,23,89,39,15,56,14,48,24,17,63};
int i, j , row, col, max;
max=_____________; row=0; col=0; // (1)
for (i=0; i<3; i++)
for (j=0;j<4; j++)
if (____________________) // (2)
{ max=____________; row=i; col=j; } // (3)
cout<<"Max="<<max<<" ";
cout<<"Row="<<row<<" ";
cout<<"Col="<<col<<endl;
return 0;
}
20.用數組構造Fibnacci序列的前20個數。
#include <iostream>
using namespace std;
int main()
{
int i,fib[20]={1,1};
for (i=_____;i<=19;i++) // (1)
fib[i]=_____+ ______; // (2)、(3)
for (i=0;i<=19;i++)
cout<<fib[i]<<“ ";
cout<<endl;
return 0;
}
21.從鍵盤上輸入若干個學生的成績,統計計算出平均成績(取整數),並輸出低於平均分的學生成績,用輸入負數結束輸入。
#include <iostream>
using namespace std;
int main( )
{
int score[1000],sum=0,n=0,ave,x,i;
cout<<"Enter mark:"; cin>>x;
while (x>0)
{
sum=___________; // (1)
score[n]=__________; // (2)
n++; __________; // (3)
}
if (n!=0)ave= ___________; // (4)
else ave=0;
cout<<"Average="<<ave<<endl;
for (i=0;i<n;i++)
if (__________________) cout<<score[i]<<" "; // (5)
cout<<endl;
return 0;
}
22.用冒泡排序方法將輸入的n個整數按從小到大的順序排列輸出。
#include <iostream>
using namespace std;
int main()
{
int a[10],i,j,temp,n=10;
for (i=0;i<n;i++) cin>>a[i];
for (i=1;i<=__________;i++) // (1)
{ for (j=0;j<=__________;j++) // (2)
if (______________________) // (3)
{ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }
}
for (i=0;i<n;i++) cout << a[i] <<" ";
cout <<endl;
return 0;
}
23.從鍵盤輸入一個字符串(設其最大長度為80個字符),判斷其是否是回文。若是輸出“Yes”,否則輸出“No”。回文是指正向、反向的拼寫都一樣。例如:ABCBA、aaaa等是回文;china、ABC等不是回文。
#include <iostream>
using namespace std;
int main( )
{
char str[81];
int i,j,n;
cin>>str;
n=strlen(str);
for (________________;i<j;i++,j--) // (1)
if (________________) break; // (2)
if (___________) cout<<"Yes!\n"; // (3)
else cout<<"No!\n";
return 0;
}
24.輸出二維數組b的最小值。
#include <iostream>
using namespace std;
int fun(int a[][4]);
int main()
{
int b[3][4]={{1,3,-5,7},{2,4,-6,8},{10,20,-30,40}};
cout<<fun(________)<<endl; // (1)
return 0;
}
int fun(int a[][4])
{
int i,j,tem;
tem=a[0][0];
for(i=0; i<3; i++)
for(j=0;j<4;j++)
if(___________________) tem=a[i][j]; // (2)
return(tem);
}
25.計算數組中各元素的平均值。
#include <iostream>
using namespace std;
float average (int *p, int n);
int main()
{
int i,a[5]={2,4,6,8,10};
float avg;
avg=average(_______,5); // (1)
cout<<"平均值="<<avg<<endl;
return 0;
}
float average (int *p, int n)
{
int i;
float sum=0.0;
for (i=0;i<n;i++)
sum=sum+_____________ ; // (2)
return (__________); // (3)
}
26.函數int hextodec(char c[])的功能是將字符串c中保存的十六進制整數轉換為十進制整數。
int hextodec(char c[])
{
int n=0 , i ;
_________________; // (1)
while(c[i]!='\0')
{
if (c[i]>='0' && c[i]<='9')
n=n*16+___________; // (2)
if (c[i]>='A' && c[i]<='F')
n=n*16+___________; // (3)
if (c[i]>='a' && c[i]<='f')
n=n*16+___________; // (4)
i++;
}
______________; // (5)
}
27.將從鍵盤上輸入的十進制數(long型)以二到十六進制形式輸出。
#include <iostream>
using namespace std;
int main( )
{
char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int c[64],base,i;
long n;
cout<<"Enter a number:"; cin>>n;
cout<<"Enter new base:"; cin>>base;
i=0;
do {
c[i]=______________; // (1)
i++;
n=_________________; // (2)
} while(n!=0);
cout<<"Transmite new base:";
for(--i;i>=0;--i)
cout<<__________________; // (3)
cout<<endl;
return 0;
}
28.從4個人中選2個人參加活動,一共有6種選法。從n個人中選m個人參加活動,一共有多少種選法?
#include <iostream>
using namespace std;
int f(int n, int m)
{
if(m>n) return 0;
if(m==0) ___________; // (1)
return f(____________) + f(___________); // (2)、 (3)
}
int main()
{
int m, n;
cin>>n>>m;
cout<<f(n, m)<<endl;
return 0;
}
29.刪除字符串s中指定的字符ch。編程實現該函數的定義,使得程序運行后,輸出:Iamaboy!
#include <iostream>
using namespace std;
void fun(char *s,char ch)
{
char *p=s;
while (__________) // (1)
{
if (*s!=ch)
{ *p=*s; __________; } // (2)
s++;
}
__________; // (3)
}
int main()
{
char str[]="I am a boy!";
func(str,' ');
cout<<str<<endl;
return 0;
}
30.函數fun的功能是:根據所給的年、月、日,計算出該日是這一年的第幾天,並作為函數值返回。例如,函數fun(2016,10,1)的返回值為275,表示2016年10月1日是該年的第275天。請填空將函數補充完整。
int fun(int year,int month,int day)
{
int table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int s=0,i;
for (i=1;i<__________; i++) // (1)
s=s+__________; // (2)
s=s+day;
if ((________________________________________) && month>2) // (3)
s=s+1;
return s;
}
31.函數int fun(int x)的功能是求正整數x的逆序數。例如,函數fun(1234)的返回值為4321。
int fun(int x)
{
int sum = 0;
while (x != 0)
{
______________________; // (1)
______________________; // (2)
}
_____________________________; // (3)
}
32.把一個整數的每個數位都平方后求和,又得到一個整數,我們稱這個整數為位平方和。對新得到的整數仍然可以繼續這一運算過程。比如,給定整數為4,則一系列的運算結果為:16,37,58,89,....。已知一個整數x,求第n步的運算結果。
#include <iostream.h>
int digitSum(int x)
{
int s=0,d;
while (__________________) // (1)
{ __________________; // (2)
s=s+d*d;
x=x/10;
}
__________________; // (3)
}
int main()
{
int x,n,i;
cin>>x>>n;
for (i=1;i<=n;i++)
x=digitSum(x);
cout<<x<<endl;
return 0;
}
參考答案:
1.(1)x (2)10 (3)x>max
2.(1)x2=x1 (2)day—(或 day=day-1)
3.(1)i/1000 (2)a+c==b*d (3)break
4.(1)1 (2)0 (3)0 (4)j*10+k (或k*10+j)
5.(1)y=i/10%10 (2)x*x*x+y*y*y+z*z*z==i
6.(1)i<100 (2) continue
7.(1)j==i (2)k!=i && k!=j (3)100*i+10*j+k
8.(1)i/10%10 (2)i%10 (3)continue
9.(1)i<=10 (2) j<=(100-10*i)/5 (3)100-10*i-5*j
10.(1)20 (2)(100-five*5)/2
11.(1)number%10 (2)number/10 (3)number>0
12.(1)t>=10 (2)t!=0 或 t (3)t=m
13.(1)n<100 (2)break
14.(1)x<3 (2)x%i==0 (3)i++
15.(1)n<=100 (2)sign*1.0/(2*n-1) (3)-sign
16.(1)1 (2)s*t (3)i+2 (4)pi*4
17.(1)n=n*i (2)e=e+1.0/n
18.(1)a[i][j]<min (2)min=a[i][j]
19.(1)a[0][0] (2)a[i][j]>max (3)a[i][j]
20.(1)2 (2)fib[i-1] (3)fib[i-2]
21.(1)sum+x (2)x (3)cin>>x (4)sum/n (5)score[i]<ave
22.(1)n-1 (2)n-1-i (3)a[j]>a[j+1]
23.(1)i=0,j=n-1 (2)str[i]!=str[j] (3)i>=j
24.(1)b (2)a[i][j]<tem
25.(1)a (2)*(p+i) (或 p[i]) (3)sum/n
26.(1)i=0 (2)c[i]-48或c[i]-'0' (3)c[i]-55或c[i]-‘A’+10 (4)c[i]-87 或c[i]-‘a’+10 (5)return n
27.(1)n%base (2)n/base (3)b[c[i]]
28.(1)return 1 (2)n-1,m-1 (3)n-1,m
29.(1)*s!='\0' (2)p++ (3)*p='\0'
30.(1)month (2)table[i] (3)year%4==0 && year%100!=0 || year%400==0
31.(1)sum = sum * 10 + (x% 10) (2)x =x / 10 (3)return sum
32.(1)x!=0 (2)d=x%10 (3)return s