2015春电大《面向对象程序设计》综合习题(1)

时间:2024-04-30 10:27:50 5A范文网 浏览: 平时作业 我要投稿
面向对象程序设计综合习题(1)及答案
一、单选题
1. C++源程序文件的缺省扩展名为()。
A. cpp   B. exe   C. obj   D. lik
2. 编写C++程序一般需经过的几个步骤依次是(  )。
A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试
C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接
3. 程序中主函数的名字为()。
A. main  B. MAIN  C. Main  D. 任意标识符
4. 存储以下数据,占用存储字节最多的是()。
A. 0  B. ‘0’  C. “0”  D. 0.0
5. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式 的表达式是()。
A. 1.0/a*b*cB. 1/(a*b*c)C. 1/a/b/(float)cD. 1.0/a/b/c
6. x>0 || y==5的相反表达式为()。
A. x<=0 || y!=5B. x<=0 && y!=5   C. x>0 || y!=5 D. x>0 && y==5
7. 字符串”a+b=12/n”的长度为()。
A. 6  B. 7  C. 8  D. 9
8. 循环语句“for(int i=0; i<n; i++) cout<<i*i<<’ ’;”中循环体执行的次数为()。
A. 1  B. n-1  C. n D. n+1
9. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}
A. 4  B. 5  C. 6  D. 7
10. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}
A. 4  B. 5  C. 6  D. 7
11. 循环体至少被执行一次的语句为()。
A. for循环  B. while循环  C. do循环  D. 任一种循环
12. 在下面的一维数组定义中,哪一个有语法错误。()
   A. int a[]={1,2,3};  B. int a[10]={0};
   C. int a[];D. int a[5];
13. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。
A. 2  B. 4  C. 6  D. 8
14. 以下说法中正确的是()。 
A. C++程序总是从第一个定义的函数开始执行
B. C++程序总是从main函数开始执行
C. C++函数必须有返回值,否则不能使用函数
D. C++程序中有调用关系的所有函数必须放在同一个程序文件中
15. 以下关于函数模板叙述正确的是()。
A. 函数模板也是一个具体类型的函数
B. 函数模板的类型参数与函数的参数是同一个概念
C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数
D. 用函数模板定义的函数没有类型
16. 函数原型语句正确的是()。
A. int Function(void a); B.void Function (int);
C. int Function(a);D.void int(double a);
17. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为()个。
A.  1 B.  2 C.  4 D.  5
18. 以下正确的说法是()。
A. 用户调用标准库函数前,必须重新定义
B. 用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C. 系统不允许用户重新定义标准库函数
D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中
二、填空题
1. C++语言的编译单位是扩展名为__________的__________文件。
2. 用于输出表达式值的标准输出流对象是_________。
3. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。
4. 一条表达式语句必须以______作为结束符。
5.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的______语句。
6.当使用_______保留字作为函数类型时,该函数不返回任何值。
7. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。
8. 十进制常数245对应的十六进制的C++表示为__________。
9. float和double类型的数据分别占用_________和________个字节。
10. 字符串”This/’s a book./n”的长度为__________。
11. 假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为__________和__________。
12. 假定x是一个逻辑量,则x || true的值为__________。
13. 假定x是一个逻辑量,则x && !x的值为__________。
14. 数学算式 的C++表达式为________________。
15. 常数-4.205和6.7E-9分别具有__________和__________位有效数字。
16. 若x=5, y=10, 则计算y*=++x表达式后,x和y的值分别为______和______。
17. 含随机函数的表达式rand()%20的值在_____至______区间内。
18. 假定x=5,y=6,则表达式x++*++y的值为__________。
三、程序填空:
   1. 打印出2至99之间的所有素数(即不能被任何数整除的数)。
#include<iostream.h>
#include<math.h>
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<<n<<' ';
}
cout<<'/n';
}

(1)   (2)  (3)
2. 下面函数是求两个整型参数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)
3. 主函数调用一个fun函数将字符串逆序。
   #include<iostream.h>
   #include<string.h>
   ___(1)___;
   void main( ) {
   char s[80];
   cin>>s;
   ___(2)___;
   cout<<”逆序后的字符串:”<<s<<endl ;
   }
   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)
四、写出程序运行结果
1.  #include<iostream.h>
void main()
{
int a,b;
  for(a=1,b=2; b<50;) {
  cout<<a<<' '<<b<<' ';
  a=a+b;
  b=a+b;
}
cout<<endl;
cout<<a<<' '<<b<<' '<<endl;
}
   2. #include<iostream.h>
   void main()
   {
int x=5;
    switch(2*x-3) {
  case 4: cout<<x<<’ ’;
  case 7: cout<<2*x+1<<’ ’;
  case 10: cout<<3*x-1<<’ ’; break;
  default: cout<<"default"<<endl;
    }
    cout<<"switch end."<<endl;
   }
