06级CPP1试题及答案.doc_第1页
06级CPP1试题及答案.doc_第2页
06级CPP1试题及答案.doc_第3页
06级CPP1试题及答案.doc_第4页
06级CPP1试题及答案.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

第 1 页 ( 共 12 页 )上海大学 20062007 学年 冬 季学期试卷课程名: 高级语言程序设计(一) 课程号: 08305001 学分: 4 应试人声明: 我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律处分。应试人 应试人学号 应试人所在院系 题号一(20)二(20)三(20)四(20)五(20)得分一、判断题。对真命题在题后括号内打“”, 对假命题打“”(每小题1分,共20分)。1. C+表达式5/2的结果为2.5。 ()2. C+表达式double(5/2)的结果为2(即2.0),类型为double。 ()3. C+表达式(double)5/2的结果为2.5,类型为double。 ()4. C+表达式5/2.0的结果为2.5,类型为double。 ()5. First,first,1st均是C+合法的标识符,可用作变量命名。 ()6. 定义一个变量就意味着给该变量分配内存空间。 ()7. 定义变量double *p;则系统为指针变量p分配sizeof(double)字节的内存空间。 ()8. 定义变量int a=5; double x;并执行表达式语句x=(double)a/2;后,变量a本身的数据类型将被改成double型,在内存中将占用sizeof(double)字节。 ()9. 定义数组double array10;系统将为该数组分配10*sizeof(double)字节连续的内存空间,该空间的首地址用array表示。 ()10. 定义数组double array10;后, array10表示整个数组的所有元素。()成绩得分第 2 页 ( 共 12 页 )11. C+中,new是一个运算符(或称为操作符)。运算表达式new double10执行时,将在内存的堆空间中,“切下”10*sizeof(double)字节连续的内存空间,并将该空间的首地址作为表达式的值;若“切下”内存空间的操作不成功,则该表达式的值为NULL(空地址)。 ()12. 程序中char *str=”abcdefg”; 表示定义一个指针变量str(系统分配能够存放一个地址值的内存空间),”abcdefg”表示系统分配8字节的内存空间存放该字符串常量,用”abcdefg”本身表示存放该字符串的内存空间首地址,并用该首地址值初始化指针变量str。 ()13. 程序中char str80=”abcdefg”; 其中”abcdefg”不是字符串常量,并不表示地址值,而是用来初始化数组元素的,其中元素str7的值为串结束标志字符0。 ()14. 程序中执行char str80=”abcdefg”; cout str; 后将输出一个地址值。 ()15. 程序中执行int a5=0, 1, 2, 3, 4; cout a; 后将输出一个地址值。 ()16. 一个C+程序只能定义一个main()函数。 ()17. 函数原型声明中,可以仅写出形式参数的类型,也可以写出形式参数的名称。例如:void swap(int &, int &); 或void swap(int &a, int &b); ()18. 调用函数时,系统将为所有的形式参数(包括引用型参数)分配内存空间。()19. 对于值返回的函数(如double sqrt(double);)函数返回时,将创建一个临时变量存放函数的返回值。 ()20. 有两个函数,其形式参数相同、函数名相同,仅它们的返回类型不同,则它们构成函数重载。 ()得分第 3 页 ( 共 12 页 )二、阅读理解(第12题每题6分,第34题4分,共20分)。1. 有如下程序(6分)double f1(double *array, int n)double sum = 0;for(int i=0; in; i+)sum += arrayi;return sum;double f2(double *array, int n)double sum = 0;for( ; n; n-)sum += *array+;return sum;#include using namespace std;int main()double array10=1,2,3,4,5,6,7,8,9,10, s1, s2, s3;s1 = f1(array, 5);s2 = f2(array+5, 5);s3 = f2(&array1, 5);cout ”s1 = ” s1 ”, s2 = ” s2 ”, s3 = ” s3 endl;return 0;(1) 指出程序运行输出的结果; S1 = 15, s2 = 40, s3 = 20(2) 指出函数double f1(double *array, int n);的功能;计算以array为首地址的数组前n个元素之和。(3) 指出函数double f2(double *array, int n);的功能。同上。第 4 页 ( 共 12 页 )2. 有如下程序(6分)template T func(T *a, int n)T x, y;x = y = a0;for(int i=1; i x) x = ai;if(ai y) y = ai;return x-y;#include using namespace std;int main()int a10 = 12, 66, 34, 8, 56, 34, 8, 99, 73, 50;double x8 = 43.1, 76.2, 41, -22, 85.4, 0, 146, 98;cout ”D1 = ” func(a, 10) endl;cout ”D2 = ” func(x, 8) endl;return 0;(1) 写出编译系统自动生成的两个模板函数的定义;int func(int *a, int n)int x, y;x = y = a0;for(int i=0; i x) x = ai;if(ai y) y = ai;return x-y;double func(double *a, double n)double x, y;x = y = a0;for(int i=0; i x) x = ai;if(ai y) y = ai;return x-y;(2) 写出程序运行输出的结果;D1 = 91D2 = 168(3) 指出函数模板的功能。计算并返回数组元素最大值与最小值的差。第 5 页 ( 共 12 页 )3. 有如下程序,指出程序运行所输出的结果(4分)#include using namespace std;int main()char str100 = ”SMART”, *p;for(p=str; *p!=0; p+)cout p endl;cout p-str endl;return 0;4. 有如下函数(4分)double f(double x)double a5 = 1, -2, 3, -4, 5;double y = 0;for(int i=0; i5; i+)y = y*x + ai;return y;(1) 写出执行语句cout f(-1) ”, ” f(0) ”, ” f(1) endl;的结果; 15, 5, 3(2) 写出该函数所计算的数学函数表达式或者 f(x) = (x - 2)x + 3x - 4x + 5程序运行输出的结果: SMART MART ART RT T 5 第 6 页 ( 共 12 页 )得分三、填充题(每空1分,共20分)。1. 下述函数模板的功能为输出数组的元素值。请填充template void display(T *a, int n)cout a0;for(int i= 1 ; in; i+)cout ”, ” ai;cout endl;2. 函数int digit(int n);的功能是将整数n按其十进制数各位倒置生成一个新整数,并返回。例如:digit(123)的结果为321。请完成函数定义。 int digit(int n)int m = 0 ;while(n)m = m*10 + n%10;n /= 10 ;return m ;3. 函数char *StrCpy(char *dest, const char *source);的功能是将source为首地址的字符串复制到dest为首地址的字符串中,并返回目标字符串的首地址。char *StrCpy(char *dest, const char *source)int i; for (i=0; sourcei!=0; i+ )desti = sourcei;desti = 0 ;return dest ;第 7 页 ( 共 12 页 )4. 请完成程序(通过传递引用、传递指针交换实参数据的值)#include using namespace std;template void swap_r(T &a, T &b)T temp; temp = a ; a = b ; b = temp ;template void swap_p(T *a, T *b) T temp ;temp = *a;*a = *b;*b = temp;int main()int a, b;a=3; b=5;swap_r( a , b );cout a , b endl;a=3; b=5;swap_p( &a , &b );cout a , b endl;return 0;四、简答题。有如下关于日期处理的程序,请简要回答各小题(共20分)。注:行号不是程序中的成分,是为了叙述方便而添加的。得分第 8 页 ( 共 12 页 )1#include 2 #include 3 using namespace std;4 int isLeapyear(int year)5 6 return year%4=0 & year%100!=0 | year%400=0;78void NextDate(int &year, int &month, int &day)9 10 int days12=31,28,31,30,31,30,31,31,30,31,30,31;11 days1 += isLeapyear(year);12day+;13if(day daysmonth-1)1415day = 1; month+;1617if(month=13)1819month = 1;year+;202122void NextNDate(int &year, int &month, int &day, int n)2324for(int i=0; in; i+)25NextDate(year, month, day);2627void ShowDate(int year, int month, int day)2829cout setfill(0) setw(2) month /30 setw(2)day/yearsetfill( )endl;3132int main()3334int year=2007, month=1, day=1, n=400, i;35ShowDate(year, month, day);36for(i=0; i days*month-1) (*month)+; *day = 1;if(*month=13)(*year)+;*month = 1;程序中调用该修改后的函数语句(第25,38行)则应修改为:NextDate(&year, &month, &day);3. 将程序运行的输出结果填入右表中(5分) 01/01/2007_ 01/02/2007_ 01/03/2007_ 01/04/2007_ 01/05/2007_ 01/06/2007_ 02/10/2007_第 10 页 ( 共 12 页 )得分五、编程题(共20分)。1.(6分)从键盘输入一个正整数n,找出n1以内被3除余2,且被5除余3,且被7除余5的最大整数。若存在,则输出该数;否则输出“不存在”。#include using namespace std;int main()int n, i;cout n;for(i=n; i; i-)if(i%3=2 & i%5=3 & i%7=5)break;if(i0)cout i endl;elsecout 不存在 =A & stri=a & stri=z)n+;return n;第 11 页 ( 共 12 页 )3.(8分)设计一个函数实现如下功能:传入3个浮点型数据a, b, c,通过参数“返回”2个浮点型数据len, area;函数返回1个整型数。要求:函数名为triangle若a, b, c能够构成一个三角形,则len, area分别为该三角形的周长和面积,函数返回1;否则len, area为0,并且函数返回0。 (1) 写出函数原型; (2) 定义该函数; (3) 编写主函数,以a=3,b=4,c=5;a=3,b=4,c=10两组数据为例测试triangle函数。【提示】给定长度分别为的三条线段,记,则该三条线段能构成一个三角形的充分必要条件可表示为且且。三角形的周长为;面积为.#inc

温馨提示

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

评论

0/150

提交评论