程序设计基础A学习通超星期末考试答案章节答案2024年_第1页
程序设计基础A学习通超星期末考试答案章节答案2024年_第2页
程序设计基础A学习通超星期末考试答案章节答案2024年_第3页
程序设计基础A学习通超星期末考试答案章节答案2024年_第4页
免费预览已结束,剩余6页可下载查看

下载本文档

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

文档简介

程序设计基础A学习通超星期末考试章节答案2024年下面的程序通过成员函数实现计算两点间距离的功能,完成下面的程序。#include#includeusingnamespacestd;classPoint{

public:

【1】getDistance(Point&a);

double

getX(){returnx;}

double

getY(){returny;}

Point(doublea,doubleb)//构造函数

{

x=a;

y=b;

}private:

double【2】;//一条语句内按顺序声明x和y};//类外实现getDistance()代码如下:double【3】getDistance(Point&a)

{

doubledx,dy;

dx=x-a.getX();

dy=【4】;

returnsqrt(pow(dx,2)+pow(dy,2));}intmain(){

Pointp1(1,3),p2(4,8);

doubledis=p1.getDistance(p2);

cout<答案:double;x,y;Point::;y-a.getY(填空完成下面的程序,使得程序的执行结果为1。(注意:填空时不要输入多余空格)#include#includeusingnamespacestd;classStudent{public:

Student(int

i_id,char

i_name[]);

intgetId();private:

intid;

charname[20];};Student::Student(inti_id,chari_name[]){

id=i_id;

【1】;}intStudent::getId(){

【2】;}intmain(){

Students1(1,"zhangsan");

cout<答案:strcpy(name,i_name;returnid;getId(假定A为一个类,inta()为该类的一个公有成员函数,x为A类的一个对象(A

x;),则调用x对象中的函数成员a的格式为【

】。

答案:x.a()下列关于类和对象的叙述中,错误的是_____。

答案:一个类只能有一个对象已知类声明如下“classA{inta;};”,则类A的数据成员a的访问权限是_____。

答案:private类的对象只能访问该类的【

】成员。

答案:publicC++中,系统自动为一个类生成默认构造函数的条件是该类没有自定义任何_____。

答案:构造函数当创建一个类对象时,系统自动调用_____实现对象的数据成员的初始化。

答案:构造函数当一个类对象生命期结束时,系统自动调用_____并销毁对象。

答案:析构函数已知类定义如下:classTest{public:

voidSet(doubleval);private:

doublevalue;};则类体外对Set成员函数的定义正确的是_________________。

答案:voidTest::Set(doubleval)

{

value=val;}下面程序中错误的行是____________。(本题15分)1

#include2

#include3

usingnamespacestd;4

classPoint5

{6

public:7

Point(doublenewX=0,doublenewY=0);8

voidsetValue(doublenewX,doublenewY);9

doublegetX(){returnx;}10

doublegetY(){returny;}11

doublegetDistance(Point&p2);12

private:13

doublex,y;14

};15

Point::Point(doublenewX=0,doublenewY=0)16

{17

setValue(newX,newY);18

}19

voidsetValue(doublenewX,doublenewY)20

{21

x=newX;22

y=newY;23

}24

Point::doublegetDistance(Point&p2)25

{26

returnsqrt((x-p2.x)*(x-p2.x)+(y-p2.y)*(y-p2.y));27

}28

intmain()29

{30

Pointp1,p2(3,5);31

cout<<"p1到p2的距离是:"<答案:15,19,24

有关类性质说法错误的是_____。

答案:一个类中不可以声明具有类类型的数据成员已知A是一个类,下面语句执行时会调用【

】次A类的构造函数。A

a[2];Ab;A&p=b;

答案:3下面程序的功能是从输入的10个字符串中找出长度最长的字符串并输出。#include#includeusingnamespacestd;#defineN10intmain(){

charstr[N][81],*sp;

inti;

for(i=0;i答案:str[0];str[i];spC++中,要释放用new分配的空间,应该用【

】运算符。

答案:deleteC++中,对于对象,可以通过句点运算符“.”来访问其公有成员。对于指针变量,也可以通过指向运算符【

】访问指向对象的公有成员。

答案:->定义一个指针变量p,指向堆heap中一个10数的整型数组int*p=【

】;释放这些内存的语句是【

】;//每个空中只能包含1个必要的空格,不要写多余的空格

答案:newint[10];delete[]p;delete[]p;delete[]p若已有float*p,m=3.14;要让p指向m,正确的赋值语句是【

】。

答案:p=&m;下面的new用法正确的是【

】。

答案:int*p=newint(5);在C++中,可以使用new运算符动态地分配内存,并将地址保存到指针变量,就可以通过指针变量访问该内存,实现在程序运行中根据需要动态分配指定大小的空间。如果要动态分配一个包含10个int型的连续内存单元,下面写法正确的是【

】。

答案:int*p=newint[10];下面对于指针变量p的操作正确的是【

答案:inta=5,*p;p=&a;若有定义:inta[10],*p=a;,则p+5表示【

】。

答案:元素a[5]的地址假设有类A定义如下:classA{public:

A(intm);

A

T();private:

intm;};在类的成员函数中允许使用类的数据成员。隐含当前对象的指针是this,下面几个对于this的操作,正确的是【

】。(1)A::A(intm)

{

this->m=m;

}(2)A::A(intm)

{

this.m=m;

}(3)A

A::T()

{

m++;

return*this;

}(4)A

A::T()

{

m++;

returnthis;

}(5)A

A::T()

{

m++;

returnT;

}

答案:(1)和(3)一个变量的指针是指【】。

答案:该变量的地址下面对于指针变量的操作,错误的是【

】。

答案:inta,&p;

*p=a;已知语句:

int*p=newint[5];下面的delete用法正确的是【

】。

答案:delete[]p下面程序的输出结果是【】。intfun(intx,inty,int*cp,int*dp)//函数定义,形参{

*cp=x+y;

*dp=x-y;}intmain(){

inta,b,c,d;

a=30;b=50;

fun(a,b,&c,&d);

//函数调用,实参

cout<答案:80,-20若有以下定义:chars[10]="include",*p=s;,则不能代表字符‘u’的表达式为【

】。

答案:s+4如果要读写二进制文件,需要将文件的打开方式设置为【

】。

答案:binary;ios::binaryC++中,文件操作完成后必须进行关闭,断开文件流与文件的联系,保证将缓冲区中的数据写入到文件中。假如打开文件流对象ifs,则关闭使用ifs.【

】()方法。

答案:close读取文件时,必须保证文件存在,如果不存在,文件流为空。假如有下面代码段,请填空:ifsteam

ifs;

//创建输入流对象ifs.open("data1.dat");

//打开当前目录的data1.dat文件if(【

】)

{

cout<<"FilenotExist!";

return(1);

}

答案:!ifs;ifs==NULL下面的程序实现将一个一维数组写入到文件中。请填空。#include#includeusingnamespacestd;constintN=5;intmain(){

doubledata[N]={90,85,82,88,75};

charfilename[80]="d:\\data1.dat";

ofstreamofs;

ofs.open(【

1

】);

if(!ofs)

{

cout<<"Filenotexist!";

return1;

}

for(inti=0;i答案:filename;filename,ios::out;filename,ios::binary;filename,ios::out|ios::binary;;ofsC++中,文件可以在创建文件流对象时初始化(使用构造函数打开),也可以使用文件流对象的【

】()方法打开。

答案:open对文件进行操作要经过打开文件,操作文件和【

】文件。

答案:关闭若fp是指向某文件的指针,且已读到文件末尾,则库函数fp.eof()的返回值是【】。

答案:true操作文件要包含的头文件是________。

答案:fstream下面程序的功能是在5个字符串中找出最小的字符串。请填空。

#include#include#usingnamespacestd;

intmain()

{

inti;

chars[20],str[5][20];

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

cin>>str[i];

strcpy(s,【

1

】);

for(i=1;i<5;i++)

if(strcmp(s,str[i])>0)

strcpy(s,【

2

】);

cout<<"Theminstringis"<答案:str[0];str[i]字符串处理函数strlen(s)是返回字符串s的长度len,最后一个字符可表示为s[【】]。

答案:len-1编写一个函数,输入一个字符串判断是否是回文串,判定规则是前后字符都相等,如”abcba”,是回文输出”yes.”,不是输出”no.”。

#include#includeusingnamespacestd;

boolpString(charstr[]);

intmain()

{

chars[81];

gets(s);

if(pString(s))

cout<<”yes.\n”;

else

cout<<”no.\n”;

return0;

}

boolpString(charstr[])

{

inti,j,len=【】;

for(i=0,j=len-1;i答案:strlen(str;str[j]!=str[i];str[i]!=str[j]if(strcmp(s1,s2)<0)表示的是s1【

】s2的情况。

答案:<;小于删除字符串中的空格并输出,请填空。

#includeusing

namespace

std;

voiddelBlank(chars[]);

intmain()

{charstr[]=”Howareyou”;

delBlank(str);

cout<答案:s[i]!='\0';s[i]!=0;s[j]='\0';s[j]=0if(strcmp(s1,s2)>0)表示的是s1【】s2的情况。

答案:>;大于如果输入ABC,则下面程序执行后的输出结果是【】。

intmain()

{

charss[10]="1,2,3,4,5";

gets(ss);

strcat(ss,"6789");

cout<答案:ABC6789下面程序段的运行结果是【】。(其中□表示空格)

chara[7]="abcdef";

charb[4]="ABC";

strcpy(a,b);

cout<答案:f设有数组定义:chararr[]="China";,则数组arr所占的空间为【】个字节。

答案:6下面程序执行后的输出结果是【】。intmain()

{chararr[2][4];

strcpy(arr[0],"you");

strcpy(arr[1],"me");

arr[0][3]='&';cout<答案:you&me判断字符串s1是否大于字符串s2,应当使用

答案:if(strcmp(s1,s2)>0)下面程序段的运行结果是【】。(其中□表示空格)

charc[5]={'a','b','\0','c','\0'};

cout<答案:ab下面程序的运行结果是:intmain()

{

chara[]="morning",t;

inti,j=0;

for(i=1;i<7;i++)

if(a[j]答案:mo下面说法中正确的是

答案:字符串“That”小于字符串“The”阅读下面的数组定义,正确的说法是:charsa[]="abcdefg";

charsb[]={'a','b','c','d','e','f','g'};

答案:数组sa的长度大于数组sb的长度下面程序的功能是:求Fibonacci(斐波纳契)数列的前40个数,并按照4列一行输出(Fibonacci数列有如下特点:第1、2个数都是1,从第3个数开始,每个数都是前两个数的和)。请填空。(注下面代码的预处理部分省略)

intmain()

{

longf1=1,f2=1;

inti;

for(i=1;i<=【

1

】;i++)

{

cout<答案:20;i%2;f1+f2;f2+f1在do-while循环中,循环由do开始,用while结束。必须注意的是,在while表达式后面的【

】(用文字)不能丢,它表示do-while循环的结束。

答案:分号下面程序的功能是求1000以内的完全数,请填空。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如6=1+2+3,6为完全数)(注下面代码的预处理部分省略)

intmain()

{

inta,i,m;

for(a=1;a<=1000;a++)

{

m=0;

for(【

1

】;i<=a/2;i++)

if(!(a%i))

m=【

2

】;

if(m==a)

cout<答案:i=1;m+i若i,j已定义为int型,则以下程序段中循环体总的执行次数是【

】(假定在循环体内不改变i,j的值)。

for(i=5;i;i--)

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

{

……

}

答案:20下面的程序是用“辗转相除法”求两个整数的最大公约数和最小公倍数,请填空。(注下面代码的预处理部分省略)

intmain()

{intr,m,n,t;

cin>>m>>n;

if(m答案:m%n;t/nbreak语句可以用在switch语句中,也可以用在循环语句中。在循环语句中使用终止它们的执行而不需要等待表达式值为假。通常break语句总是和if语句联在一起,即满足条件时便跳出循环。break语句只能终止离它【

】的那一层循环。

答案:最近while循环语句中,while后一对圆括号中表达式的值决定了循环体是否执行,因此进入while循环后,一定要有能使此表达式的值变为【

】(用文字)的操作,否则,循环将会无限制地进行下去。

答案:假;false对for(表达式1;;表达式3)可以理解为【】。

答案:for(表达式1;1;表达式3)程序段如下,则正确的执行结果是【】。

intk=0;

while(k++<=2)

cout<答案:123程序段如下,则正确的执行结果是【】。

intk=0;

while(k++<=2);cout<答案:4下面程序段【】。x=3;do{y=x--;if(!y)cout<<"#";}while(1<=x<=2);

答案:是死循环执行语句for(i=1;i++<4;);之后,变量i的值为【】。

答案:5在C++语言的循环结构for、while、dowhile语句中,用于直接中断最内层循环的语句是【】。

答案:break程序段如下,则下面说法中正确的是【】。intk=20;

while(k=0)

k=k+1;

答案:循环体语句一次也不执行不能实现阶乘8!(结果存放在p中)的程序段是【】。

答案:p=2;for(i=8;i>3;i--)

p=p*i;下面程序执行时,while的循环次数是【】。inti=0;

while(i<10)

{

if(i<1)continue;

if(i==5)break;

i++;

}

答案:死循环,不能确定次数从键盘输入一个年份,判定该年是否为闰年。

思路:凡是能被400整除,或能被4整除除且不能被100整除,都是闰年。题目要求:完成函数bool

isLeapYear(int

year);

判断year是不是闰年,如果是返回true,否则返回false;并通过主函数输入一个年份调用函数判定是否为闰年.

(提示,尊重编程前后一致的风格,下面答案是唯一的,注意不要输入多余任何字符)#includeusing

namespace

std;bool

isLeapYear(int

year){

bool

bl;

If((【

】)||(year%4==0&&year%100!=0))

】;

else

bl=false;return

bl;}int

main(){

】;

cin>>year;

if(【

】==true)

cout<答案:year%400==0;bl=true;int

year;isLeapYear(yearC++语言中,函数直接或间接调用函数本身,则该函数称为【

】函数。

答案:递归斐波那契(Fibonacci)数列的第一项和第二项是1,后面每一项是前两项之和。函数递归定义如下:intfib(intn){

inty;

if(n==1||n==2)

【1】;

elsey=【2】+fib(n-2);

return【3】;}

答案:y=1;fib(n-1;y下面说法中正确的是:在C/C++语言程序中【

】。

答案:函数的定义不可以嵌套,但函数的调用可以嵌套

下面正确的函数声明是【

】。

答案:

doublefun(intx,inty);

若有下面的函数调用fun(a+b,3,max(n-1,b))则fun的实参个数是【】。

答案:3下列函数调用中,不正确的是【】。

答案:intmax(a,b);

下列关于C++函数的说明中,正确的是【】。

答案:编译器会根据函数的参数个数和参数类型来区分函数的重载形式下面不正确的说法是:C++语言规定【】。

答案:形参可以是常量、变量或表达式

C++语言规定,函数返回值的类型是由【

】。

答案:在定义该函数时所指定的函数类型所决定有如下程序,编译运行这个程序将出现的情况是#includeusing

namespacestd;voidfunction(doubleval);intmain(){

doubleval;

function(val);

cout<答案:输出一个不确定的数在下列关于设置参数默认值的各种描述中,正确的是【】。

答案:设置参数默认值时,应该是先设置右边的再设置左边的

在C/C++语言的函数中,关于形参(形式参数)的下面几个说法,正确的是【】。

答案:形参可以有也可以没有下面说法中正确的是:如果在一个函数中的复合语句中定义了一个变量,则该变量【】。

答案:只在该复合语句中有效以下叙述中不正确的是【

】。

答案:在一个函数内的复合语句中定义的变量在本函数范围内有效阅读下面的程序,写出程序的输出结果:#includeusingnamespacestd;intmain(){inta,b,c;a=10;b=20;c=30;if(a>b)a=b;b=c;c=a;cout<答案:10,30,10某服装店经营套服,也单件出售。若买的不少于50套,每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款m。请在【

】内填入正确内容。(注明:遵循程序员的编程风格,前后对照,后面答案唯一)#includeusingnamespacestd;intmain(){

intc,t,m;

cout<<"inputthenumberofcoatandtrousersyourwantbuy:\n";

cin>>c>>t;

//后面表达式如果c和t同时存在时,c在前

if(【1】)

//成套服装

if(c>=50)m=c*80;

elsem=c*90;

elseif(【2】

)

if(t>=50)m=t*80+(c-t)*60;

elsem=t*90+(c-t)*60;

else

if(c>50)【3】;

elsem=c*90+(t-c)*45;

cout<答案:c==t;c>t;m=c*80+(t-c阅读下面的程序,写出程序的输出结果。

#include

usingnamespacestd;

intmain()

{

inta,b,c;

a=2;b=3;c=1;

if(a>b)

if(a>c)

cout<<”a:”<答案:c:1输入一个同学的成绩,输出相应的等级A-E。(下面答案唯一,提示答案不能作为答案)#includeusingnamespacestd;intmain(){

intscore;

cin>>score;

//输入100以内分数

switch(【1】)//等价于score/10*10

{

case100:

case90:cout<<"A\n";break;

case80:cout<<"B\n";break;

case70:cout<<"C\n";break;

case60:cout<<"D\n";break;

//以下不及格输出E

【2】:cout<<"E\n";

}

return0;}

答案:score-score%10;default某个自动加油站有‘A’,‘B’,‘C’三种汽油,单价分别为1.50,1.35,1.18(元/千克),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。本程序针对用户输入加油量a、汽油品种b和服务类型c(‘F’—自动,‘M’—自己,‘E’—协助),输出应付款m。请在【

】内填入正确内容。注意不要有多余的空格,按提示要求填空,书写完全正确才能得分。#includeusingnamespacestd;intmain()

{

floata,r1,r2,m;

//a是加油数量,r1表示汽油单价,r2位优惠率

charb,c;

//b是汽油种类ABC的一个,c的可能值为FME之一

cin>>a>>b>>c;

//如运行时输入1AM表示自己加油1千克A类汽油

switch(b)

{

case'A':

r1=1.5;

break;

case'B':

【1】;

break;

case'C':

r1=1.18;

}

switch(c)

{

case'F':

r2=0;

break;

case'M':r2=0.05;break;

case'E':

【2】;

}

【3】;

//按照顺序书写付钱=数量*单价*折扣(即1-优惠率)

cout<答案:r1=1.35;r2=0.1;m=a*r1*(1-r2假定所有变量均已正确说明,则下面程序段运行后x的值是【】。

inta=b=c=0;x=35;

if(!a)

x=-1;

elseif(b);

if(c)

x=3;

else

x=4;

答案:4多重if-else语句嵌套使用时,寻找与else配对的if方法是【】。

答案:其上最近的未配对的if下面程序的运行结果是。#includeusing

namespace

std;int

main(){

char

c='a';

if('0'<=c<='9')

cout<<"YES";

else

cout<<"NO";

return

0;}

答案:YES下面程序段执行后,x、y、z的值是【】。intx=10,y=20,z=30;if(x>y)

z=x;x=y;y=z;cout<答案:20,30,30分析下面的程序,以下程序:#includeusingnamespacestd;

intmain()

{

intx=5,a=0,b=0;

if(x=a+b)

cout<<"****\n";

else

cout<<"aaaa\n";

return0;

}

答案:输出aaaa当inta=3,b=2,c=1,f;

时,表达式f=a>b>c的值是【

】。

答案:0执行下面程序段代码后,x的值是【】。intn=5,m=3,x;

x=m>n?m:n;

答案:5闰年要满足下面两个条件之一:1)年份能被4整除但是不能被100整除;2)年份能被400整除。例如2000年、2004年是闰年,而1900年、2005年不是闰年。假如定义int型变量year表示年份,则下面能正确表达判断year是闰年的表达式是【】。

答案:year%4==0&&year%100!=0

||year%400==0已知有三个double型实数为a,b,c,则下面表达式【】为true时,表明它们作为三边长能组成三角形。

答案:a+b>c&&a+c>b&&b+c>a&&a>0&&b>0&&c>0表示a和b同时为正或同时为负(0既可以认为是正也可以是负)的表达式,不正确的是【】。

答案:(a+b)>=0下列运算符中优先级最高的是【

】。

答案:!假设char

c='a';则表达式'0'<=c<='9'的值是【】。('0'的ASCII值是十进制整数48,'9'的ASCII值是十进制整数48+9即57,'a'的ASCII值是十进制整数97)。

答案:true设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为【】。

答案:2已知char

温馨提示

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

评论

0/150

提交评论