求大一C++期末考试试卷,感激不尽!!!

如题所述

第1个回答  2010-12-23
(一)选择题(共10题,每题1分,共10分)
1. 以下不属于程序设计三要素的内容是: 。
A. 算法 B. 语言 C. 环境 D. 应用
2. 以下描述中,包含了5个典型的计算机硬件结构部分的内容是: 。
A.CPU、硬盘、主存 B. CPU、存储器、I/O设备
C. 存储器、I/O设备、系统总线 D. CPU、存储器、系统总线
3. 以下不同数制表示的数中最小的数值是: 。
A. 二进制11011111 B. 十六进制DF
C.十进制217 D. 八进制337
4. 设一个栈的输入元素序列为a1,a2,a3,a4,输入过程中允许出栈,规定每个元素入栈、出栈只能各一次,则所得到的输出元素序列,不可能出现的是 。
A. a1,a2,a3,a4 B. a4,a3,a2,a1
C.a1,a3,a4,a2 D. a4,a1,a2,a3
5.在计算机中表示一个浮点数, 下面说法不正确的是 。
A. 尾数反映浮点数的精度,阶反映浮点数后表示范围
B. 尾数表示数的有效数字,阶表示数中小数点的位置
C. 尾数为二进制定点纯整数,阶为二进制定点纯小数
D. 浮点数由尾数和阶两部分组成
6.十进制数 -27,用8位二进制数表示的原码和补码为 。
A. 11011111、10011011 B. 10011011、11100101
C. 00011011、00011011 D. 10011011、10011011
7. 微型计算机的内存储器是 。
A. 按二进制位编址 B. 按字节编址
C. 按字长编址 D. 根据微处理器型号不同而编址不同
8. 根据计算机执行一条指令过程的基本步骤,下面选择正确的是 。
① 分析指令 ② 取下一条指令 ③ 执行指令
④ 取指令 ⑤ 执行过程结束
A. ①②③④⑤ B. ①③②⑤ C.②③④① D. ④①③②
9. 有一个数值152,它与十六进制数6A相等,那么该数值是 。
A. 二进制数 B. 八进制数 C. 十进制数 D. 四进制数
10.微型计算机总线上的信号有 。
A. 控制信号、数据信号 B. 地址信号、控制信号
C. 数据信号、地址信号、控制信号 D. 二进制信号
(二)填空题(共10题,每题1分,共10分)
1. 64K的内存空间需要 条地址线,其最大地址为 H。
2. 最主要和最基本的三种逻辑运算为逻辑非 、 、 。
3. 常用的排序算法包括 、 。
4. 从一组给定的数据中找出所需的数据的过程称为 。将问题的候选解按某种顺序逐一枚举和检验,若发现当前的候选解不可能是最终解时,就放弃它而选下一个候选解的过程称为 。
5. 有一数组a长度为11,其中前10个元素已按升序排序。输入一个数,要求按顺序放入数组中,请在下面N-S图的@和#处填写相应的语句。
输入待插入的数值 → number
number>a[9]
T F
for( i=0; i<10; i++)
#
T F
@ 将a[9]到a[i]元素顺
序向后移动一个位置

number → a[i]
输 出 结 果

