2010年6月期末试卷1 - 图文 联系客服

发布时间 : 星期日 文章2010年6月期末试卷1 - 图文更新完毕开始阅读6188defc04a1b0717fd5dd62

: 号 学 : 名————————— 签 生密 学: 级 效 班 。 弊无 作 不题 绝 , 试答 :考 级信内———————————— 年诚 , 则线封 规 场订 考 守 装 遵 :觉业自专, 中 —————————— 试 考 线 次 本 在 : 诺:承院人学 本 ———————— 南通大学2009—2010学年第二学期高级语言程序设计(VC++)试卷(期末)第1页 共 5 页

试题 一 二 三 四 五 六 七 八 总 得分 分 请将所有答案写入答题纸,否则不得分! 6.设int a=0,b=18,c=17,x,y;执行如下语句后,b、c的值分别为 。 得分 评卷人 一、选择题(每题2分,共30分。) x=a+b>c && c++; y=a||b++||c++; A、19 18 B、18 17 1.以下说法正确的是 。 C、18 18 D、18 19 A、C++程序总是从第一个定义的函数开始执行 7.有定义语句“char *pa[5];”则sizeof(pa)的值为: 。 B、C++程序中有调用关系的所有函数必须放在同一个程序文件中 A、1 B、4 C、C++程序中的函数都必须有返回值 C、5 D、20 D、C++程序中必须有且只能有一个main函数 8.若有以下语句,则 是对a数组元素的错误引用。 2.设有说明语句:float y=5.16347f;int x;则以下表达式中,可实现将y中的数值保留小数点后三位,第四位四舍五入的表达式是______。 int a[12]={0},*p[3],**pp,i; A、y=(y*1000+0.5)/1000.0 B、y=y*1000+0.5/1000.0 for(i=0;i<3;i++) p[i]=&a[i*4]; C、x=y*1000+0.5,y=x/1000.0 D、y=(y/1000+0.5)*1000.0 pp=p; 3.设有语句: A、a[12] B、 p[2][3] C、 a[10] D、pp[0][1] int y=1; while(y <=10) if (y%2= =0) break ; y++; 9.某类A有成员函数 int A::f (int,int);则如下函数中与该函数不能构成重载的则循环体执行的次数为: 。 A、无限次 B、1次 C、2次 D、10次 是 。 A、int A::f (int,int,int); B、double A::f (int,int); 4.设有宏定义语句: C、double A::f (double,double); D、double A::f (int,int) const; #define P(x,y) x+y 10.对于有对象成员的派生类,在创建该派生类对象时要执行三种构造函数: #define PP(a,b) a/b ①派生类构造函数、②对象成员的构造函数、③基类的构造函数 int c=P(2,3)+PP(2+3,P(2,3)); 这三种构造函数的执行顺序为: 。 则变量c的值为: 。 A、①②③ B、②③① C、③②① D、③①② A、6 B、11 C、7 D、10 11.下列关于静态数据成员的描述中正确的是 。 5.设有如下程序语句: A、静态数据成员是类的所有对象所共有的 float x,y; int j,k; B、静态数据成员要在构造函数内初始化 C、类的每个对象有自己的静态数据成员 const float* pf=&x; D、静态数据成员不能通过类的对象调用 const int *const pp=&j; 12.若类A被说明为类B的友元,类C为类B的派生类,则 。 则如下语句正确的是: 。 A、类B为类A的友元 A、*pp=25 B、pp=&k C、pf=&y D、*pf=25 B、类A的成员即为类B的成员 C、类A为类C的友元 D、以上都不正确 使用班级 普 本

出卷日期 2010 年 05 月 28 日

:号学 ————————— : 名密 姓 :级班 ———————————— 封 :级年 —————————— :业线 专 ———————— : 院学 南通大学2009—2010学年第二学期高级语言程序设计(VC++)试卷(期末)第2页 共 5 页

