ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:30.79KB ,
资源ID:10370079      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10370079.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++高级语言A卷及答案.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、C+高级语言A卷及答案 信息技术科学学院本科生20092010学年第1学期高级语言程序设计课程期末考试试卷(A卷) 专业:_ 年级:_ 学号:_ 姓名:_ 成绩: 得 分 一 、程序改错(本题共 6 分)1.1 下面的程序,实现对包含20个整型数据的数组全部元素求和。请找出程序中出现的语法错误和功能错误,将错误之处进行标记,说明错误原因并做出修改。#includeconst int n=10;void main()n=20; int arrayn; for(int i=0;i=n;i+) arrayi=i*i; int sum = 0; while(in) sum+=arrayi; i+; c

2、outsum=sumendl;得 分 二 、选择填空(本题共 14 分,每小题 2 分)2.1 C+程序中,字面常量012对应的二进制数与下列哪个二进制数等值( )A.1010B.10010C.1100D.11012.2 设有变量说明“int x=5,y=6;”,执行表达式语句“!(+x)&(y*=y);”后,x和y的值分别为( )A.x=5, y=6B.x=6, y=36C.x=5, y=36D.x=6, y=62.3 下面的C+关键字中,哪个不能用于变量的说明语句?( )A.externB.inlineC.staticD.int2.4 下面对于二维数组的说明及初始化,不正确的是( )A.c

3、har a10=C+,programming;B.int a25 = 1,2,3,4,5,6,7,8,9,10;C.float a25 = 1.0,5.5,9.9;D.double a5 = 1,2.0,3,4.5,5.5;2.5 对于变量说明“int a1 =10,a2=3;float a3 = 8.0”;算术表达式a1/a2*a3+a2/a1*a3的值为( )A.0.454167B.26.6667C.29.0667D.242.6 以下关于枚举类型的说法,不正确的是( )A.枚举类型变量只能取对应枚举类型的枚举元素表中的元素B.可以在定义枚举类型时对枚举元素进行初始化C.枚举元素表的元素有先

4、后顺序,可以比较大小D.枚举类型变量的值输出时是一个整数2.7 以下叙述不正确的是( )A.全局变量在任何函数体内都有效B.函数的形式参数是局部变量C.静态变量的生存期为整个程序D.在函数体内的某个复合语句中定义的变量在本函数范围内有效 得 分 三 、读程序写结果(本题共 30 分,每小题 6分)3.1 (6分) #includevoid main() int n=5; for(int i=1;i=n;i+) int result = 1; for(int j=1;j=i;j+); result *=j; coutresult = resultendl; 在VC6.0环境下执行结果: 3.2(

5、6分) #include void f(int x, int &y, const int &z) x+=z;y+=z;cout”x=”x”,y=”y”,z=”zendl;void main() int a=22,b=33,c=44; f(a,b,c); cout”a=”a”,b=”a”,c=”cendl; int d=b-c; f(a+b,d,2*c-10);在VC6.0环境下执行结果:3.3(6分) #includevoid main() char ch; for(int i=0;i5;i+) for(int j=1;j5-i;j+) cout ; for(int k=65;k71-j;k+

6、) ch = k; cout64;k-) ch = k; coutch; for(int m=0;m5-i;m+) cout ; coutendl; 在VC6.0环境下执行输出结果:3.4(6分) #includevoid main() int low=0,upper=10,result=17; int array10; for(int i=0;i10;i+) arrayi=i+10; while(low = upper) int index = (low+upper)/2; coutarrayindex=arrayindex; if(arrayindex=result) cout,it is

7、 the result!endl; break; else if(arrayindexresult) low = index + 1; else upper = index - 1; coutendl; 在VC6.0环境下执行结果:3.5(6分) #includebool Function1(int);void Function2(int);void main() for(int n=5;n=30;n+=5) if(Function1 (n) coutn=1*nendl; else coutn=; Function2 (n); bool Function1(int n) for(int i=2