#:
@:
二.Visual C++程序设计语言部分(共计80分)
(三)选择题(每题1.5分,计15分)
1.设整型变量a的值是1,则C++条件表达式2 <= a < 3的值是 。
A:1 B:0 C:不确定 D:非法的表达式
2.设有枚举类型定义:
enum Drinking{cola, coffee = 4, tea, water = 0};
则枚举量tea的值是 。
A:3 B:2 C:5 D:-1
3. 定义下列函数max实现比较3个整数中最大的一个,并返回该最大值:
int max(int a, int b, int c)
{
int t = 0;
t = a > b ? a : b > c ? t : c;
return t;
}
则执行下列语句,int r = max(2, 9, 8); 变量r的值是 。
A:9 B:8 C:2 D:0
4.下列关于成员函数特性的描述中, 是不正确的。
A:成员函数可以重载
B:成员函数一定为内联函数
C:成员函数可以是静态的
D:成员函数可以设置参数的默认值
5.在while(a)中,a与下列哪个条件表达式等价
A:a == 0 B:a != 0 C:a == 1 D:a != 1
6.执行下列程序段的输出是 。
for(int i = 1; i < 6; i++){
if(i%3 == 0) break;
cout<<i<<"\t";
}
A:1 2 3 4 5 B:1 2 4 5 C:1 2 D:3
7.浮点型变量f当前值是19.5,则执行下列语句后f的值是 。
float f = 19.5;
int n = int(f);
A:20 B:19.5 C:19 D:20.0
8.设有函数声明
double function(double a, double &b);
定义变量
double x, y;
则下面对函数正确的调用是 。
A:function(x, 1.0) B:function(x, y)
C:function(1.0, &x) D:function(x, 1.0+y)
9.以下哪些函数可以构成重载函数 。
(1). int function(int a, int b, int c);
(2). double function(int a, int b, double c);
(3). int function(int a, int b);
(4). double function(int a, int b, int c);
A:(1) (2) (4) B:(1)(3)(4) C:(1)(2)(3) D:(1)(4)
10.有关类的说法不正确的是 。
A:类是一种用户自定义的数据类型
B:只有类中的成员函数才能直接存取本类中的私有数据
C:类的构造函数与析构函数均可以重载
D:类的成员函数可以是重载函数,或者是有缺省参数的函数
(四)填空题(每题1.5分,计15分)
1.整型变量n的当前值是17,执行以下switch语句后n的值是 。
switch(n){
case 16: ++n;
case 17: n += 2;
case 18: ++n;
default: n++;
}
2.已知小写字母a的ASCII码值是97,则下列语句执行后输出是 。
char c = 102;
cout<<c;
3.若有下列程序,则程序运行后的输出是 。
#include<iostream>
using namespace std;
int main()
{
int i = 0;
do{
cout<<i<<", ";
} while(i++ < 5);
cout<<i;
return 0;
}
4.定义以下字符数组,则该数组的长度是 。
char szName[ ] = "mySEU";
5.若有下列程序,则程序运行后的输出是 。
#include<iostream>
using namespace std;
void f(int n);
int main()
{
f(789);
return 0;
}
void f(int n)
{
if(n >= 10)
f(n/10);
cout<<n%10;
}
6.下列语句执行后整型变量nCode的值是 。
int nCode = 0xAC;
nCode &= 0x8;
nCode >>= 3;
7.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的成员数据,共同行为被描述为类中的 。
8.下列语句执行后整型变量nCount的值是 。
int nCount = 0;
for(int j = 0; j < 6, nCount++; j++)
nCount++;
9.全局与静态变量在程序运行时自动初始化为0;下列语句的本意是求出1~10共10个数的和,但结果却不对,其原因是 。
int sum;
for(int i =1; I <= 10; i++)
sum = sum + i;
10. 运算符重载的两种形式:作为类的成员函数,以及 。
(五)阅读程序并填空(每空1-3分,共25分)
1. 写出下列程序的执行结果
#include <iostream >
using namespace std;
void fun(int &a,int &b)
{
int p; p=a; a=b; b=p;
}
void exchange(int &a,int &b,int &c)
{
if(a<b) fun(a,b);
if(a<c) fun(a,c);
if(b<c) fun(b,c);
}
int main()
{
int a,b,c;
a=94; b=16; c=178;
cout<<"First:"<< '\t'<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
exchange(a,b,c);
cout<<"Second:"<< '\t'<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
return 0;
}
(1) (1分)
(2) (3 分)

