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

下载本文档

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

文档简介

1、成上海大学2006? 2007学年冬季学期试卷绩课程名:高级语言程序设计(一)课程号:08305001学分:4应试人声明:我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、 作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律 处分。应试人应试人学号应试人所在院系题号一 (20)二(20)三(20)四(20)五(20)得分得一、判断题。对真命题在题后括号内打“,对假命题打“X分(每小题1分,共20分)。1 .C+表 达 式5/2的结果为2.5。(X )2.C(V )+表达式double(5/2)的结果为2(即 2.0),类型为double3.C+表达式(double

2、)5/2的结果为勺2.5, 类型为double (V )(V )4 .C+ 表达式 5/2.0 的结果为 2.5, 类型为 double(V )5 . First, first, 1 st均是C +合法的标识符,可用作变量命名。(X)6.定义一个变量就意味着给该变量分配内存空间。()7 ,定义变量double *p;则系统为指针变量 p分配sizeof (double) 字节的内存空间。(X)8 .定义变量int a=5; double x;并执行表达式语句 x= (double) a/2; 后,变量a本身的数据类型将被改成 double 型,在内存中将占用sizeof (double) 字

3、节。9 .定义数组double array 10 ;系统将为该数组分配 10*sizeof (double)字节10素表示整个数组的所有元. 定义数组 double array 10 ; 后, array10(X)new double11. C+中,new是一个运算符(或称为操作符)。运算表达式10 执 行时,将在内存的堆空间中,“切下”10*sizeof (double )字节连续的内存空 间,并将该空间的首地址作为表达式的值;若“切下”内存空 间的操作不成功, 则该表达式的值为NULL (空地址)。(V)12 ,程序中char *str=abcdefg ”;表示定义一个指针变量str(系统

4、分配能够存放一个地址值的内存空间),abcdefg ”表示系统分配8字节的内存空间存 放 该字符串常量,用abcdefg本身表示存放该字符串的内存空间首地址,并用该首地址值初始化指针变量stro( V)13 .程序中char str 80 =abcdefg ”; 其中abcdefg 不是字符串常量,并不表示地址值,而是用来初始化数组元素的,其中元素 str 7的值为串结束标志字符,0,。( V)14 .程序中执行 char str 80 =abcdefg ” ; cout str;后将输出一个地址值。(X)15 .程序中执行int a 5=一个地址值。(0, 1,2, 3, 4 ; cout

5、a;后将输出(/)()16 . 一个C +程序只能定义一个 main()函数17. 函数原型声明中,可以仅写出形式参数的类型,也可以写出形式参数的名称。例女口: void swap (int &, int &); 或 void swap ( int &a, int&b);( V )18. 调用函数时,系统将为所有的形式参数(包括引用型参数)分配内存空间。(X)19 .对于值返回的函数(如 double sqrt(double );)函数返回时,将创建一个临时变量存放函数的返回值20.有两个函数,其形式参数相同、函数名相同,仅它们的返回类型不同,贝尼们构成函数重载。(X)sum += *arra

6、y+;;的功能return sum;#i nclude using n amespace std;int mai n()double array10=1,2,3,4,5,6,7,8,9,10 , si, s2, s3; si = f1 (arrayf 5);s2 = f2 (array+5f 5);s3 = f2 (&array1, 5);cout si = si ” , s2 = s2 ” ,s3 = s3 T func(T夫 a, int n)T x, y;x = y = a 0;for(i nt i=l; i x) x = a i;if (a i y) y = a i;return x-

7、y;#include using n amespace std;int mai n() int a10 = 12, 66, 34, 8, 56, 34, 8, 99, 73, 50; doublex8 = 43.1, 76.2, 41, -22, 85.4,0, 146, 98; cout DI= func (a, 10) endl; cout D2 = func (x, 8) en dl;return 0;(1)写出编译系统自动生成的两个模板函数的定义;int fun c(i ntint n)(int x, y;X = y = a 0;for(i nt i=0; i x) x = ai; i

8、f (a i y) y = ai;return x-y;double func (double文 a,double n)double x, y;X = y = a 0;for(i nt i=0; i x) x = ai; if (a i y) y = ai;return x-y;(2) 写出程序运行输出的结果;D1 = 91D2 = 168(3) 指出函数模板的功能。计算并返回数组元素最大值与最小值的差3.有如下程序,指出程序运行所输出的结果(4分)#in elude using n amespacestd; int mai n() char str100 = SMART,for(p=str;

9、*p!=0; p+) cout p en dl;程序运行输出的结果cout p-str en dl;*PSMARTreturn 0;7MARTARTRT4.有如下函数(4分)double f(double x) double a5 = 1,-2, 3,F,57double y = 0;for(i nt i=0; i5; i+)V = y*x + ai; return y;(1)写出执行语句1) ” , f (0) en dl;, f(1) cout jvo_display (Tcout a0;for (i nt i=(4 cout en dl;2. 函数 int digit (int n)整数

10、,并返回。例如: int digit(i nt n)1 ; in; i+) cout 大 a, int n) r n ? a i;的功能是将整数n按其十进制数各位倒置生成一个新digit (123) 的结果为321。请完成函数定义。int m = 0while( n)m = m*10 + n %10;n /= ? 10 ;return () m ;3 .函数 char *StrCpy (char , const char * source);的功能是将source为首地址的字符串复制到dest为首地址的字符串中,并返回目标字符串的首地址。char *StrCpy(char *dest, con

11、st char夫 source)int i;(9 ) for (i=0; source i ! =z 0 A ; i+ )dest i = source i;dest i = (11),0,;return (12) dest ;4.请完成程序(通过传递引用、传递指针交换实参数据的值)#i nclude &a, T &b) using n amespace std;template void swap_r(T T temp;T夫 b)template void swap_p(T (16) T temp ;temp =夫 a;*a = *b;夫 b = temp;int main()int a,

12、b; a=3; b=5;swap_r (17) ar(18)b);cout a b en dl;a=3; b=5;swap_p (19) & a,(20)&b );cout a b en dl;return 0;四、简答题。有如下关于日期处理的程序,请简要回答各小题(共 20分)。注:行号不是程序中的成分,是为了叙述方便而添加 的。#i nclude #i nclude using n amespace std;int isLeapyear(i nt year)(return year%4=0 & year%100!=0 | year%400=0;void NextDate(i nt &yea

