C++程序设计学习通超星期末考试答案章节答案2024年_第1页
C++程序设计学习通超星期末考试答案章节答案2024年_第2页
C++程序设计学习通超星期末考试答案章节答案2024年_第3页
C++程序设计学习通超星期末考试答案章节答案2024年_第4页
C++程序设计学习通超星期末考试答案章节答案2024年_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++程序设计学习通超星期末考试章节答案2024年下列选项中,属于变量是:

答案:银行卡号下列选项中,属于常量是:

答案:人的出生日期下列选项中,不合法的标识符是:

答案:int下列选项中,合法的标识符是:

答案:IntC语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符

答案:必须为字母或下划线一个C程序是由______。

答案:函数组成C语言规定:在一个源程序中,main函数的位置______。

答案:可以任意以下叙述不正确的是______。

答案:在C程序中,注释说明只能位于一条语句的后面以下叙述正确的是______

答案:C语言本身没有输入输出语句一个C程序的执行是从______。

答案:本程序的main函数开始,到main函数结束在下列选项中()是istream类的对象。

答案:cin下列程序运行结果为______。#includeusingnamespacestd;classS{public:

~S()

{

cout<<"S"<<"\t";

}};charfun0(){

Ss1;

throw('T');

return

'0';}intmain(){

try

{

cout<

}

catch(charc)

{

cout<

}

return0;}

答案:S

T

关于虚函数的描述中,()是正确的。

答案:基类中说明了虚函数后,派生类中与其对应的函数可以不必说明为虚函数下列关于异常的叙述错误的是

答案:编译错属于异常,可以抛出二进制文件流fdat读指针移到文件头的语句是()。

答案:fdat.seekg(0,ios::beg);如果一个类中至少有一个纯虚函数,那么就称该类为().

答案:抽象类多态性是通过()实现的。

答案:虚函数下列流类中可以用于处理文件的是()。

答案:fstream关于虚函数的描述中,()是正确的。

答案:虚函数是一个成员函数对虚函数的调用(

)。

答案:不一定使用动态联编能实现删除文件数据的语句是()。

答案:ofstreamfs(“date.dat“,ios::trunc);抽象类指的是(

)。

答案:有纯虚函数的类要求打开文件D:\file.dat,并能够写入数据,正确的语句是()。

答案:fstreaminfile(“D:\\file.dat”,ios::in|ios::out);若有定义inta[3][4];则与元素a[0][0]不等价的表达式是。

答案:*a设有说明intb[4][4],以下不能等价表示元素b[3][3]的是。

答案:(*(*(b+3))+3)若有定义inta[2][3];则对a数组的第i行第j列元素值的正确引用是。

答案:*(*(a+i)+j)设有说明:inta[4][4]={1,2,3,4,5,6,7,8,9,10},*p=a[1],(*q)[4]=a;则以下不能访问数值为7的数组元素的表达式是。

答案:*(a+1)+2在下列表达式中,与下标引用A[i][j]不等效的是。

答案:*(A+i+j)设s和t分别为指向两个长度相同的字符数组的指针,则循环语句while();可以正确实现字符串t到s的完整复制功能。

答案:*s++=*t++若有定义chara[]="Itismine",*p="Itismine",以下叙述中错误的是。

答案:p不能再指向别的字符串常量若有说明char*s[]={"234","5678","9012","3456","7890"};则表达式*s[1]>*s[3]比较的是。

答案:'5'和'3'定义一维数组inta[5],*p;则下面描述错误的是

答案:表达式a=a+1是合法的一个C++程序的执行是从_____。

答案:本程序的main函数开始,到main函数结束以下叙述不正确的是_____。

答案:在C++程序中,注释说明只能位于一条语句的后面一个C++程序是由_____个源程序文件(.cpp)组成。

答案:1或多要把高级语言编写的源程序转换为目标程序,需要使用_____。

答案:编译程序下列关于异常的叙述错误的是______。

答案:编译错属于异常,可以抛出关于虚函数的描述中,

是正确的。

答案:虚函数是一个成员函数下列叙述错误的是(  )。

答案:throw语句抛出的异常可以不被捕获抽象类指的是。

答案:有纯虚函数的类关于纯虚函数和抽象类的描述中,___是错误的。

答案:一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类下列程序运行结果为______。#includeusingnamespacestd;classS{public:

~S()

{

cout<<"S"<<"\t";

}};charfun0(){

Ss1;

throw('T');

return

'0';}intmain(){

try

{

cout<

}

catch(charc)

{

cout<

}

return0;}

答案:S

T是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。

答案:纯虚函数关于纯虚函数和抽象类的描述中,_____是错误的。

答案:一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类在C++的集成环境中,系统约定C++源程序文件缺省的扩展名是()

答案:cpp8位二进制补码表示的带符号数10000000B和11111111B的十进制数分别是()

答案:-128和-1若[A]原=10111101,[B]反=10111101,[C]补=10111101,以下结论正确的是()

答案:A最大十六进制数88H,可表示成下面几种形式,错误的表示为()

