将下面的程序补充完整,以完成指定的功能。
1.输入10个整数,找出最大数。
#include
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=“< return 0; } 2.猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子? #include using namespace std; int main() { int day,x1,x2; day=9; x2=1; while (day>0) { x1=2*(x2+1); _____________ ; // (1) _____________ ; // (2) } cout<<"Total="< return 0; } 3.求符合下列条件的四位数中最大的一个数。条件为:它的千位数字与十位数字之和等于百位数字与个位数字之积,例如,3136,3+3=1*6 ,故3136是符合条件的一个四位数。 #include 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<
_____________; // (3) } } } 4.求所有的水仙花数。所谓水仙花数是指一个三位数的各位数字的立方和等于该数本身。例如:13+53+33=153。 #include 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< return 0; } 5.求所有的水仙花数。所谓水仙花数是指一个三位数的各位数字的立方和等于该数本身。例如:13+53+33=153。 #include 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<
} return 0; } 6.输出1000以内能被3整除且个位数为6的所有整数。 #include using namespace std; int main() { int i, num; for (i=0;_________; i++) // (1) { num=i*10+6; if (num %3!=0) ____________; // (2) cout< } cout< return 0; } 7.按从小到大的顺序输出用0至9之间的不同的数字组成的全部三位数(从102到987共648个)。 #include 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< return 0; } 8.按从小到大的顺序输出用0至9之间的不同的数字组成的全部三位数(从102到987共648个)。 #include 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<
cnt++; } cout< return 0; } 9.将100元换成10元、5元和1元的组合,共有多少种组合方法。 #include 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<
count++; } cout< return 0; } 10.用1元人民币兑换成1分、2分、5分,共有多少种不同的兑换方法。 #include 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 << " 种兑换方法" < return 0; } 11.从键盘输入一个非负整数,将它反向显示出来。例如,输入1234,输出4321。 #include using namespace std; int main() { int number,digit; cin>>number; cout<< number <<" 的逆序数为 "; do { digit=_________________________; // (1) number=________________________; // (2) cout< } while (______________________); // (3) cout< return 0; } 12.数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。例如,24的数根是6,39的数根是3。输入一个正整数,输出它的数根。 #include #include 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< return 0; } 13.输出2至99之间的所有质数(质数是只能被1和它本身整除的正整数)。 #include #include 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< } cout< return 0; } 14.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。 #include using namespace std; int main() { int x; cout<<"请输入一个整数,若小于3则重输:"; do cin>>x; while (___________); // (1) int i=2; do { while (___________) { // (2) cout<
x/=i; } __________; // (3) } while(i if (x!=1) cout< cout< return 0; } 15.求1―1/3+1/5―1/7+1/9…的前100项的和。 #include 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 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 using namespace std; int main() { int i,n=1; double e=1; for (i=1;i<=10;i++) { ___________; // (1) ___________; // (2) } cout< return 0; } 18.求一个二维整型数组中的最小值,并指明它是数组的第几行第几列的元素(约定:下标为[0][0]的元素是第1行第1列的元素)。 #include 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<< "最小值="< } 19.有3*4的整数数组,求出最大的那个元素的值以及其所在的行列号。 #include 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="< cout<<"Row="< cout<<"Col="< return 0; } 20.用数组构造Fibnacci序列的前20个数。 #include 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< cout< return 0; } 21.从键盘上输入若干个学生的成绩,统计计算出平均成绩(取整数),并输出低于平均分的学生成绩,用输入负数结束输入。 #include 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="< for (i=0;i if (__________________) cout< cout< return 0; } 22.用冒泡排序方法将输入的n个整数按从小到大的顺序排列输出。 #include using namespace std; int main() { int a[10],i,j,temp,n=10; for (i=0;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 cout < return 0; } 23.从键盘输入一个字符串(设其最大长度为80个字符),判断其是否是回文。若是输出“Yes”,否则输出“No”。回文是指正向、反向的拼写都一样。例如:ABCBA、aaaa等是回文;china、ABC等不是回文。 #include using namespace std; int main( ) { char str[81]; int i,j,n; cin>>str; n=strlen(str); for (________________;i if (________________) break; // (2) if (___________) cout<<"Yes!\n"; // (3) else cout<<"No!\n"; return 0; } 24.输出二维数组b的最小值。 #include 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< 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 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<<"平均值="< return 0; } float average (int *p, int n) { int i; float sum=0.0; for (i=0;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 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< return 0; } 28.从4个人中选2个人参加活动,一共有6种选法。从n个人中选m个人参加活动,一共有多少种选法? #include 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< return 0; } 29.删除字符串s中指定的字符ch。编程实现该函数的定义,使得程序运行后,输出:Iamaboy! #include 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< 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 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< return 0; } 参考答案: 1.(1)x (2)10 (3)x>max 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] 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 32.(1)x!=0 (2)d=x%10 (3)return s
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]
23.(1)i=0,j=n-1 (2)str[i]!=str[j] (3)i>=j
24.(1)b (2)a[i][j]
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
31.(1)sum = sum * 10 + (x% 10) (2)x =x / 10 (3)return sum