C++高级语言A卷及答案.docx

上传人:b****3 文档编号:4018786 上传时间:2023-05-06 格式:DOCX 页数:31 大小:30.79KB
下载 相关 举报
C++高级语言A卷及答案.docx_第1页
第1页 / 共31页
C++高级语言A卷及答案.docx_第2页
第2页 / 共31页
C++高级语言A卷及答案.docx_第3页
第3页 / 共31页
C++高级语言A卷及答案.docx_第4页
第4页 / 共31页
C++高级语言A卷及答案.docx_第5页
第5页 / 共31页
C++高级语言A卷及答案.docx_第6页
第6页 / 共31页
C++高级语言A卷及答案.docx_第7页
第7页 / 共31页
C++高级语言A卷及答案.docx_第8页
第8页 / 共31页
C++高级语言A卷及答案.docx_第9页
第9页 / 共31页
C++高级语言A卷及答案.docx_第10页
第10页 / 共31页
C++高级语言A卷及答案.docx_第11页
第11页 / 共31页
C++高级语言A卷及答案.docx_第12页
第12页 / 共31页
C++高级语言A卷及答案.docx_第13页
第13页 / 共31页
C++高级语言A卷及答案.docx_第14页
第14页 / 共31页
C++高级语言A卷及答案.docx_第15页
第15页 / 共31页
C++高级语言A卷及答案.docx_第16页
第16页 / 共31页
C++高级语言A卷及答案.docx_第17页
第17页 / 共31页
C++高级语言A卷及答案.docx_第18页
第18页 / 共31页
C++高级语言A卷及答案.docx_第19页
第19页 / 共31页
C++高级语言A卷及答案.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++高级语言A卷及答案.docx

《C++高级语言A卷及答案.docx》由会员分享,可在线阅读,更多相关《C++高级语言A卷及答案.docx(31页珍藏版)》请在冰点文库上搜索。

C++高级语言A卷及答案.docx

C++高级语言A卷及答案

信息技术科学学院本科生2009—2010学年第1学期

《高级语言程序设计》课程期末考试试卷(A卷)

专业:

___________年级:

_____学号:

________姓名:

__________成绩:

得分

一、程序改错(本题共6分)

 

1.1下面的程序,实现对包含20个整型数据的数组全部元素求和。

请找出程序中出现的语法错误和功能错误,将错误之处进行标记,说明错误原因并做出修改。

#include

constintn=10;

voidmain()

