《面向对象程序设计》综合复习题集(杨永斌整理) 下载本文

double x,p1=1,p2=1,s=0; int i,j=1;

cout<<\输入x的值:\ cin>>x;

for(i=1;i<=10;i++) { p1*=___(1)_____; p2*=____(2)____;

i+1

s+=j*p1/p2; //j的值为(-1) j=____(3)____; }

cout<

(1) (2) (3)

3. 打印出2至99之间的所有素数(即不能被任何数整除的数)。 #include #include void main() {

int i,n;

for(n=2; ___(1)___; n++) {

int temp=int(sqrt(n)); //求出n的平方根并取整 for(i=2; ___(2)___; i++) if(n%i==0) ___(3)___; if(i>temp) cout<

cout<<'\\n'; }

(1) (2) (3)

4. 采用辗转相除法求出两个整数的最大公约数。 #include void main() {

int a,b;

cout<<\请输入两个正整数:\ cin>>a>>b;

while(a<=0 || __(1)___) {cout<<\重新输入:\ while(b) { int r; r=a%b;

___(2)___; ___(3)___; //分别修改a和b的值 }

cout<

(1) (2) (3)

5. 把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。

#include void main() {

int x;

cout<<\请输入一个整数,若小于3则重输:\ do cin>>x; while(___(1)___); int i=2; do{

while(___(2)___) { cout<

___(3)___; }while(i

if(x!=1) cout<

(1) (2) (3)

6. 下面函数是求两个整型参数a和b的最小公倍数。 int f2(int a, int b) {

int i=2, p=1; do {

while(a%i==0 && ___(1)___) { p*=i; a/=i; b/=i; }

___(2)___;

}while(a>=i && ___(3)___); return p*a*b; }

(1) (2) (3)

7. 在输出屏幕上打印出一个由字符’*’组成的等腰三角形,该三角形的高为5行,从上到下每行的字符数依次为1,3,5,7,9。 #include void main() {

int i,j;

for(i=1;___(1)___;i++) { for(j=1;j<=9;j++)

if(j<=5-i || ___(2)___) cout<<’ ’; else ___(3)___; cout<

(1) (2) (3)

8. 统计字符串中英文字母个数的程序。 #include int count (char str[]); void main(){ char s1[80];

cout <<”Enter a line:”; cin >>s1;

cout <<”count=”<

int count(char str[]){

int num=0; //给统计变量赋初值 for(int i=0;str[i];i++)

if (str[i]>=’a’ && str[i]<=’z’ ||___(1)___ ) ___(2)___; ___(3)___; }

(1) (2) (3)

9. 主函数调用一个fun函数将字符串逆序。

#include #include

___(1)___; void main( ) { char s[80]; cin>>s; ___(2)___;

cout<<”逆序后的字符串:”<

void fun(char ss[]) { int n=strlen(ss);

for(int i=0; ___(3)____; i++) { char c=ss[i];

ss[i]=ss[n–1–i]; ss[n–1–i]=c; } }

(1) (2) (3)

10. 从一个字符串中删除所有同一个给定字符后得到一个新字符串并输出。 #include const int len=20;

void delstr(char a[],char b[],char c); void main() {

char str1[len],str2[len]; char ch;

cout<<\输入一个字符串:\ cin>>str1;

cout<<\输入一个待删除的字符:\ cin>>ch;

delstr(str1,str2,ch); cout<

void delstr(char a[],char b[],char c) {

int j=0;

for(int i=0; ___(1)___; i++) if(___(2)___) b[j++]=a[i]; b[j]=___(2)___; }

(1) (2) (3)

11. 采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出。

#include const int N=8; void main() {

int a[N],*p,*q;

for(p=a; p

int r=*p; *p=*q; *q=r; ___(2)___; ___(3)___; }

for(p=a;p

(1) (2) (3)

12. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。 #include void main()

{

int x;

cout<<\输入一个整数:\ cin>>x;

int a[20],k=0,r; do {

r=x%2; a[k++]=r; x=___(1)___; } while(___(2)___);

for(--k;k>=0;k--) ___(3)___; cout<

(1) (2) (3)

13. 对数组a[n]按升序进行的选择排序算法 void SelectSort(int a[], ___(1)___) {

int i,j,k;

for(i=1;i

for(j=i;j

if(a[j]

int x=a[i-1]; a[i-1]=a[k]; ___(3)___; } }

(1) (2) (3)

14. 对数组a[n]按升序进行的插入排序算法 void InsertSort(___(1)___, int n) {

int i,j,x;

for(i=1;i

for(j=i-1;j>=0;j--) //为x顺序向前寻找合适的插入位置 if(x

(1) (2) (3)

15. 对按从小到大排列的有序数组a[n]进行二分查找x的算法,若查找成功返回该元素下标,否则返回-1。

int BinarySearch(int a[],int x)