3. #include<iomanip.h>
   const int M=20;
   void main()
   {
    int c2,c3,c5;
    c2=c3=c5=0;
    for(int i=1; i<=M; i++) {
     if(i%2==0) c2++;
     if(i%3==0) c3++;
     if(i%5==0) c5++;
    }
    cout<<c2<<' '<<c3<<' '<<c5<<endl;
   }
五、指出程序或函数的功能
1.  #include<iostream.h>
void main()
{
int i,s=0;
for(i=2;i<=30;i+=2) s+=i*i;
cout<<"s="<<s<<endl;
}
2. #include<iostream.h>
   double f1(int n) {
    double sign=1,s=1;
    for(int i=2;i<=n; i++) {
     s+=sign/(i*i);
     sign*=-1;
    }
    return s;
   }
   void main()
   {
int a;
    cin>>a;
    cout<<f1(a)<<endl;
   }
六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。
1. 假定要求下面程序的输出结果为“11/15”,其主函数中存在着三行语句错误,请指出错误语句行的行号并改正错误行。
#include<iostream.h>
class Franction {  //定义分数类
int nume;  //定义分子
int deno;  //定义分母
public:
//把*this化简为最简分数,具体定义在另外文件中实现
   void FranSimp(); 
//返回两个分数*this和x之和,具体定义在另外文件中实现
   Franction FranAdd(const Franction& x);
//置分数的分子和分母分别0和1
void InitFranction() {nume=0; deno=1;}
//置分数的分子和分母分别n和d
void InitFranction(int n, int d) {nume=n; deno=d;}
   //输出一个分数
   void FranOutput() {cout<<nume<<'/'<<deno<<endl;}
};

  void main() //1行
{ //2行
Franction a,b,c;  //3行
a.InitFranction(6,15);  //4行
b.InitFranction(1); //5行
c.InitFranction();//6行
c=FranAdd(a,b);   //7行
cout<<c.nume<<’/’<<c.deno<<endl;   //8行
} //9行

错误行的行号为______、________和________。
分别改正为____________________、________________和___________________。

七、编程:
1. 计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
2. 求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。
3. 某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2和c3统计出成绩为优秀、达标和不达标的人数。

参考答案
一、选择题、
1. A2. B3. A4. D   5. D   6. B   7. B   8. C   9. C   10. C
11. C   32. C   13. C   14. B   15. C   16. B   17. B   18. B  
二、填空题
1. .cpp、 程序2. cout 3. 空白4. 分号 5. 原型(或声明)
17. .h、 .cpp18. 警告(warning)、 致命(error) 6. void  7. 4、 11
8. 0xF5 (F大小写均可) 9. 4、 8   10. 15 11. 1、 3
12. true(或1)13. false(或0)   14. 3*x*y/(x+y) 15. 4、 2  16. 6、 60 17. 0、 19 18. 35
三、程序填充参考解答
1. (1) n<=99(2) i<=temp   (3) break
2. (1) b%i==0   (2) i++ (或++i)   (3) b>=i
3. (1) void fun(char ss[])  (2) fun(s)  (3) i<n/2
四、程序运行结果参考解答
1. 1 2 3 5 8 13 21 34
   55 89
2. 11 14 switch end.
3. 10 6 4
五、指出程序或函数的功能
1.计算并输出22+42+62++302的值。
2.计算并输出1+ 的值,其中a的值由键盘输入。
六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。
1. 5  7  8
   b.InitFranction(1,3); c=a.FranAdd(b); c.FranOutput()
七、编程:
1. #include<iostream.h>
   void main()
   {
    int i;//用i作为循环变量
    int p=1;  //用p作为累乘变量
    int s=1;  //用s作为累加循环变量
    for(i=1;i<=10;i++) {p*=3; s+=p;}
    cout<<s<<endl;
   }
2. #include<iostream.h>
   void main()
   {
     int x,max;
    cin>>x;
    max=x; 
for(int i=0;i<9;i++) {
     cin>>x;
     if(x>max) max=x; 
    }
    cout<<"max:"<<max<<endl;
   }
3. #include<iomanip.h>
   void main()
   {
int c1,c2,c3;
double x;
c1=c2=c3=0;
    cin>>x;
    while(x>0) {
     if(x<=12) c1++;
else if(x<=15) c2++;
     else c3++;
     cin>>x;
    }
cout<<c1<<’ ’<<c2<<’ ’<<c3<<endl;
   }

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

相关文章:

2015春黑龙江电大《行政领导学A》单元练习二04-30

广东电大《香港法概论》简单和论述04-30

广东电大《香港法概论》单项选择题题集04-30

五字加一笔能写出多少字04-30

come的反义词04-30

跟牛谐音的词语,成语04-30

“庖丁解牛”这个成语的起源?04-30

2015春黑龙江电大《行政领导学A》单元练习四04-30

2015春黑龙江电大《行政领导学A》单元练习三04-30

敢作敢当和敢做敢当的区别04-30

热搜文章
最新文章