13、rz int &mon th, i nt &day)(int days12=31,28,31,30,31,30,31,31,30,31,30,31; days1 += isLeapyear (year);day+;if(day daysm on th-1)(day = 1; mon th+;if(mo nth=13)(month = 1; year+;void NextNDate(int &year(for(i nt i=0; in; i+)z int &mon th, int &day, int n)NextDate(yearzmon th, day); void ShowDate(i nt

14、 year(cout setfill (z int mon th, int day)10 T) setw(2) month setw(2)vdayv H/yearsetfill(1 T )endl;int main()(int year=2007 f mon th=lr day=l r n=400, i;ShowDate(year, mon th, day);for(i=0; i days*m on th-l)(夫 month)+;夫 day = 1;if(*mo nth=13)(夫 year)+; *mon th = 1;01/01/2007程序中调用该修改后的函数语句(第 25, 3801

15、/02/2007行)则应修改为:01/03/2007NextDate(&year, &month, &day);01/04/20073.将程序运行的输出结果填入右表中(5分)01/05/200701/06/200702/10/20071. (6分)从键盘输入一个正整数n,找出nl以内被3除余2,且被5除余3,且被 7除余5的最大整数。若存在,则输出该数;否则输出“不存在”。#i nclude using n amespace std;int mai n()int n, i;cout n;for( i=n; i; i一)(if(i%3=2 & i%5=3 & i%7=5) break;if(i0

16、)cout i en dl;elsecout 不存在=f A 1 & stri=T a * &stri a且sZ?且sc。三角形的周长为 len = a + b + c ; 面积为 Area =-b)(sc).#in clude int tria ngle(double a, double b, double c, double &lenzdouble &area)(int flag =1; double s = (a+b+c)/2;if(sa & sb & sc)(area = sqrt(s夫(s-a) 夫(s-b)* (s-c); le n = a + b +c;retur n flag;#in clude using n amespace std;int mai n()(double a, b, c, le nz area;int flag;a = 3; b = 4; c = 5;flag = triangle(a, b, c, lenz area);c

温馨提示

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

评论

0/150

提交评论