2. 阅读下列程序
#include <iostream>
using namespace std;
int main()
{
int x=9,n=8,y,i;
for(i=0;i<n;i++) x/=3;
y=1+x;
i=0;
do{
y*=2;
i++;
}while(i<=n);
cout<<"y="<<y<<endl;
return 0;
}
(3)y的表达式为: (3分)
(4)程序的运行结果为: (2分)
3. 设输入的5个整数是:32 64 53 87 54。
#include<iostream>
using namespace std;
int main()
{
int a,b,c,x;
a=b=c=0;
cout<<"Input 5 integers:"<<endl;
for(int i=0;i<5;i++)
{
cin>>x;
switch(x%3)
{
case 0:a+=x;break;
case 1:b+=x;break;
case 2:c+=x;break;
}
}
cout<<a<<';'<<b<<';'<<c<<endl;
return 0;
}
程序运行时屏幕输出为:
(5) (1分)
(6) (1分)
(7) (3分)
4. 阅读下列程序
#include <iostream >
using namespace std;
int add(double &, double);
double a;
int main()
{
const int n=5;
int num,i;
double d[n]={7.2,5.7,6.0,4.2,9.9};
for(i=0;i<n;i++)
if (d[i]>=6) num=add(a,d[i]);
a/=num;
cout<<"The average is:"<<a<<'\n'<<"The number is:"<<num<<endl;
return 0;
}
int add(double & a,double d){
static int c;
a+=d;
c++;
return c;
}
程序的运行结果为:
(8) (2分)
(9) (3分)
5. 阅读下列程序
#include<iostream>
using namespace std;
class MyTestClass
{
private:
int NumA;
public:
MyTestClass(int a)
{
cout<<a<<'\t'<<"is Constructor."<<endl;
NumA=a;
}
MyTestClass(MyTestClass &b)
{
cout<<"Copy Constructor."<<endl;
NumA=b.NumA;
}
void Print()
{
cout<<"The private data is: NumA="<<NumA<<endl;
}
~MyTestClass()
{
cout<<NumA<<'\t'<<"is Destructor."<<endl;
}
};
int main()
{
MyTestClass Myclass1(5), Myclass2(Myclass1);
Myclass2.Print();
return 0;
}
程序的运行结果为:
(10) (1分)
(11) (2分)
(12) (1分)
(13) (1分)
(14) (2分)
(六)完善程序题(共25分)
1、编写程序求π的值(每空2分,共6分。)

其中arctan( )用如右形式的级数计算:

计算直到级数某项绝对值不大于10-15为止;π和 x 均为double型。
#include<iostream>
using namespace std;
double arctan( double x ) ; //函数原型声明
int main( )
{
double a, b;
a = ; //注意:整数相除结果将会取整!

b = …… ; //此处略,b将计算出 的值
cout << "PI=" << a-b << endl;
return 0;
}
double arctan( double x )
{
int i , sign = 1;
double sum, e, f, sqr;
sum = 0; e = x; i = 1 ;
while ( ) //终止条件
{
f = e / i ;
sum += sign * f ;
e = ; //递推公式
sign *= -1;
i += 2;
}
return sum ;
}
2、输入一个8位二进制数,将其转换为十进制数输出。(每空2分,共4分。)
#include<iostream>
using namespace std;
const int n = 8 ; //输入数据的位数
int main( )
{
char bin[ n]; //用来放输入的数据,数据的每一位以字符方式存放
int x = 2 ; //x表示几进制,此时处理的是二进制
int a, dec, i ;
cout << "输入二进制序列:" << endl ;
for( i = n-1; i >= 0; i-- )
; //输入的是字符,且先输入的是二进制数的高位
dec = 0 ;
for( i = n-1; i >= 0; i-- )
{
a = ; //字符转换为数字,例如’1’1,’0’0
dec = dec*x + a ;
}
cout << "转换为十进制,值为:" << dec << endl;
return 0;
}