答案:8位二进制数-8的补码表示BCD数64H代表的真值为()

答案:64十进制数9874转换成BCD数为()

答案:9874H若一个数的BCD编码为00101001,则该数与()相等。

答案:29D下列数中最小的是()

答案:(101001)2十进制数27.25转换成十六进制数为()

答案:1B.4H十进制数66转换成二进制数为()

答案:01000010/star3/origin/ca6342ebb3cb127032c9530af4b4414d.png

答案:(1已知n是一个四位正整数。a、b、c、d均是int型变量,分别表示n的个位、十位、百位和千位数字。请写出a、b、c、d的表达式。

答案:n%10

n/10%10

n/100%10

n/1000%10以下程序运行时输出结果是_______。#includeusingnamespacestd;intmain(){

chara=256;

intd=a+1;

cout<答案:1若有定义“inta=0,b=0,c=0;”,则执行表达式“a++&&(b+=a)||++c”后,变量a、b、c的值各是多少?

答案:101C++关系表达式中的关系成立时,则该关系表达式的值为

答案:trueor1若有声明“inti=7;floatx=3.1416;doubley=3;”,则表达式“i+'a'*x+i/y”值的类型是_____型。

答案:double若有声明“chara=0;intb=1;floatc=2;doubled=3;”,则表达式“c=a+b+c+d”值的类型为_____。

答案:float已知有声明“intx=1,y=2;”,则执行表达式“(x>y)&&(--x>0)”后x的值为__________。

答案:1若有声明“inta=30,b=7;”,则表达式“!a+a%b”的值是__________。

答案:2表达式“(a=4*5,b=a*2),b-a,a+=2”的值是______。

答案:22若变量x、y已正确定义并赋值,以下符合C++语法的表达式是_______。

答案:++x,y=x--设有定义:intx=2;以下表达式中,值不为6的是_______。

答案:2*x,x+=2若a是数值类型,则逻辑表达式“(a==1)||(a!=1)”的值是_______。

答案:1整型变量a的值为10,b的值为3,则执行表达式b%=b++||a++后两变量的值为_______。

答案:a=10,b=0设有定义inta=5,b=4;则逻辑表达式a<=6&&a+b>8的值为

答案:true表达式x==0&&y!=0||x!=0&&y==0等效于

答案:x*y==0&&x+y!=0;以下选项中,当x为大于1的奇数时,值为0的表达式是_______。

答案:x%2==0设有定义:intk=0;以下选项的四个表达式中与其他三个表达式不相同的表达式是_______。

答案:k+1若有定义语句:intx=10;则表达式“x-=x+x”的值为_______。

答案:-10设变量已正确定义并赋值,以下正确的表达式是_______。

答案:a=1+(b=c=4);表达式“(int)((double)9/2)-9%2”的值是_______。

答案:3若有定义语句“inti=2,j=3;”,表达式i/j的结果是_______。

答案:0已知floatx=3.6,y=5.0;则表达式(int)x+y的值为

答案:8.0要为字符型变量赋初值,下列语句中正确的是:

答案:char

a='3';下列不是C++中合法的常量的是

答案:0786下面的常数表示中,不正确的是:

答案:'103'下列字符串中不能作为C++标识符使用的是_______。

答案:9stars下列选项中,正确的C++标识符是________。

答案:_group_6下列符号中不可作为用户标识符是

答案:char下面有四个用户定义的C++语言标识符,正确的是:

答案:_53设计一个求两正整数m和n的最大公约数的程序。m和n的值由键盘输入。

答案:#includeusingnamespacestd;intmain(){

intm,n;

cout<<"请输入两个整数:

";

cin>>m>>n;

for(inti=m;i>=1;i--)

if(m%i==0&&n%i==0)

break;

cout<编程求满足以下条件的三位整数n,它除以11所得到的商等于n的各位数字的平方和,且其中至少有两位数字相同。例如,131除以11的商为11,各位数字的平方和为11,所以它是满足条件的三位数。

答案:#includeusingnamespacestd;intmain(){

inta,b,c;

for(inti=100;i<1000;i++)

{

a=i/100;

b=i/10%10;

c=i%10;

if(i/11==a*a+b*b+c*c&&(a==b||b==c||a==c))

cout</star3/origin/3f1ad89bc4a71f0e833b8e1ec604c26b.png

答案:#includeusingnamespacestd;intmain(){

inta,b,c;

for(inti=100;i<1000;i++)

{

a=i/100;

b=i/10%10;

c=i%10;

if(i==a*a*a+b*b*b+c*c*c)

cout</star3/origin/7edc07b232211d64cf05757444ccdb57.png

答案:2+22+222+2222+22222(此时n=5)。#includeusingnamespacestd;intmain(){

intn,a;

doubles=0,t=0;

cout<<"请输入a和n:

";

cin>>a>>n;

for(inti=1;i<=n;i++)

{

t=t*10+a;

s=s+t;

}

cout<<"s="<编程计算s=1!+2!+3!+...+n!,n的值从键盘输入,要求输出n和s的值。

答案:#includeusingnamespacestd;intmain(){

intn;

doublet=1,s=0;

cout<<"请输入n:

";

cin>>n;

for(inti=1;i<=n;i++)

{

t=t*i;

s=s+t;

}

cout<<"n="<设计一个程序,要求:对从键盘输入的一个不多于5位的正整数,能输出它的位数并输出它的各位数字之和。

答案:#includeusingnamespacestd;intmain(){

intx,count=0,sum=0;

cout<<"请输入x:

";

cin>>x;

cout</star3/origin/2c6172db81272ba1ecf2a95d8748600b.png

答案:#includeusingnamespacestd;intmain(){

doublex,y;

cout<<"请输入x:

";

cin>>x;

if(x<0)

y=x*x;

elseif(x>=0&&x<1)

y=2.5*x-1;

else

y=3*x+1;

cout<<"x="<以下程序的执行结果是________。

#include

usingnamespacestd;

intmain(){

inti=5;

do

{

switch(i%2)

{

case0:

i--;break;

case1:

i--;continue;

}

i--;

cout<0);

cout<<'\n';

return0;}

答案:20从键盘输入abcz↙时,则下列程序的输出是___________。

#include

usingnamespacestd;intmain(){

char

ch;

cin>>ch;

while(ch!='z')

{

switch(ch)

{

case'a':

case'b':

cout<<'1'<>ch;

}

return0;}

答案:1//

1//

3//default以下程序的执行结果是________。#includeusingnamespacestd;intmain(){

intk=5,n=0;

do

{

switch(k)

{

case1:

case3:n+=1;k--;break;

default:n=0;k--;

case2:

case4:n+=2;

k--;break;

}

cout<0&&n<5);

return0;}

答案:235以下程序的执行结果是________。

#include

usingnamespacestd;intmain(){

inta=1,b=2,c=3,d=0;

if(a==1&&b++==2)

if(b!=2||c--!=3)

cout<答案:1

3

3以下程序的执行结果是________。

#include

usingnamespacestd;

intmain(){

intx=1,y=2,z=3;

x+=y+=z;

cout<<(x答案:5有如下程序段:inti=1;while(1){

i++;if(i==10)

break;if(i%2==0)

cout<<'*';}运行这个程序段输出字段*的个数是_______。

答案:4在循环语句体中使用break和continue语句的作用是

答案:结束循环和结束本次循环以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=1;k<3;k++);cout<<'*';运行后输出结果是_______。

答案:*有如下程序段:charb='a',c='A';for(inti=0;i<6;i++)if(i%2)

cout<<(char)(i+b);elsecout<<(char)(i+c);运行后输出结果是_______。

答案:AbCdEf有如下程序段:inty=9;for(;y>0;y--)if(y%3==0)

cout<<--y;运行后输出结果是_______。

答案:852下列循环语句中有语法错误的是_________。

答案:for(1)cout<<'*';程序段“intx=3;do{cout<答案:1有如下程序段:inti=5;while(i=0){cout<<'*';i--;}运行时输出“*”的个数是_______。

答案:0执行下列语句序列:inti=0;while(i<25)i+=3;cout<答案:27以下选项中与“if(a==1)a=b;elsea++;”语句功能不同的switch语句是_______。

答案:switch(a==1){case0:a=b;break;case1:a++;}若有定义语句“intx=4,y=5;”,则表达式“y>x++?x--:y++”的值是_______。

答案:5若有定义“inta=1,b=2,c=3,d=4;”,则表达式a>b?a:c>d?c:d的值为_______。

答案:4对下面三条语句(其中s1和s2为内嵌语句),正确的论断是_______。if(a)s1;elses2;

//①if(a==0)s2;elses1;

//②if(a!=0)s1;elses2;

//③

答案:三者相互等价以下程序的执行结果是________。

#include

usingnamespacestd;

inta=0;voidfun(){

inta=10;

cout<<(::a-=--a)<<'\n';}intmain(){

inta=10;

for(inti=-10;i答案:-9//-18以下程序运行后的输出结果是__________。#includeusingnamespacestd;inta;intm(inta){

staticints;

return(++s)+(--a);}intmain(){

inta=2;

cout<答案:3以下程序的执行结果是________。

#include

usingnamespacestd;

inta=2;intmain(){

intb=3;

if(++a||b--)cout<<"first:"<答案:first:3

3//second:5

15//third:18

15以下程序验证一个猜想:任意一个十进制正整数与其反序数相加后得到一个新的正整数,重复该步骤最终可得到一个回文数。所谓反序数,是指按原数从右向左读所得到的数。例如,123的反序数是321。所谓回文数,是指一个数从左向右读的值与从右向左读的值相等。例如,12321、234432都是回文数。#includeusingnamespacestd;intinvert(int

x){

int

s;

for(s=0;x>0;_________)

s=s*10+x%10;

returns;}intmain(){

int

n,c=0;

cout<<"inputanumber:";

cin>>n;

while(___________)

{

cout<<"inputanumber:";

cin>>n;

}

n=n+invert(n);

c++;

while(______________)

{

n=n+invert(n);

c++;

}

cout<答案:x=x/10

n<=0

n!=invert(n/star3/origin/95dce8ebb89126b3644910fe9684cc0e.png

答案:cmath

fabs(term以下程序的执行结果是________。#includeusingnamespacestd;intfunc(intx){

if(x<100)returnx%10;

else

returnfunc(x/100)*10+x%10;}intmain(){

cout<<"Theresultis:"<<(func(132645))<答案:theresultis:365以下程序的执行结果是________。

#include

usingnamespacestd;

intfun(intm){

inti;

if(m==2||m==3)return1;

if(m<2||m%2==0)return0;

for(i=3;i答案:2357在程序中,每种变量都有各自的有效作用范围和生存期,其中________在整个程序运行过程中都存在,但只在函数调用时有效。

答案:静态局部变量下列函数原型声明中,错误的是________。

答案:intfunction(intm=3,intn);有如下程序:#includeusingnamespacestd;intf(intx){

inty;if(x==0||x==1)return3;y=x*x-f(x-2);returny;}intmain(){

cout<答案:6有如下的函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=1;func(x,y);则func函数执行后,变量x和y的值分别为________。

答案:0和2有如下程序:#includeusingnamespacestd;intf(intx){

returnx*x+1;

}intmain(){

inta,b;for(a=0,b=0;a<3;a++){

b=b+f(a);cout<<(char)(b+'A');}return0;}运行后输出结果是_______。

答案:BDI已知有函数f的定义如下:intf(inta,intb){

if(a答案:3已知函数f的定义如下:voidf(){

cout<<"That'sgreat!";

}则调用f函数的正确形式是_________。

答案:f();对于一个完整可运行的VC++源程序,下列说法中正确的是________。

答案:必须有且只能有一个main()主函数分别设计两个函数,一个实现整数的正序输出,另一个则实现反序输出。如输人一个整数3456,则输出3456和6543。算法提示:重复除以10求余,直到商为0为止。如3456/10的余数为6,商为345;345/10的余数为5,商为34;34/10的余数为4,商为3;3/10的余数为3,商为0,至此结束。先输出余数,后递归,则为反序输出;先递归,后输出余数,则为正序输出。

答案:#includeusingnamespacestd;voidfun1(intn){

if(n==0)

return;

else

fun1(n/10);

cout<>n;

fun1(n);

cout</star3/origin/9b6cf05f21fd74c5c8319d546857f8ba.png

答案:#includeusingnamespacestd;double

hermite(doublex,intn){

doubley;

if(n==0)

y=1;

elseif(n==1)

y=2*x;

else

y=2*x*hermite(x,n-1)-2*(n-1)*hermite(x,n-2);

returny;}intmain(){

doublex,y;

intn;

cout<<"请输入n和x:";

cin>>n>>x;

y=hermite(x,n);

cout<<"y="<用函数实现求两正整数的最大公约数的功能,并在主函数中调用该函数求出两正整数的最小公倍数。

答案:#includeusingnamespacestd;intgys(inta,intb){

for(inti=a;i>=1;i--)

if(a%i==0&&b%i==0)

returni;

returni;}intmain(){

inta,b,t;

cout<<"请输入两个正整数:";

cin>>a>>b;

t=gys(a,b);

cout<回文数是指其各位数字左右对称的整数,例如12321是回文数。定义一个判断回文数的函数,并打印1000~2000之间的所有回文数。

答案:#includeusingnamespacestd;intfun(intx){

ints=0;

inti=x;

while(i)

{

s=s*10+i%10;

i=i/10;

}

if(s==x)

return1;

elsereturn0;}intmain(){

intk=0;

for(inti=1000;i<=2000;i++)

if(fun(i))

{

cout<设计一个程序,求出100~200之间的所有素数,要求每行输出5个素数。判断一个整数是否为素数用一个函数来实现。

答案:#includeusingnamespacestd;intprime(intx){

for(inti=2;i<=x/2;i++)

if(x%i==0)

return0;

return1;}intmain(){

intk=0;

for(inti=100;i<=200;i++)

if(prime(i))

{

cout<设计一个程序,要求输入三个整数,能求出其中的最大数并输出。程序中必须用函数实现求两数中大数的功能。

答案:#includeusingnamespacestd;intmax(inta,intb){

returna>b?a:b;}intmain(){

inta,b,c,maxnumber;

cout<<"请输入三个整数:";

cin>>a>>b>>c;

maxnumber=max(a,b);

maxnumber=max(maxnumber,c);

cout<以下程序的运行结果是_______。#includeusingnamespacestd;intx=1;intf(int);intmain(){

cout<答案:3以下程序的运行结果是________。#include#define

MAX(a,b)(a>b?a:b)+1usingnamespacestd;intmain(){

inti=6,j=8,k;

k=MAX(i,j);

cout<答案:9若有宏定义“#define

max(a,b)

(a>b?a:b)”,则表达式“max(2,max(3,1))”的值是_____。

答案:3设有如下的宏定义:#define

MYSWAP(z,x,y){

z=x;

x=y;

y=z;}以下程序段通过宏调用实现变量a,b内容交换,请填空。floata=5,b=16,c;MYSWAP(_________,________,

a

);

答案:c

b以下叙述中正确的是_______。

答案:在一个程序中,允许使用任意数量的#include命令行以下程序的运行结果是_______。#include#defineN

5#defineM

N+1#definef(x)

(x*M)usingnamespacestd;intmain(){

inti1,i2;i1=f(2);i2=f(1+1);cout<答案:11

7以下程序的执行结果是_______。#include#definePLUS(X,Y)

X+Yusingnamespacestd;intmain(){

intx=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);cout<<"SUM="<答案:SUM=12以下程序的运行结果是_____。#include#define

MIN(x,y)

(x)<(y)?(x):(y)usingnamespacestd;intmain(){

inti=10,j=15,k;k=10*MIN(i,j);cout<答案:15设有宏定义:#definef(x)(-x*2)执行语句:

cout<答案:5已知某程序如下:#includefloatp=1.5;#define

p

2.5usingnamespacestd;intmain(){cout<答案:double型常量编写一个宏MAX(a,b,c),求a,b,c中的最大值。a,b,c从键盘输入。

答案:#includeusingnamespacestd;#definemax(a,b,c)

(a>b?a:b)>c?(a>b?a:b):cintmain(){

inta,b,c;

intmaxnumber;

cout<<"请输入三个数:

";

cin>>a>>b>>c;

maxnumber=max(a,b,c);

cout<<"最大数为:"<22.[其它]如果一个数及该数的反序数都是素数,则称该数为可逆素数。例如17是素数,71也是素数,因此17便是一个可逆素数。以下程序中,函数f在[m,n]区间内查找所有可逆素数并将这些素数依次保存到a指向的数组中,函数返回a数组中可逆素数的数目。#include#includeusingnamespacestd;intp(intn){

inti,j=sqrt((double)n);

for(i=2;i<=j;i++)

if(________)return0;

return1;}intconvert(intn){

intm=0;

while(n>0)

{

m=__________;n=n/10;

}

returnm;}intf(intm,intn,inta[]){

inti,j=0;

for(i=m;i<=n;i++)

if(p(i)&&__________)

a[j++]=i;

returnj;}intmain(){

inti,n,a[50];

n=f(50,150,a);

for(i=0;i答案:!(n%i)或n%i==0

m*10+n%10

p(convert(i))/star3/origin/7efaaf7f07d14ddf6a7a3fe9553423e8.png

答案:n/10

i以下程序的输出是______。#include#includeusingnamespacestd;intconvert(chars1[],chars2[]){

inti=0,j,s;

chartab[8][4]={"000","001","010","011","100","101","110","111"};

for(i=0,j=0;s1[i]!='\0';i++,j=j+3)

strcpy(&s2[j],tab[s1[i]-'0']);

for(i=0,s=0;i答案:13

001101以下程序的输出是______。#includeusingnamespacestd;intmain(){

charch[]={"652ab31"};

inti,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=s*10+ch[i]-'0';

cout<答案:62以下程序的输出是______。#include#includeusingnamespacestd;intmain(){

charb[30];

strcpy(b,"GH");

strcpy(&b[1],"DEF");

strcpy(&b[2],"ABC");

cout<答案:GDABC以下程序的输出是______。#includeusingnamespacestd;constintN=3;voidfun(inta[][N],intb[]){

inti,j;

for(i=0;i答案:3,6,9,以下程序的输出是______。#includeusingnamespacestd;voidfun(inta[],intn){

inti,t;

for(i=0;i答案:321678以下程序的输出是______。#includeusingnamespacestd;intmain(){

inta[]={2,3,5,4},i;

for(i=0;i<4;i++)

switch(i%2)

{

case0:switch(a[i]%2)

{

case0:a[i]++;break;

case1:a[i]--;

}break;

case1:a[i]=0;

}

for(i=0;i<4;i++)

cout<答案:3040以下程序的输出是______。#includeusingnamespacestd;intmain(){

inti,k,x[10]={1,2,3,4,5,6,7,8,9,10},y[3]={0};

for(i=0;i<10;i++)

{

k=x[i]%3;y[k]+=x[i];

}

cout<答案:182215有如下语句序列:“charstr[10];cin>>str;”,当从键盘输入"Ilovethisgame"时,str中的字符串是______。

答案:"I"以下能正确定义字符串的语句是_____。

答案:charstr[]="\0";若有声明语句"inta[10],b[3][3];",则以下对数组元素的赋值操作中,不会出现越界访问的是____。

答案:b[0][3]=0若有定义ints[][3]={1,2,3,4,5,6,7};则s数组第一维的大小是_____。

答案:3下列程序的功能是_______。#includeusingnamespacestd;intmain(){

intj,k,e,t,a[]={4,0,6,2,64,1};for(j=0;j<5;j++){

t=j;for(k=j;k<6;k++)

if(a[k]>a[t])

t=k;e=a[t];a[t]=a[j];a[j]=e;}for(k=0;k<6;k++)cout<答案:对数组进行选择法排序(降序)以下程序的执行结果是_______。#includeusingnamespacestd;intmain(){

ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)

c[s[i]]++;for(i=1;i<5;i++)

cout<答案:4332下列一维数组的声明中正确的是_______。

答案:inta[10+1]={0};若有定义inta[10];则对a数组元素的正确引用是_____。

答案:a[10-10]编写一个程序:从键盘输入一个整型数,把这个整型数的各位数按降序输出。例输入整型数34125,输出:54321。

答案:#includeusingnamespacestd;voidsort(inta[],intn){

inti,j,k;

intt;

for(i=0;i>x;

while(x)

{

a[i]=x%10;

x=x/10;

i++;

}

n=i;

sort(a,n);

for(i=0;i用筛选取法求出2~200之间的所有素数。

答案:#includeusingnamespacestd;intmain(){

inti,j,k;

inta[1000];

for(i=2;i<=200;i++)

a[i]=i;

for(i=2;i<=200;i++)

for(j=2;i*j<=200;j++)

a[i*j]=0;

for(i=2,k=0;i<=200;i++)

if(a[i]!=0)

{

cout<编写一个函数:void

strcat(char

a[],char

b[]);将b中的字符串拼接到数组a中的字符串的后面,构成一个字符串。(要求不使用C++的库函数strcat())。

答案:#includeusingnamespacestd;strcat(chara[],charb[]){

inti=0,j=0;

while(a[i])

i++;

while(a[i++]=b[j++]);}intmain(){

chara[80],b[80];

cout<<"请输入两个字符串:";

cin.getline(a,80);

cin.getline(b,80);

cout<<"字符串a为:"<编写一个函数:void

strcpy(char

a[],char

b[]);将b中的字符串拷贝到数组a中。(要求不使用C++的库函数strcpy())。

答案:#includeusingnamespacestd;voidstrcpy(chara[],charb[]){

inti=0,j=0;

while(a[i++]=b[j++]);}intmain(){

chara[80],b[80];

cout<<"请输入一个字符串:";

cin.getline(b,80);

strcpy(a,b);

cout<<"字符串b为:"<编写一个函数把一个10进制数转换成16进制数。

答案:#include#includeusingnamespacestd;voidchange(intn,charstr[]){

inti=0,j;

intx;

charch;

while(n)

{

x=n%16;

if(x<10)

str[i]=x+'0';

else

str[i]=x-10+'A';

n=n/16;

i++;

}

str[i]='\0';

for(i=0,j=strlen(str)-1;i>n;

change(n,str);

cout<从键盘将一个字符串输入到字符数组中,按反序存放。如,输入"Abcd

e",则输出"e

dcbA"。

答案:#include#includeusingnamespacestd;intmain(){

charstr[80],ch;

inti,j;

cout<<"请输入一行字符串:";

cin.getline(str,80);

intn=strlen(str)-1;

for(i=0,j=n;i从键盘输入一个字符串,删除字符串中的所有空格后输出这个字符串。

答案:#include#includeusingnamespacestd;intmain(){

charstr[80];

inti,j;

cout<<"请输入一行带空格的字符串:";

cin.getline(str,80);

i=0;

while(str[i])

{

if(str[i]=='')

{

j=i;

while(str[j])

{

str[j]=str[j+1];

j++;

}

i--;

}

i++;

}

cout<<"删除空格的字符串为:";

cout<找出二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。

答案:#includeusingnamespacestd;intmain(){

inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

inti,j,k,mini,maxj,flag=0,max;

for(i=0;i<4;i++)

{

max=a[i][0];

maxj=0;

for(j=1;j<4;j++)

{

if(maxa[k][maxj])

{

max=a[k][maxj];

mini=k;

}

}

if(mini==i)

{

flag=1;

cout<<"鞍点是:"<<"a["<输出以下的杨辉三角形(要求输出8行)1

1

1

1

2

1

1

3

3

1

1

4

6

4

1

1

5

10

10

5

1

……

答案:#includeusingnamespacestd;intmain(){

inta[10][10];

inti,j;

for(i=0;i<8;i++)

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i<8;i++)

for(j=1;j求一个4×4矩阵两对角线元素之和。

答案:#includeusingnamespacestd;intmain(){

inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

inti,j,s=0;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

cout<答案:4以下程序运行时输出结果是________。#includeusingnamespacestd;voidfun(int*p1,int

*p2){

intt;

if(p1答案:624351以下程序输出结果为_________。#includeusingnamespacestd;voidf(inta,int*b){

a++;b++;(*b)++;

}intmain(){

int

x[2]={4,4};

f(x[0],&x[0]);

cout<答案:45已知:“inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]=a,*p=a[0];”,则以下能够正确表示数组元素a[1][2]的表达式是________。

答案:*(*(a+1)+2)有以下程序:intadd(inta,intb){

returna+b;

}intmain(){

intk,(*f)(int,int),a=5,b=10;f=add;……}则以下函数调用语句错误的是______。

答案:k=*f(a,b);下列程序的输出是

。#include#includeusingnamespacestd;intmain(){

char

p1[20]="abcd",*p2="ABCD";char

str[50]="xyz";strcpy(str+2,strcat(p1+2,p2+1));cout<答案:xycdBCD已知:charb[5],*p=b;则正确的赋值语句是_____________。

答案:p="abcd";假定已有声明"chara[30],*p=a;",则下列语句中能将字符串"ThisisaCprogram."正确地保存到数组a中的语句是_____________。

答案:strcpy(p,"ThisisaCprogram.");设已有声明"intx[]={1,2,3,4,5,6},*p=&x[2];

",则值为3的表达式是_____。

答案:*(p++)以下程序的运行结果是_______。#includeusingnamespacestd;voidfun(intn,int*s){

intf;if(n==1)*s=n+1;else

{

fun(n-1,&f);*s=f;

}}intmain(){

intx=0;fun(4,&x);cout<答案:2以下程序的运行结果是_______。#includeusingnamespacestd;voidf(int*p,int*q){

p=p+1;*q=*q+1;}intmain(){

intm=1,n=2,*r=&n;f(r,&n);cout<答案:1,3以下程序的执行结果是_______。#includeusingnamespacestd;voidww(int*x){

cout<<++*x<答案:25若有定义语句:“intyear=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是________。

答案:*p++;下列程序用于对输入的一批整数建立先进后出的链表,即先输入的放在表尾,后输入的放在表头,由表头至表尾输出的次序正好与输入的次序相反。输入的一批整数以9999作为结束,但链表中不包含此数。请完善程序。#include#defineNULL0usingnamespacestd;structnode{

intdata;

structnode*link;};intmain(){

structnode*p,*q;

intm,n=1;

q=NULL;

cout<<"输入第"<>m;

while(____)

{

p=____;

p->data=m;

p->link=____;

q=p;

cout<<"输入第"<>m;

}

n-=2;

while(n>0)

{

cout<<"第"<data<<'\n';

____;

}

return0;}

答案:【1】m!=9999;【2】newnode;【3】q;【4】q=q->link以下程序运行后输出结果是_________。#includeusingnamespacestd;structnode{

charni;

structnode*next;};intmain(){

node*head,*p;

intn=48;

head=NULL;

do

{

p=newnode;

p->ni=n%8+48;

p->next=head;

head=p;

n=n/8;

}while(n!=0);

p=head;

while(p!=NULL)

{

cout<ni;

p=p->next;

}

return0;}

答案:60已知:struct{

intx;

char*y;}tab[2]={{1,"ab"},{2,"cd"}},*p=tab;则表达式*p->y的结果为_______,表达式*(++p)->y的结果为______。

答案:'a'

'c'下面给出的是使用typedef定义一个新数据类型的4项工作,如果要正确定义一个新的数据类型,进行这四项工作的顺序应当是______。1.把变量名换成新类型名

2.按定义变量的方法写出定义体3.用新类型名定义变量

4.在最前面加上关键字typedef

答案:2,1,4,3若定义enumcolor{red=2,yellow,blue,white};那么blue的值为___________。

答案:4设有以下的结构体说明和变量定义,且如图8.29所示,指针p指向变量one,指针q指向变量two,则不能将结点two连接到结点one之后的语句是_____。structnode{

intn;structnode*next;}one,two,*p=&one,*q=&two;

答案:p.next=&two;设有以下程序段,则表达式的值不为100的是_______。structst{

inta;

int*b;};voidmain(){

intm1[]={10,100},m2[]={100,200};st

*p,x[]={99,m1,100,m2};p=x;……}

答案:(++p)->b若有以下定义和语句:structstudent{

intnum,age;};studentstu[3]={{1001,20},{1002,19},{1003,21;student*p=stu;则以下结果不是1002的是_______。

答案:(++stu)->num设有以下说明语句structstu{

inta;floatb;}stutype;则下面叙述中错误的是_______。

答案:stutype是用户定义的结构体类型名以下程序的输出结果是______。#includeusingnamespacestd;classSample{

intx,y;public:

voidSetxy(inti=0,intj=0)

{

x=i;y=j;

}

voidcopy(Sample&A)

{

if(this==&A)

{

cout<<"不能将一个对象复制到自己本身"<答案:x=0

y=0x=10

y=20不能将一个对象复制到自己本身x=10

y=20以下程序的输出结果是______。#includeusingnamespacestd;classArr{

inta[10],len;public:

voidSetArr(int*p,intn=10)

{

len=n;

for(inti=0;i答案:17//10//7阅读程序,指出以下选项正确的是______。#include#includeusingnamespacestd;classCPoint{doublex,y;public:voidSetxy(doubledx,doubledy)

//设置坐标{

x=dx;

y=dy;}doubleRadius()

//取极坐标半径{

returnsqrt(x*x+y*y);

}};intmain(){

CPointp;doublex,y;cin>>x>>y;p.Setxy(x,y);cout<答案:在main函数中不能直接用“p.x+=5;p.y+=6;”对对象中的成员x,y赋值有如下类定义classMyClass{intx;public:intGetX(){returnx;}voidSetX(intxx){x=xx;}inty;};已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是____。

答案:obj.x若MyClass是一个类名,且有如下语句序列:MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面语句序列所定义的对象个数是______。

答案:2有如下类声明:classFoo{intbar;};则Foo类的成员bar是______。

答案:私有数据成员下列有关类和对象的说法中,正确的是

答案:类与对象的关系和数据类型与变量的关系相似输入一行字符,建立字符链表,输入一个字符,查找该字符在链表中的位置(用序号表示)。程序应考虑查找失败的情况,而查找成功时,要输出该字符的所有出现的位置。

答案:#include#includeusingnamespacestd;structnode{

charch;

structnode*next;};node*create(char*str){

node*head,*p1,*p2;

head=NULL;

p1=p2=head;

while(*str)

{

p1=newnode;

p1->ch=*str;

if(head==NULL)

head=p1;

else

p2->next=p1;

p2=p1;

str++;

}

p2->next=NULL;

returnhead;}intsearch(node*head,charch,inta[]){

inti=0,k=0;

node*p=head;

while(p)

{

k++;

if(p->ch==ch)

a[++i]=k;

p=p->next;

}

returni;}intmain(){

node*head=NULL;

charstr[100],ch;

inta[100];

cout<<"请输入一行字符串:";

cin.getline(str,100);

head=create(str);

//建立链表

cout<<"请输入一个字符:";

cin>>ch;

intn=search(head,ch,a);//查找字符,返回出现次数,a中为出现位置

if(n==0)

cout<<"字符串"<定义一个结构体表示平面上的一个坐标点。编程输入两个坐标点,然后输出两点之间的距离。

答案:#include#includeusingnamespacestd;structpoint{

doublex;

doubley;};intmain(){

pointp1,p2;

doubledis;

cout<<"请输入平面上第一个点的坐标x和y:

";

cin>>p1.x>>p1.y;

cout<<"请输入平面上第二个点的坐标x和y:

";

cin>>p2.x>>p2.y;

dis=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));

cout<<"点("<下列程序的输出结果是_______。#include#includeusingnamespacestd;classSTR{

char*p;public:

STR(char*s){

p=newchar[strlen(s)+1];strcpy(p,s);}

voidmove(char&t1,char&t2){chart;t=t1;t1=t2;t2=t;}

voidfun();

voidprint(){cout<='0'&&*(p+i)<='9'))

{

j=i;

while(j>0&&(*(p+j-1)>='0'&&*(p+j-1)<='9'))

{

move(*(p+j-1),*(p+j));

j--;

}

}

i++;

}}intmain(){

STRstr("3AB45C");

str.fun();

str.print();

return0;}

答案:ABC345下列程序的输出结果是_______。#includeusingnamespacestd;classCon{

charID;public:

chargetID()

{

returnID;}

Con(){

ID='A';

cout<<1;}

Con(charid){ID=id;

cout<<2;}

Con(Con&c){ID=c.getID();cout<<3;}};voidshow(Conc){

cout<答案:13A23B下列程序的输出结果是_______。#include#includeusingnamespacestd;classX{

char*a;public:

X(char*aa="abc")

{

a=newchar[strlen(aa)+1];

strcpy(a,aa);

}

~X(){cout<答案:abc1234//1234被释放

//abc被释放以下程序的运行结果是_______。#includeusingnamespacestd;classONE{

intc;public:

ONE():c(0){cout<<1;}

ONE(intn):c(n){cout<<2;}};classTWO{

ONEone1;

ONEone2;public:

TWO(intm):one2(m){cout<<3;}};intmain(){

TWOt(4);

return0;}

答案:123以下程序的运行结果是_______。#includeusingnamespacestd;classXCF{

inta;public:

XCF(intaa=0):a(aa){cout<<"1";}

XCF(XCF&x){a=x.a;cout<<"2";}

~XCF(){cout<Geta();

deletepd;

return0;}

答案:1218855以下程序的运行结果是_______。#include#includeusingnamespacestd;classXCD{

char*a;

intb;public:

XCD(char*aa,intbb)

{

a=newchar[strlen(aa)+1];

strcpy(a,aa);

b=bb;

}

char*Geta(){returna;}

intGetb(){returnb;}};intmain(){

char*p1="abcd",*p2="weirong";

intd1=6,d2=8;

XCDx(p1,d1),y(p2,d2);

cout<答案:12以下程序的运行结果是_______。#includeusingnamespacestd;classSample{

intn;public:

Sample(){}

Sample(intm){n=m;}

Samplesquare()

{

n=2*n;

return*this;

}

voiddisp()

{

cout<<"n="<答案:n=20以下程序的运行结果是_______。#includeusingnamespacestd;classTest{public:

Test(){}

Test(Test&t){cout<<1;}};Testfun(Test&u){Testt=u;returnt;}intmain(){

Testx,y;

x=fun(y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论