8、;in/2;i+) if(n%i=0) return false; return true;void Function2(int n) for(int i=2;in/2;i+) if(n%i=0) couti*; if(!Function1(n/i) Function2(n/i); else cout(n/i)endl; return; 在VC6.0环境下执行结果: 得 分 四 、程序填空(本题共 30 分,每空 2 分)4.1 (6分)输入一个字母,如果是小写字母,则把它变成大写字母输出;如果是大写字母,则把它变成小写字母输出;其它字符不变。请完善程序。#includevoid main()

9、 char ch; cinch; if (_(1)_) if(ch=a & ch=z) _(2)_ else _(3)_ coutchendl;(1)(2)(3)4.2 (6分) 函数digit()用来计算十进制整数num从左往右数第index位的数字。请完善该函数#include #include int digit (int num, int index) int count =0; while (count+,num/int(pow(10,count); num=num-int(num/pow(10,count-index+1)*pow(10,count-index+1); count+

10、; return (num/int(pow(10,count-index-1);void main() int a,b; cinab; coutdigit(a,b);函数digit()用来计算十进制整数num从右往左数第index位的数字。请完善该函数int digit (int num, int index) int count =0; while (_(1)_) num = _(2)_; count +; _(3)_;(1)(2)(3)#include #include int digit (int num, int index) int count =0; while (count+,n

11、um/int(pow(10,count); coutcount numendl;coutcount count-index+1 count-index+1num numendl; / num=int(num-int(num/pow(10,count-index+1)*pow(10,count-index+1)%int(pow(10,count-index-1); coutpow(10,count-index)int(pow(10,count-index)endl; coutnum/pow(10,count-index)int(num/pow(10,count-index+1)endl; cou

12、tnum/pow(10,count-index)*pow(10,count-index)int(num/pow(10,count-index+1)*pow(10,count-index+1)endl; coutnum-int(num/pow(10,count-index) num-int(num/pow(10,count-index+1)*pow(10,count-index+1)endl; count+; return num;void main()coutdigit(25176,3);4.3(6分)函数Square ()测试输入的参数是否是完全平方数,如是返回1 否则返回0(例如对1,4,

13、9,16,25返回1)。请完善该函数。int isSquare(int n) _(1)_; while ( _(2)_ ) +i; if ( _(3)_ ) return 1; else return 0;(1)(2)(3)#include int isSquare(int n) int i=0; while ( i*ia; coutsquare isSquare(a)endl;方法二:#include int isSquare(int n) int i=2; while ( n/ii) +i; if ( i*i=n) return 1; else return 0;void main() i

14、nt a; cina; coutsquare isSquare(a)endl;4.4(6分)函数Count ()计算字符串str1在字符串str中出现的次数。请完善该函数int Count(char str, char str1) int i,j,k,num=0; for (i=0; _(1)_; i+) for (_(2)_,k=0;str1k=strj;k+,j+) if (str1_(3)_=0) num+; i+=k; break; return num;(1)(2)(3)4.5(6分)猴子第一天摘下若干个桃子,当即吃一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第十天时,

15、只剩下一个桃子。下面的程序用来计算猴子第一天摘了多少桃子,请完善该程序。#include void main()int fun (int);coutTotal:fun(10)endl; int fun(int b) int c=0; if(_(1)_) c=1;else _(2)_ _(3)_(1)(2)(3)得 分 五 、编程题(本题共 20 分)5.1(10分)1742年6月7日,哥德巴赫写信给欧拉,提出了以下猜想:任何一个大于等于6的偶数都可以表示成为两个奇素数之和;任何一个大于等于9的奇数都可以表示成为三个奇素数之和这就是著名的哥德巴赫猜想。请编写程序验证在10000以内哥德巴赫猜想是

16、否成立。如果成立输出Yes否则输出No。5.2(10分)电影2012中提到的历法来自于玛雅文明。玛雅文明是最早发明、使用历法的文明之一。玛雅人日常生活使用的是哈布历(Haab)。哈布历规定一年365天,分为19个月,前18个月每月20天,第19个月5天。玛雅文明还使用一种用于宗教祭祀的卓尔金历(Tzolkin,就是这个历法预言2012年的灾难)。卓尔金历规定一年260天,分为13个月,每个月20天。哈布历和卓尔金历的公元0年1月1日是同一天开始的(考古学家认为是公元前3114年8月31日),请编写一个程序实现哈布历和卓尔金历的相互转换,要求:(1)如果输入一组哈布历日期,将其转换为卓尔金历日期

17、(日期以日 月 年的顺序表示),并按照日期由小到大的顺序输出(2)如果输入一组卓尔金历日期,将其转换为哈布历日期(日期以日 月 年的顺序表示),并按照日期由小到大的顺序输出例如:输入历法(H表示哈布历,T表示卓尔金历): H81120021331996716256316183519245输出历法卓尔金历(T),排序后结果为:683441141172312803184281112113724信息技术科学学院本科生20092010学年第1学期高级语言程序设计课程期末考试试卷(A卷)参考答案及点评一、程序改错(1)n=20;/常量赋值,删除该语句并在const处修改为const int n =20;

18、(2)for ( int i=0;i=n;i+)/应该为in,否则导致数组溢出(3)while(i=A&ch=a & ch0 & countindex-1(2)num /10(3)return num%103、(1)int i=0(2)i*in(3)i*i=n4、(1)stri!=0(2)j=i(3)k+15、(1)b=1(2)c+=(fun(b-1)+1)*2;(3)return c五、程序设计评分标准建议:1、程序功能模块划分合理(2分)。函数的安排与使用2、程序流程合理(2分)。主函数流程3、关键点逻辑与语法(4分)。解决问题的关键之处,参考答案中标记为红色的部分代码4、能够运行出结果(

19、2分)。执行程序能够得出正确的结果。根据程序的不同,考虑上述问题的等价问题1、哥德巴赫猜想思路: 偶数和奇数分别判定#include int isprime(int n) /判定素数函数,如果素数返回1,否则返回0 for(int i=2;in/2;i+) if(n%i=0) return 0; return 1;int even(int n) /判定一个大于等于6的偶数是否符合哥德巴赫猜想 for ( int i=3;in;i+=2) if(isprime(i)&isprime(n-i) return 1; return 0;int odd(int n) /判定一个大于等于9的奇数是否符合哥

20、德巴赫猜想 for ( int i=3;in;i+=2) if(isprime(i) & even(n-i) return 1; return 0;/主程序 在6到10000,9到10000做循环分别判定偶数和奇数void main() bool g1=true,g2=true; for(int i=6;i=10000;i+=2) g1=g1 & even(i); for(i=9;i=10000;i+=2) g2 = g2 & odd(i); if(g1&g2) coutYesendl; else coutNoendl;2、历法问题#include const int N = 5;struct

21、 date int year; int month; int day;calendarN;void sort_calendar(date,int);void swap(date&,date&);void main() char ch; int day ,mon, year; long sum; cout ch; if( (ch=H) | (ch=h) for(int i=0;icalendari.daycalendari.monthcalendari.year; day = calendari.day; mon = calendari.month; year = calendari.year;

22、 sum= day+mon*20+year*365; year=sum/260; sum=sum % 260; mon=sum/20; day=sum%20; calendari.day = day; calendari.month = mon; calendari.year = year; coutOutput calendar of Tzolkinendl; else if (ch=T) | (ch=t) for(int i=0;icalendari.daycalendari.monthcalendari.year; day = calendari.day; mon = calendari.month; year = calendari.year; sum= day+mon*20+year*260; year=sum/365; sum=sum % 365; mon=sum/20; day=sum%20; calendari.day = day; calendari

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1