3、用递归算法实现正整数的倒序输出。(每空2分,共4分。)
#include<iostream>
using namespace std;
void backward( int x )
{ /* 这个数非0时,倒序输出总是先输出最后一位,然后在剩下的数中进行同样思路的倒序输出 */
if ( x>0 )
{ ;
;
}
}
int main( )
{
int n;
cout << “输入正整数:" << endl; cin >> n;
cout << “原整数” << n << “倒序输出为:";
backward ( n ) ;
cout << endl ;
return 0;
}
4、定义复数类,可完成复数基本运算,并应用它进行复数运算。(共11分。)
#include <iostream>
#include <cmath>
using namespace std;
class Complex{
double Real, Image ; //复数的实部和虚部
public:
Complex ( double r = 0.0, double i = 0.0 ) //定义构造函数
{ } (1.5分)
Complex ( Complex & com ) //定义复制构造函数
{ } (1.5分)
void Print( )
{ cout << "Real=" << Real << '\t' << "Image=" << Image << '\n' ; }
Complex operator+ ( Complex );
//Complex operator+ ( double );
Complex operator= ( Complex );
Complex operator+= ( Complex );
//double abs(void);
//Complex operator* ( Complex );
//Complex operator/ ( Complex );
};
Complex Complex::operator+ ( Complex c)
{
Complex Temp( ) ;//显式说明局部对象(此空2分)
return Temp ;
}
Complex Complex::operator+= (Complex c)
{
Complex temp;//定义temp为了返回Complex类的值,使+=可以连续使用
temp.Real = ; (1.5分)
temp.Image = ; (1.5分)
Real = ; (1.5分)
Image = ; (1.5分)
return temp;
}
Complex Complex::operator= ( Complex c )
{// 此处略 ……
}
int main(void){
Complex c1( 1.0, 1.0 ) , c2(2.0, 2.0) , c3(4.0, 4.0) , c;
c1.Print( );
c = c2 + c3 ; //将调用运算符‘+’的重载函数,运算符‘=’的重载函数
c.Print( );
c += c1 ; //将调用运算符‘+=’的重载函数
c.Print( );
return 0;
}
笔试模拟题答案
一.大学计算机基础部分
1. 选择题 (共10题,每题1分,共10分)
A、B、C、D、C、B、B、D、B、C
2. 填空题 (共5题,每题2分,共10分)
(1)16,FFFF (2)逻辑与、逻辑或
(3)冒泡排序 、 选择排序 或交换排序 (4)查找 回溯
(5)# : a[i]>number 或 number<a[i]
或 a[i]>=number 或 number<=a[i]
@: number → a[10]
二.C++程序设计部分(共计80分)
(三)选择题(每题1.5分,计15分)
A、C、D、B、B、 C、B、B、C、C
(四)填空题(每题1.5分,计15分)
(1)21; (2)f; (3)0, 1, 2, 3, 4, 5, 6; (4)6; (5)789;
(6)1; (7)成员函数; (8)1;(9)局部变量sum未初始化;
(10)友元函数
(五)阅读程序并填空(每空1-3分,共25分)
1. (1)First: a=94,b=16,c=178 (1分)
(2)Second: a=178,b=94,c=16 (3 分)
2. (3) 或 (3 分)
(4) y=512 (2分)
3. (5) Input 5 integers: (1 分)
(6) 32 64 53 87 54 (1 分)
(7) 141;64;85 (3 分)
4. (8) The average is:7.7 (2 分)
(9) The number is:3 (3 分)
5. (10) 10 is Constructor. (1 分) (11) Copy Constructor. (2 分)
(12) The private data is: NumA=10 (1 分)
(13) 10 is Destructor. (1 分)
(14) 10 is Destructor. (2 分)
(六)完善程序题(共25分)
1、编写程序求π的值(每空2分,共6分)
(1) 16.0 * arctan( 1/5.0 ) ;
(2) e / i > (1e-15 )
(3) e*x*x ;
2、输入一个8位二进制数,将其转换为十进制数输出。(每空2分,共4分)
(4) cin.get( bin[ i ] ) ; 或cin >> bin[ i ]; 或bin[ i ] = cin.get( );
(5) bin[i] - '0' ;
3、用递归算法实现正整数的倒序输出。(每空2分,共4分)
(6) cout << x%10 << ‘\t’ ;
(7) backward( x/10 ) ;
4、定义复数类,并应用它进行复数运算。(共11分)
(8) Real = r; Image = i; (1.5分)
(9) Real = com.Real ; Image = com.Image ; (1.5分)
(10) Real+c.Real , Image+c.Image ) ; (此空2分)
(11) Real + c.Real ; (1.5分)
(12) Image + c.Image ; (1.5分)
(13) temp.Real ; (1.5分)
(14) temp.Image ; (1.5分)
相似回答