13.Sample是个类,设有正确语句“Sample a(2),a[2],(*p)[3];”,则调用构造函数的次数2.以下程序输出的第一行是 13 ,第二行是 14 。 为 。 #include A、4 B、3 C、2 D、1 int k=4; void prt(int *x,int &y,int z) 14.下面运算符中不能被重载的运算符是 。 { cout<<++*x<<',' < 二、填空题(将答案填写到与题目空格处的序号相对应的答int f(int x[],int n) 题纸序号处 共40分。) { if(n!=1) x[n]=n+f(x,n-1); cout< 10.输入输出流有缓冲和非缓冲之分,I/O流类库中预定义的四个标准流对象中, 10 class A{ 为非缓冲流。 int x; public: ●阅读程序题 (每空2分,共16分) A(int x=0){this->x=x;} 1. 以下程序输出的第一行是 11 ,第二行是 12 。 virtual void f1(){cout< void f2(){cout<=i) n++;m++; B(int x,int y=1):A(x){this->y=y;} cout<

void main(void) 3.完善类定义 { B b1(20,30); #include A a1(10),*pa; #include pa=&a1; pa->f1(); pa->f2(); class Books{ pa=&b1; pa->f1(); pa->f2(); private: } char *bk_name; //书的名称 ●完善程序题 (每空2分,共14分) int price; //书的价格 static int totalprice; //同类书总价格 1.如下函数的功能是用递归算法计算a的平方根,计算平方根的迭代公式如下:public: x1aBooks(char*str,int p) 1?2(x0?x) 请完善函数。 0{ 23 ; double MYSQRT(double a,double x0) strcpy(bk_name,str); { double x1,y; price=p; x1= 19 ; totalprice+=price; if(fabs(x1-x0)>0.00001) y= 20 ; } else y=x1; ~Books(){totalprice-=price; 24 ;} return y; char*GetN(){return bk_name;} } int GetP(){return price;} 2.isSubStr函数的功能为:在str1串中查找str2串,若找到,则返回str2串所在起始位 25 GetTotal_Price(){ return totalprice; } 置(起始位置从1开始计);若找不到,则返回0值。请完善函数。 }; #include int isSubStr(char *str1,char *str2) 得分 评卷人 { char *p=str2; int i=0,lenstr1=strlen(str1); //i为已比较相等的字符个数 三、程序设计(每题10分,共30分。) while(*str1 && *p && 21 ) str1++;//找到起始比较点 1. 输入一组非0整数(以输入0作为结束标志)到一维数组中,设计一程序,统计数组中奇 while(*str1 && *p ) 数、偶数的个数,并求出这一组数的平均值。 if(*str1= =*p) str1++,p++,i++;//开始比较 else //不能完全匹配时重新确定比较点 { str1=str1-i+1; p=str2; 2.定义对整数序列完成插入排序(降序)功能的函数,函数原型为:void InsertSort(int i=0; a[],int size); (a为整数序列,size为参排数据个数) } if(!*p) return 22 ; else return 0; } :号学 ————————— : 名密 姓 :级班 ———————————— 封 :级年 —————————— :业线 专 ———————— : 院学 南通大学2009—2010学年第二学期高级语言程序设计(VC++)试卷(期末)第4页 共 5 页

3. 平面直角坐标系下直线方程可表示为ax+by+c=0,其标准化方程为Ax+By+C=0,其中 A=a/sqrt(a*a+b*b), B=b/sqrt(a*a+b*b), C=c/sqrt(a*a+b*b)。 直线类Line结构如下: (1)数据成员: double a,b,c,A,B,C (2)成员函数 Line(double a1,double b1,double c1):初始化a、b、c,并计算A、B、C int IsParal (Line lin):判断本对象是否与另一直线平行,若是返回1,否则返回0 void intersection(Line lin,double &x,double &y):求两直线的交点坐标x和y 程序要求: (1)根据题意完成类结构的定义 (2)在主函数中完成测试,测试两直线为x+y+2=0和2x-2.5y+7=0是否有交点,若有,求交点 提示:直线A1x+B1y+C1=0和直线A2x+B2y+C2=0平行的条件为:A1*B2-A2*B1=0且A1*C2-A2*C1!=0 。两直线若有交点(x,y),则x=(B1*C2-B2*C1)/(A1*B2-A2*B1), y=(C1*A2-C2*A1)/(A1*B2-A2*B1) 。