一.选择题
1. 下面的哪一个保留字不能作为函数的返回类型?( C )
A. void B. int C. new D. long
2. 假定a为一个数组名,则下面的哪一种表示有错误?( 了B )
A. a[i] B. *++a C. *a D. *(a+1)
3. 在下面的二维数组定义中,哪一个是正确的?( D )
A. int a[5][]; B. int a[](10);
C. int a[][]; D. int a[][5]={{1,2,3},{4,5}};
4.下面的哪一个函数头格式不正确?( B )
A. AA(int a, int b) B. AA(int a=0, int b)
C. AA(int a=0, int b=0) D. AA(int a, int b=0)
5.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( B )。
A. AB operator +(AB& a, AB& b); B. AB operator +(AB& a);
C. operator +(AB a); D. AB& operator +();
6.当需要使用ostrstream流类定义一个流对象并联系一个字符串时,应在文件开始使用#include命令,使之包含( A)文件。
A. strstrea.h B. stdlib.h C. iostream.h D. fstream.h
7.下列变量名中,( A )是合法的。
A CHINA B byte-size C double D A+a
8.下列各种函数中,( C )不是类的成员函数。
A 构造函数 B 析构函数 C 友元函数 D 拷贝构造函数
9.下列( A )是正确的语句。
A ; B a=17 C x+y D cout<<"/n"
10.循环while(int i=0) i--;执行次数是( A )。
A 0 B 1 C 5 D 无限
11.设int f(int);和int g(int);是函数f和g的原形,以下将f作为语句调用的是(B )。
A g(f(3)); B f(g(3)); C g(f(3)+2); D p= f(g(3)+1);
12.设int * p2=&x,* p1=a;p2= *b;则a和b的类型分别是( B )。
A int * 和int B int * 和int **
C int 和int * D int * 和int *
13.设int x;,则经过( C )后,语句*px=0;可将x值置为0。
A int * px; B int const * px=&x;
C int * const px=&x; D const int * px=&x;
14.设void f1(int *m,long &n);int a;long b;则以下调用合法的是( B )。
A f1(a,b); B f1(&a,b);
C f1(a,&b); D f1(&a,&b);
15.以下结构类型可用来构造链表的是( B )。
A struct aa{ int a;int * b;}; B struct bb{ int a;bb * b;};
C struct cc{ int * a;cc b;}; D struct dd{ int * a;aa b;};
16.使用操作符setw对数据进行格式输出时,需要包含( C )文件。
A iostream.h B fstream.h C iomanip.h D stdlib.h
17.类型修饰符unsigned修饰( D )类型是错误的。
A char B int C long int D float
18.下列变量名中,( A )是合法的。
A _var B bye-bye C int D 123_cc
19.设int a=3,* p=&a;,则*p的值是( D )。
A 变量a的地址值 B 无意义 C 变量p的地址值 D 3
20.设int m=0;,下列表示引用的方法中,( A )是正确的。
A int &x=m; B int &y=10; C int &z; D float &t=&m
21.循环for(int i=0,x=0;!x&&i<=5;i++);的循环体执行次数是( B )。
A 5 B 6 C 1 D 无限
22.磁盘文件操作时,在打开磁盘文件的访问方式中,( C )是以追加数据
方式打开文件的。
A in B out C app D ate
23.类X中,若没有定义构造函数,则默认的构造函数是( A )。
A X ( ){ } B X (X & x){ *this=x;} C ~X ( ){ } D 不存在
24. int * p2=&x,* p1=a;*p2=*b;则变量a和b的类型分别是( D )。
A int和int B int * 和int C int和int * D int * 和int *
25.设p为指针变量,则以下表达式正确的是( B )。
A --p++ B --++p C --(p+5) D (p-5)++
26..设void f1(int &x,char * p);int m;char s[ ]="c++";以下调用合法的是( C )。
A f1(&m,&s); B f1(&m,s); C f1(m,s); D f1(m,&s);
27 .求一个字符串长度的标准函数为( A )。
A.strlen() B.dtrcap()
C.Strcat() D.strcmp()
28.假定AB为一个类,则执行“ABa(4),b[5],*p[2]:”语句时,自动调用该类构造
函数的次数为( A )。
A.6 B.7 C.9 D.11
29.设int a=3,* p=&a;,则*p的值是( D )。
A.变量a的地址值 B.无意义
C.变量p的地址值 D.3
30.使用操作符setw对数据进行格式输出时,需要包含( C )文件。
A.iostream.h B.fstream.h
C.iomanip.h D.stdlib.h
二.填空题
1.在c++语言中,用输出控制字符________表示输出一个换行。
2.表达式x=x+l表示成增量表达式为____________________。
3.关系表达式x+y>5的相反表达式为______________。
4.假定x=5,则执行“a=(x<0?10:20);”语句后a的值为________。
5.假定一个二维数组的定义为“int a[3][6];”,则该数组所含元素的个数为________.
6.要在屏幕上显示"Hello,world!"应执行语句cout<<____________________。
7.表达式8&3的结果是__________。
8.若一全局变量只允许本程序文件中的函数使用,则定义它时应加上修饰符_______________。
9.假定p所指对象的值为36,p+l所指对象的值为49,则*++p的值为——
10.假定AB为一个类,则执行"ABa[8];”语句时,系统自动调用该类构造函数的次数为————。
11.已知’A’一’Z’的ASCII码为65—90,当执行"charch=14*5+2;cout<<ch<<endl;”语句序列后,得到的输出结果为——。
12.float和double类型的长度分别为——和——。
13.假定一个二维数组的定义为“int a[3][6];”,则该数组所含元素的个数为——,所占存储空间的字节数为——.
14.执行“typedef int ABC[20];”语句把ABC定义为具有20个整型元素的 ———.
15.假定p所指对象的值为36,p+l所指对象的值为49,则*++p的值为——
16.假定a是一个二维数组,则 a[i][i]的指针访问方式为 ——。
17.假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为———。
18.对一个类中的数据成员的初始化可以通过构造函数中的——实现,也可以通过构造函数中的——实现。
19.当一个类对象离开它的作用域时,系统将自动调用该类的——。
20.假定AB为一个类,则执行"ABa[8];”语句时,系统自动调用该类构造函数的次数为————。
答案:1. ’/n’ 2. ++x 3. x+y<=5 4. 20
5. 18 6. "/"Hello,world!/"" 7. 0 8. static
9. 49 10. 8 11.H 12.4 8
13.18 72 14.数组类型 15. 49 16. *,(a[i]+”或*(*(a+i)十j)
17. *(x.a) 18.初始化表 函数体
19.析构函数 20. 8
三.写出下列每一个程序运行后的结果。
1.#include<iostream.h>
void main() {
int s1=0, s2=0;
for(int i=0; i<15; i++)
if(i%2) s1+=i;
else s2+=i;
cout<<s1<<','<<s2<<endl;
}
2.#include<iostream.h>
void main() {
int i=1,s=0;
while(s<15)s+=i++;
cout<<i<<’,’<<s<<ednl;
}
3.#include<iostream.h>
void main() {
int a[10]={8,19,46,15,6,24,27,18,20,53};
int c1=0, c2=0;
for(int i=0;i<10;i++) {
if(a[i]>=20) c1++;
if(a[i]>=10 && a[i]<=40) c2++;
}
cout<<c1<<','<<c2<<endl;
}
4.#include<iostream.h>
Int LB(int *a,int n)
For(int i=0;i<n;i++){
p*=*a;a++;
}
Return p;
Inta[5]={1,2,3,4,3};
Cout<<LB(a,5)<<endl;
}
5.#include<iostream.h>
struct Worker {
char name[15]; //姓名
int age; //年龄
float pay; //工资
};
void main() {
Worker x={"wangfong",46,1640};
Worker y, *p;
y=x; p=&x;
cou<<p->age+5<<’ ’<<p->pay-300<<endl;
}
19. #include<iostream.h>
void SB(char ch) {
switch(ch) {
case 'A': case 'a':
cout<<"well !"; break;
case 'B': case 'b'
cout<<"good !"; break;
case 'C': case 'c':
cout<<"pass ! "; break
default:
cout<<"bad! "; break;
)
cout<<endl;
}
void main() {
char a[6] ="Abcaf'
for(int i=0; a[i]; i++) SB(a[i]);
}
21. #include<iomanip. h>
void main() {
int a[8]= {3,5,7,9,11,13,15,17};
int * p=a;
for(int i=0;i<8;i++) {
p+=l0;
cout<<setw(5)<< * p++;
if((i+1} %3= =0} cout<<endl;
}
22. # inelude<iomanip, h>
void LF(int& x, int y) {
x=x+y;
y= x+y;
cout<<"x="<<x<<", y="<<y<<endl;
}
void main() {
int x=5, y=8,
cout<<"x="<<x<<'', y="<<y<<endl;
LF(x, y);
cout<<"x="<<x<<", Y="<<Y<<endl;
}
23.# include<iomanip, h>
void main() {
int x=25,y= 120;
cout<<"dec:"<<dec<<setw(l0) <<x<<setw(l0)<<y<<endl;
cout<<"oct: "<<oct<<setw(l0) <<x<<setw(l0)<<y<<endl;
cout<<"hex:"<<hex<<setw(10) <<x<<setw(10) <<y<<dec<<endl
}
答案:1. 49,56
2.6,5
3.5,6
4.72
5.51,1340
6.well!
good!
pass!
well!
bad!
7. 13 15 17
19 2l 23
25 27
8.x=5,y=8
x=13,y=21
x=13,y=8
9.dec: 25 120
Oct: 31 170
hex: 19 78
四.写出下列每个函数的功能
1.double FI(double n) {
//n 为大于等于1的整数
double x,y=0;
do {
cin>>x;
n--; y+=x;
} while(n>0);
return y;
}
2.template<class Type>
bool WE(Type a[], Type b[], int n) {
int c=0;
for(int i=0;i<n;i++)
if(a[i]==b[i]) c++;
if(c==n) return true; return false;
}
3.void LK(double a[], int n) {
double s=0;
int I,m=0;
for(i=0;i<n;i++) s+=a[i];
s=s/n;
for(i=0;i<n;i++) if(a[i]>=s) m++;
}
4. # inelude<iostream, h>
template<class Type>
Type WD(Type a[], int n) {
Type m= a[0] ;
for(int i=l;i<n;i++)
if(a[i]>m) re=a[i];
return m
}
5. # include<iomanip, h>
include< fstream, h>
void JD(char* fname)
//可把以fname所指字符串作为文件标识符的文件称为fname文件,
//假定该文件保存着一批整数。
{
ifstream fin(fname, ios: :in |ios: :nocreate | ios: :binary)
int x, s=O, n=O;
while(fin, read((char * ) &x, size of(x))) {
s+=x; n++
}
cout<<n<< ' ' <<s<<' ' << float(s)/n<<endl;
fin. close( );
}
6.已知6≤a≤30,15≤b≤36,编一程序求出满足不定方程2a十5b=126的全部整数组解。如(13,20)就是其中的一组解。
标准答案
1. 求出从键盘上输入的n个实数之和。
2.模板函数,判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回0。
3.统计出数组a的前n个元素中大于等于其平均值的元素个数并作为函数值m返回。
4.模板函数,从数组a的n个元素中求出最大值并返回。
5.从二进制文件中输入所有整数,计算并显示出所有整数的个数、总和与平均值。
6.整个程序正确得10分,否则按下面参考程序中语句后的注释给分。
#include<iostream.h>
void main( )
{
inta,bi //定义变量正确得2分
for(a=6;a<=30;a++) //外循环次数正确得2分
for(b=15;b<=36;b++) //内循环次数正确得2分
if(2xa+5,b==126)coul<<’(’<<a<<’,’<<b<<’)’<<endl;
//条件正确得2分,输出语句正确得2分
}
上一篇:邓小平理论形考作业
下一篇:暂无