高级语句程序设计(C++)
一、单项选择题
1、在一个C++程序中,main函数的位置()。
①必须在程序的开头②必须在程序的后面
③可以在程序的任何地方④必须在其它函数中间
2、C++程序基本单位是()。
①数据②字符③函数④语句
3、执行语句inti=10,*p=&i;后,下面描述错误的是()。
①p的值为10②p指向整型变量i
③*p表示变量i的值④p的值是变量i的地址
4、执行语句inta=5,b=10,c;int*p1=&a,*p2=&b;后,下面不正确的赋值语句是()。
①*p2=b;②p1=a;③p2=p1;④c=*p1×(*p2);
5、设i=1,j=2,则表达式i+++j的值为()。
①1②2③3④
6、设i=1,j=2,则表达式++i+j的值为()。
①1②2③3④
7、执行下列语句后,x的值是(),y的值是()。
intx,y;
x=y=1;++x||++y;
①不确定②0③1④2
8、已知x=5,则执行语句x+=x-=x×x;后,x的值为()。
①25②40③-40④20
9、已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a<b”的值为()。
①9②6③8④0
10、有如下程序段:
inta=14,b=15,x;
charc=’A’;
x=(a&&b)&&(c<’B’);
执行该程序段后,x的值为()。
①ture②false③0④1
11、下面程序的输出结果是()。
#include<iostream>
usingnamespacestd;
intmain()
{inta=6,b=6;
if(a>5)
a-=1;
b+=1;
else
a+=1;
b-=1;
cout<<”a=”<<a<<endl;
cout<<”b”<<b<<endl;
return0;}
①57②a=5b=7③a=5b=6④编译时出错
12、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intmain()
{inta=6,b=6;
if(a>5)
{a-=1;
b+=1;}
else
{a+=1;
b-=1;}
cout<<”a=”<<a<<endl;
cout<<”b”<<b<<endl;
return0;}
①57②a=5b=7③a=5b=6④a=6
13、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intmain()
{intx=6,y=8;
if(x++<6)
cout<<++y<<endl;
if(x>6)
cout<<--y<endl;
else
cout<<y++<<endl;
return0;}
①8②7③9④编译时出错
14、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intmain()
{intx=6,y=8;
if(++x<6)
cout<<++y<<endl;
else
cout<<y++<<endl;
if(x>6)
cout<<--y<<endl;
return0;}
①88②97③78④编译时出错b=5
15、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
f(inta)
{intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
intmain()
{inta=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<endl;
return0;
}
①789②777③71013④7911
16、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
voidfun(intx,inty,intz)
{z=x×x+y×y;}
intmain()
{intz=68;
fun(5,2,z);
cout<<z;
return0;}
①0②29③68④无定值
17、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intfun(inta,intb)
{return(++a×b++);}
intmain()
{intx=3,y=4,z=5,r;
r=fun(fun(x,y),z);
cout<<r<<x<<y<<endl;
}
①8534②6034③12645④8545
18、下面的程序中,当输入4、2时,其输出结果是(
#include<iostream>
usingnamespacestd;
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));)
elsereturn(n);}
intmain()
{inti;
cout<<”请输入一个整数:”;
cin>>i;cout<<endl;
cout<<fib(i)<<endl;
return0;}
①51②42③52④62
19、下面程序的输出结果为()
#include<iostream>
usingnamespacestd;
unsignedfunc(unsignednum)
{unsignedd=1,k;
do{
k=num%10;
num/=10;
}while(num);
return(k);}
intmain()
{unsignedn=26;
cout<<func(n);
return0;}
①2②4③6④5
20、下面程序的输出结果为()
#include<iostream>
usingnamespacestd;
func(inta,intb)
{intc;
c=a×b;
return(c);
}
intmain()
{intx=6,y=7,z=8,r;
r=func((x--,y,x×y),z--);
cout<<r;
return0;}
①294②245③280④416
21、下面程序的输出结果为()
#include<iostream>
usingnamespacestd;
intmain()
{inta[3][3]={{1,2},{3,4},{5}};ints=0;for(inti=1;i<3;i++)
for(intj=0;j<=i;j++)
s+=a[i][j];
cout<<s<<endl;
return0;}
①12②14③15④13
22、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
voidfun(int*x,int*y)
{
cout<<*x<<”“<<*y<<”“;
x=3;y=4;}
intmain()
{intx=1,y=2;
fun(&y,&x);
cout<<x<<”“<<y;
return0;}
①2143②1212③2112④1234
23、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intmain()
{inta[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
cout<<*--p;
return0;}
①编译出错②a[4]的地址③5④3
24、关于类和对象不正确的说法是()1类是一种类型,它封装了数据和操作②对象是类的实例
③一个类的对象只有一个④一个对象必属于某个类
25、下列的各种函数中,()不是类的成员函数。
①构造函数②析构函数③友元函数④拷贝初始化构造函数
26、作用域运算符的功能是()。
①标识作用域的级别的②指出作用域的范围的
③给定作用域的大小的④标识某个成员是属于哪个类的
27、关于成员函数特征的下述描述中,()是错误的。
①成员函数一定是内联函数②成员函数可以重载成员函数可以设置参数的默认值④成员函数可以是静态的
28、下列对派生类的描述中,()是错误的。
①一个派生类可以作为另一个派生类的基类
②派生类至少有一个基类3派生类的成员除了它自已的成员外,还包含了它的基类的成员派生类中继承的基类成员的访问权限在派生类中保持不变
29、对基类和派生类的描述中,()是错的。
①派生类是基类的具体化②派生类是基类的子集
③派生类是基类定义的延续④派生类是基类的组合
30、派生类的构造函数的成员初始化列表中,不能包含()。
①基类的构造函数②派生类中子对象的初始化
③基类的子对象初始化④派生类中一般数据成员的初始化
31、设置虚基类的目的是()。
①简化程序②消除二义性③提高运行效率④减少目标代码
32、定义重载函数的下列要求中,()是错误的。
①要求参数的个数不同②要求参数中至少有一个类型不同
③要求参数个数相同时,参数类型不同④要求函数的返回值不同
33、关于子类型的描述中,()是错的。
①子类型就是指派生类是基类的子类型
②一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型③在公有继承下,派生类是基类的子类型
④子类型关系是不可逆的
34、下列对重载函数的描述中,()是错的。
①重载函数中不允许使用缺省参数
②重载函数中编译系统根据参数表进行选择
③不要使用重载函数来描述毫无相干的函数
④构造函数重载将给初始化带来多种方式
35、已知一个类A,()是指向类A成员函数的指针。假设类A有3个公有成员:
Voidf1(int),voidf2(int)和inta。A*p;②intA::*pc=&A::a;③voidA::*pa();④A*pp;
36、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用()是
正确的1p=f1;②p=A::f1;③p=A::f1();④p=f1();
37、已知:p是一个指向类A数据成员m的指针,a1是类A的一个对象。如果要给m赋值
为5,()是正确的。1a1.p=5;②a1->p=5;③a1.*p=5;④*a1.p=5;
38、已知类A中一个成员函数说明如下:
voidSet(A&a)
其中,A&a的含意是()。指向类A的指针为a
②将A的地址值赋给变量Set
③a是类A的对象的引用,用来作函数Set()的形参
④变量A与a按位相与作为函数Set()的参数
39、有以下类的说明,请指出错误的地方
classCSample
{
private:
inta=2.5;(A)
CSample;(B)
public:
CSample(intval);(C)
~CSample;(D)
};
40、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
classpoint
{
public:
voidpoi(intpx=10,intpy=10)
{x=px;y=py;}
getpx()
{returnx;}
getpy()
{returny;}
private:
intx,y;
};
intmain()
{
pointp,q;
p.poi();
q.poi(15,15);
cout<<“p点的坐标是:”<<p.getpx()<<“,”;
cout<<p.getpy()<<endl;
cout<<“q点的坐标是:”<<q.getpx()<<“,”;
cout<<q.getpy()<<endl;
return0;
}
①p点的坐标是:10,10②p点的坐标是:0,0
q点的坐标是:15,15q点的坐标是:15,15
③p点的坐标是:0,0④p点的坐标是:10,10
q点的坐标是:0,0q点的坐标是:10,10
二、判断题
1、任何字符常量与一个任意大小的整型数进行加减都是有意义的。()2、在命名标识符中,大小写字母是不加区分的。()
3、引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。(4、typedef类型定义是原来定义一些C++中所没有的新类型。
5、枚举变量的取值收到该枚举变量所对应的枚举表中枚举常量的局限。()6、已知:inta(5);表达式(a=7)+a具有二义性。()
7、预处理命令是在进行编译时首先执行的,然后再进行正常编译。()8、条件编译命令只在编译时才有用。()
9、开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。()
10、switch语句中必须有break语句,否则无法退出switch语句。()
11、while循环语句的循环体最少执行一次。()
12、只有for循环的循环体可以是空语句,其它种类循环的循环体不能用空语句。())
13、当循环体为空语句时,说明该循环体不做任何工作,只起延时作用。()
14、在多重循环中,内重循环的循环变量引用的次数比外重的多。()
15、在C++中,说明函数时要用函数原型,即定义函数时的函数头部分。(
16、如果一个函数没有返回值,定义时需用void说明。()
17、使用内置函数是以增大空间开销为代价的。()
18、返回值类型、参数个数和类型都相同的函数也可以重载。()
19、在设置了参数默认值后,调用函数的对应实参就必须省略。()
20、函数形参的作用域是该函数的函数体。()
21、定义外部变量时,不用存储类说明符extern,而声明外部变量时用它。(
22、内部静态类变量与自动类变量作用域相同,但是生存期不同。()
23、静态类标识符在它的作用域之外是不存在的。()
24、使用关键字class定义的类中默认的访问权限是私有的(private)。()
25、指向对象的指针和指向类的成员的指针在表达形式上是不相同的。()
26、一维对象指针数组的每个元素应该是某个类的对象的地址值。()
27、一个类的构造函数中可以不包含对其子对象的初始化。()
28、派生类是从基类派生出来,它不能再生成新的派生类。()
29、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(
30、单继承情况下,派生类中对基类成员的访问也会出现二义性。()
31、构造函数可以被继承。()
32、析构函数不能被继承。()
33、解决多继承情况下出现二义性的方法之一是使用成员名限定法。()
34、子类型是不可逆的。()
三、填空题
1、下面程序是计算1~10之间偶数之和,请填空:
#include<iostream>
usingnamespacestd;
intmain()
{inta,b,i;
a=0;b=0;
for(i=0;;i++)
{a+=i;②;③;
cout<<”偶数之和为:”<<a<<endl;;
return0;}
2、下面程序是输出100内能被3整除且个位数是6的所有整数,请填空:
#include<iostream>
usingnamespacestd;
intmain()
{inti,j;
for(i=0;{j=i×10+6;
if())))
continue;;
cout<<j<<endl;④;
return0;}3、结构体类型与数组不同,数组中的数据的类型是的,结构体的成员的数据类型是,共用体类似于结构体,但是共用体的部分成员是,枚举类型是的集合。4、常量与变量的区别是:常量在程序运行中值,因此它的值在编译时便进行;而变量的值是可以,不是变量的。5、函数的形参在未被调用前要和实参相同。若不同,则按一般规则转换,若不同,则6、函数的递归分为,,递归由、两部分
组成。一般说,一个问题的解决要依靠另一问题的解决,而另一个问题的解决方法与上一问题的解决方法相同,则可用处理。
7、下面程序的功能是:求a的b次方,并输出,请填空。
#include<iostream>
usingnamespacestd;
doublefun(doublea,intb)
{inti;
doublez;
for(i=1,z=1;i<=b;i++)①;}
intmain()
{doublea;intb;
cout<<”请输入a的值:”;cout<<endl;
cout<<”请输入b的值:”;④;
cout<<endl;
cout<<cout<<endl;
return0;}
8、下面函数是检验输入的字符是大写还是小写或者不是26个字母,请填空。
#include<iostream>
usingnamespacestd;①;
fun(charch)
{inti;
if((ch>=’a’)&&(ch<=’z’)
)
i=2;
elsei=3;};
intmain()
{inti;
cout<<”请输入一个字符:”;
cin>>ch;
i=fun(ch);
if(i==1)
cout<<”是小写字母:”<<ch<<endl;
elseif(cout<<”是大写字母:”<<ch<<endl;
elsecout<<”是其它字符:”<<ch<<endl;
return0;}
9、下面是字符串拷贝程序,请填空。
voidccopy()
{charch1[]=”goodmorning!”,ch2[20];
inti=0,j=0;
while()
{ch2[j]=③;
}}
10、下面函数是寻找二维数组中每一行的最大值,请填空。
#defineN5
#defineM5
voidmax(inta[N][M])
{inti,j,p;
for(i=0;i<N;i++)
{;
for(j=1;j<M;j++)
if(a[i][p]<a[i][j])②;
cout<<i<<”:”<<p<<endl;
}
}
11、下面程序是将字符逆序化,请填空。
#include<iostream>
usingnamespacestd;①;
intmain()i=1;else{if(
{charch[]=”hello,boy!”;
charc;
inti=0,j=strlen(ch);
for(;;i++,j--)
{c=ch[i];③;
ch[j-1]=c;
}
cout<<ch;
return0;
}
12、下面程序的功能是将矩阵转置,请填空。
#include<iostream>
usingnamespacestd;
#defineI3
#defineJ4
voidinvert(inta[I][J])
{inti,j;
intb[J][I];
cout<<”arraya:”<<endl;
for(i=0;i<I;i++)
{for(j=0;j<J;j++)
{cout<<a[i][j]<<”“;
①;
}
cout<<endl;
}
cout<<”arrayb:”<<endl;
for(i=0;i<J;i+=)
{for(j=0;j<I;j++)
cout<<b[i][j]<<”“;
cout<<endl;
}
}
intmain()
{inta[I][J]={{1,2,3,4},{5,6,7,8},{1,3,5,7}};
return0;
}
四、程序分析题
1、下面程序的输出结果是(
#include<iostream>
usingnamespacestd;)
intfunc(inta,intb){staticintm=0;inti=2;i+=m+1;
m=i+a+b;
return(m);
}
intmain()
{intk=4,m=1,p;p=func(k,m);
cout<<p;
p=func(k,m);
cout<<p<<endl;
return0;}
#include<iostream>usingnamespacestd;intd=1;
intfun(intp)
{staticintd=5;
d+=p;
cout<<d;
return(d);
}
intmain()
{inta=3;
cout<<fun(a+fun(d))<<endl;return0;}
#include<iostream>usingnamespacestd;charch[]=”hello,boy!”;voidfun2(inti);
voidfun1(inti)
{cout<<ch[i];
if(i<3)
{i+=2;
fun2(i);}
}
voidfun2(inti)
{cout<<ch[i];
if(i<3)
{i+=2;
fun1(i);}
}2、下面程序的输出结果是(3、下面程序的执行结果是())
intmain()
{inti=0;
fun1(i);
cout<<endl;
return0;
}
4、下面程序的执行结果是(
#include<iostream>
usingnamespacestd;
intmain()
{inta[10]={0,1,2};
intj;
for(j=2;j<6;j++)
a[j+1]=a[j]+2*a[j-1]*a[j-2];
for(j=0;j<6;j++)
cout<<”a[“<<j<<”]is”<<a[j]<<endl;
return0;}
5、当输入123时,下列程序的输出结果是(
#include<iostream>
usingnamespacestd;
intmain()
{intstr[3],i,*p=str;
for(i=0;i<3;i++)
{cin>>*p++;
cout<<*(p-1);}
return0;}
6、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
voidfunc(int*a,intb[])
{b[0]=*a+6;}
intmain()
{inta,b[5];
a=0;b[0]=3;
func(&a,b);
cout<<b[0];
return0;}
7、下列程序的输出结果是()
#include<iostream>
usingnamespacestd;
intb=2;
intfunc(int*a)
{b+=*a;
return(b);}))
intmain()
{inta=2,res=2;
res+=func(&a);
cout<<res;
return0;}
8、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intw=3;
intfun(int);
intmain()
{intw=10;
cout<<fun(5)*w<<endl;
return0;}
intfun(intk)
{if(k==0)returnw;
return(fun(k-1)*k);}
9、下面程序的输出结果是()
#include<iostream>
usingnamespacestd;
intf(int);
intmain()
{inta=2,j;
for(j=0;j<3;j++)
cout<<f(a)<<”“;
cout<<endl;;
return0;}
intf(inta)
{intb=0;
staticintc=3;
b++;c++;
return(a+b+c);}
10、分析下列程序的输出结果(注:除了给出结果外,还要进行简单分析)
#include<iostream>
usingnamespacestd;
classL
{
public:
voidInitL(intx,inty){X=x;Y=y;}
voidMove(intx,inty){X+=x;Y+=y;}
intGetX(){returnX;}
intGetY(){returnY;}
private:
intX,Y;
www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。