{

n=20;

intarray[n];

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

array[i]=i*i;

intsum=0;

while(i

{

sum+=array[i];

i++;

}

cout<<"sum="<

}

得分

二、选择填空(本题共14分,每小题2分)

 

2.1C++程序中,字面常量012对应的二进制数与下列哪个二进制数等值()

A.1010

B.10010

C.1100

D.1101

2.2设有变量说明“intx=5,y=6;”,执行表达式语句“!

(++x)&&(y*=y);”后,x和y的值分别为()

A.x=5,y=6

B.x=6,y=36

C.x=5,y=36

D.x=6,y=6

2.3下面的C++关键字中,哪个不能用于变量的说明语句?

()

A.extern

B.inline

C.static

D.int

2.4下面对于二维数组的说明及初始化,不正确的是()

A.chara[][10]={"C++","programming"};

B.inta[2][5]={1,2,3,4,5,6,7,8,9,10};

C.floata[2][5]={1.0,5.5,9.9};

D.doublea[][5]={1,2.0,3,4.5,5.5};

2.5对于变量说明“inta1=10,a2=3;floata3=8.0”;算术表达式a1/a2*a3+a2/a1*a3的值为()

A.0.454167

B.26.6667

C.29.0667

D.24

2.6以下关于枚举类型的说法,不正确的是()

A.枚举类型变量只能取对应枚举类型的枚举元素表中的元素

B.可以在定义枚举类型时对枚举元素进行初始化

C.枚举元素表的元素有先后顺序,可以比较大小

D.枚举类型变量的值输出时是一个整数

2.7以下叙述不正确的是()

A.全局变量在任何函数体内都有效

B.函数的形式参数是局部变量

C.静态变量的生存期为整个程序

D.在函数体内的某个复合语句中定义的变量在本函数范围内有效

得分

三、读程序写结果(本题共30分,每小题6分)

 

3.1(6分)

#include

voidmain()

{

intn=5;

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

{

intresult=1;

for(intj=1;j<=i;j++);

{

result*=j;

}

cout<<"result="<

}

}

在VC6.0环境下执行结果:

 

3.2(6分)

#include

voidf(intx,int&y,constint&z)

{

x+=z;

y+=z;

cout<<”x=”<

}

voidmain()

{

inta=22,b=33,c=44;

f(a,b,c);

cout<<”a=”<

intd=b-c;

f(a+b,d,2*c-10);

}

在VC6.0环境下执行结果:

 

3.3(6分)

#include

voidmain()

{

charch;

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

{

for(intj=1;j<5-i;j++)

cout<<"";

for(intk=65;k<71-j;k++)

{

ch=k;

cout<

}

for(k=k-2;k>64;k--)

{

ch=k;

cout<

}

for(intm=0;m<5-i;m++)

cout<<"";

cout<

}

}

在VC6.0环境下执行输出结果:

 

3.4(6分)

#include

voidmain()

{

intlow=0,upper=10,result=17;

intarray[10];

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

array[i]=i+10;

while(low<=upper)

{

intindex=(low+upper)/2;

cout<<"array["<

if(array[index]==result)

{

cout<<",itistheresult!

"<

break;

}

else

{

if(array[index]

low=index+1;

else

upper=index-1;

}

cout<

}

}

在VC6.0环境下执行结果:

 

3.5(6分)

#include

boolFunction1(int);

voidFunction2(int);

voidmain()

{

for(intn=5;n<=30;n+=5)

{

if(Function1(n))

cout<

else

{

cout<

Function2(n);

}

}

}

boolFunction1(intn)

{

for(inti=2;i

{

if(n%i==0)

returnfalse;

}

returntrue;

}

voidFunction2(intn)

{

for(inti=2;i

{

if(n%i==0)

{

cout<

if(!

Function1(n/i))

Function2(n/i);

else

{

cout<<(n/i)<

}

return;

}

}

}

在VC6.0环境下执行结果:

得分

四、程序填空(本题共30分,每空2分)

 

4.1(6分)

输入一个字母,如果是小写字母,则把它变成大写字母输出;如果是大写字母,则把它变成小写字母输出;其它字符不变。

请完善程序。

#include

voidmain()

{

charch;

cin>>ch;

if(______

(1)______)

if(ch>=’a’&&ch<=’z’)

_______

(2)________

else

_______(3)________

cout<

}

(1)

(2)

(3)

4.2(6分)

函数digit()用来计算十进制整数num从左往右数第index位的数字。

请完善该函数

#include

#include

intdigit(intnum,intindex)

{

intcount=0;

while(count++,num/int(pow(10,count)));{

num=num-int(num/pow(10,count-index+1))*pow(10,count-index+1);

count++;

}

return(num/int(pow(10,count-index-1)));

}

voidmain()

{inta,b;

cin>>a>>b;

cout<

}

函数digit()用来计算十进制整数num从右往左数第index位的数字。

请完善该函数

intdigit(intnum,intindex)

{

intcount=0;

while(______

(1)_______)

{

num=________

(2)_________;

count++;

}

________(3)_________;

}

(1)

(2)

(3)

#include

#include

intdigit(intnum,intindex)

{

intcount=0;

while(count++,num/int(pow(10,count)));cout<

cout<

{//num=int((num-int(num/pow(10,count-index+1))*pow(10,count-index+1)))%int(pow(10,count-index-1));

cout<<"pow(10,count-index)"<

cout<<"num/pow(10,count-index)"<

cout<<"num/pow(10,count-index)*pow(10,count-index)"<

cout<<"num-int(num/pow(10,count-index))"<

count++;

}

returnnum;

}

voidmain()

{cout<

}

4.3(6分)

函数Square()测试输入的参数是否是完全平方数,如是返回1否则返回0(例如对1,4,9,16,25返回1)。

请完善该函数。

intisSquare(intn)

{

____

(1)____;

while(______

(2)_______)

++i;

if(_____(3)_______)return1;

elsereturn0;

}

(1)

(2)

(3)

#include

intisSquare(intn)

{

inti=0;

while(i*i

++i;

if(i*i==n)return1;

elsereturn0;

}

voidmain()

{inta;

cin>>a;

cout<<"square"<

}

方法二:

#include

intisSquare(intn)

{

inti=2;

while(n/i>i)

++i;

if(i*i==n)return1;

elsereturn0;

}

voidmain()

{inta;

cin>>a;

cout<<"square"<

}

4.4(6分)

函数Count()计算字符串str1在字符串str中出现的次数。

请完善该函数

intCount(charstr[],charstr1[])

{

inti,j,k,num=0;

for(i=0;_____

(1)______;i++)

for(_____

(2)______,k=0;str1[k]==str[j];k++,j++)

if(str1[_____(3)_____]==’\0’)

{

num++;

i+=k;

break;

}

returnnum;

}

(1)

(2)

(3)

4.5(6分)

猴子第一天摘下若干个桃子,当即吃一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。

到第十天时,只剩下一个桃子。

下面的程序用来计算猴子第一天摘了多少桃子,请完善该程序。

#include

voidmain()

{

intfun(int);

cout<<"Total:

"<

}

intfun(intb)

{

intc=0;

if(______

(1)_______)

c=1;

else

{

________

(2)__________

}

_________(3)__________

}

(1)

(2)

(3)

得分

五、编程题(本题共20分)

 

5.1(10分)

1742年6月7日,哥德巴赫写信给欧拉,提出了以下猜想:

任何一个大于等于6的偶数都可以表示成为两个奇素数之和;任何一个大于等于9的奇数都可以表示成为三个奇素数之和——这就是著名的哥德巴赫猜想。

请编写程序验证在10000以内哥德巴赫猜想是否成立。

如果成立输出Yes否则输出No。

 

5.2(10分)

电影《2012》中提到的历法来自于玛雅文明。

玛雅文明是最早发明、使用历法的文明之一。

玛雅人日常生活使用的是哈布历(Haab’)。

哈布历规定一年365天,分为19个月,前18个月每月20天,第19个月5天。

玛雅文明还使用一种用于宗教祭祀的卓尔金历(Tzolk'in,就是这个历法预言2012年的灾难)。

卓尔金历规定一年260天,分为13个月,每个月20天。

哈布历和卓尔金历的公元0年1月1日是同一天开始的(考古学家认为是公元前3114年8月31日),请编写一个程序实现哈布历和卓尔金历的相互转换,要求:

(1)如果输入一组哈布历日期,将其转换为卓尔金历日期(日期以日月年的顺序表示),并按照日期由小到大的顺序输出

(2)如果输入一组卓尔金历日期,将其转换为哈布历日期(日期以日月年的顺序表示),并按照日期由小到大的顺序输出

例如:

输入历法(H表示哈布历,T表示卓尔金历):

H

8

11

2002

13

3

1996

7

16

2563

16

1

835

1

9

245

输出历法卓尔金历(T),排序后结果为:

6

8

344

11

4

1172

3

1

2803

18

4

2811

12

11

3724

 

信息技术科学学院本科生2009—2010学年第1学期

《高级语言程序设计》课程期末考试试卷(A卷)参考答案及点评

 

一、程序改错

(1)n=20;//常量赋值,删除该语句并在const处修改为constintn=20;

(2)for(inti=0;i<=n;i++)//应该为i

(3)while(i

二、选择题

(1)A.考察字面常量中八进制数的表示方式

(2)D.考察短路表达式。

(3)B.考察存储类型的种类

(4)A.考察字符数组表示字符串时,字符数组的长度

(5)D.考察数据类型的隐式转换

(6)C.考察枚举类型的基本概念

(7)D.考察生存期与作用域的基本概念

 

三、读程序写结果

(1)错1行扣一分,全错得0分

result=2

result=3

result=4

result=5

result=6

(2)每行结果2分,一行2个数正确得1分,1个数正确得0.5分

x=66,y=77,z=44

a=22,b=77,c=44

x=177,y=111,z=44

(3)错1行扣1分,全错得0分,一行不完全正确得0分

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

(4)错1行扣1.5分,全错得0分,一行不完全正确得0.5分

array[5]=15

array[8]=18

array[6]=16

array[7]=17,itistheresult

(5)每行结果1分,一行不完全正确得0分

5=1*5

10=2*5

15=3*5

20=2*2*5

25=5*5

30=2*3*5

四、程序填空(所填内容不完全正确酌情给1分或0.5分,填写语句时,有无分号均不扣分)

1、

(1)ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'

(2)ch-=32

(3)ch+=32

2、

(1)num>0&&count

(2)num/10

(3)returnnum%10

3、

(1)inti=0

(2)i*i

(3)i*i==n

4、

(1)str[i]!

='\0'

(2)j=i

(3)k+1

5、

(1)b==1

(2)c+=(fun(b-1)+1)*2;

(3)returnc

五、程序设计

评分标准建议:

1、程序功能模块划分合理(2分)。

函数的安排与使用

2、程序流程合理(2分)。

主函数流程

3、关键点逻辑与语法(4分)。

解决问题的关键之处,参考答案中标记为红色的部分代码

4、能够运行出结果(2分)。

执行程序能够得出正确的结果。

根据程序的不同,考虑上述问题的等价问题

 

1、哥德巴赫猜想

思路:

偶数和奇数分别判定

#include

intisprime(intn)//判定素数函数,如果素数返回1,否则返回0

{

for(inti=2;i

if(n%i==0)

return0;

return1;

}

inteven(intn)//判定一个大于等于6的偶数是否符合哥德巴赫猜想

{

for(inti=3;i

{

if(isprime(i)&&isprime(n-i))

{

return1;

}

}

return0;

}

intodd(intn)//判定一个大于等于9的奇数是否符合哥德巴赫猜想

{

for(inti=3;i

{

if(isprime(i)&&even(n-i))

{

return1;

}

}

return0;

}

//主程序在6到10000,9到10000做循环分别判定偶数和奇数

voidmain()

{

boolg1=true,g2=true;

for(inti=6;i<=10000;i+=2)

{

g1=g1&&even(i);

}

for(i=9;i<=10000;i+=2)

{

g2=g2&&odd(i);

}

if(g1&&g2)

cout<<"Yes"<

else

cout<<"No"<

}

 

2、历法问题

#include

constintN=5;

structdate

{

intyear;

intmonth;

intday;

}calendar[N];

voidsort_calendar(date[],int);

voidswap(date&,date&);

voidmain()

{

charch;

intday,mon,year;

longsum;

cout<<"pleaseinputcatelogofcalendar:

";

cin>>ch;

if((ch=='H')||(ch=='h'))

{

for(inti=0;i

{

cin>>calendar[i].day>>calendar[i].month>>calendar[i].year;

day=calendar[i].day;

mon=calendar[i].month;

year=calendar[i].year;

sum=day+mon*20+year*365;

year=sum/260;

sum=sum%260;

mon=sum/20;

day=sum%20;

calendar[i].day=day;

calendar[i].month=mon;

calendar[i].year=year;

}

cout<<"OutputcalendarofTzolk'in"<

}

else{

if((ch=='T')||(ch=='t'))

{

for(inti=0;i

{

cin>>calendar[i].day>>calendar[i].month>>calendar[i].year;

day=calendar[i].day;

mon=calendar[i].month;

year=calendar[i].year;

sum=day+mon*20+year*260;

year=sum/365;

sum=sum%365;

mon=sum/20;

day=sum%20;

calendar[i].day=day;

calendar[i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2