




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
整理为word格式整理为word格式整理为word格式C语言程序设计A期末模拟试题一一、单项选择题(每小题2分,共20分)由C++目标文件连接而成的可执行文件的缺省扩展名为()。A.cppB.exeC.objD.likx>0&&x<=10的相反表达式为()。A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10在下面的一维数组定义中,哪一个有语法错误。(C)A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加(C)。A.1B.4C.sizeof(double)D.sizeof(p)当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是(B)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态内存,应使用语句(A)。A.deletep;B.delete*p;C.delete&p;D.delete[]p;假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为()。A.px(a)B.px[a]C.px->aD.px.a栈具有()的操作特性。A.先进先出B.先进后出C.进出无序D.进出任意对于任一个类,用户所能定义的构造函数的个数至多为()。A.0B.1C.2D.任意个下列对派生类的描述中错误的说法是:()。A.派生类至少有一个基类B.派生类可作为另一个派生类的基类C.派生类除了包含它直接定义的成员外,还包含其基类的成员D.派生类所继承的基类成员的访问权限保持不变二、填空题(每题2分,共20分)C++语言是在_________语言的基础上发展起来的。当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。假定x是一个逻辑量,则x&&false的值为__________。元素类型为char的二维数组a[10][30]共占用________字节的存储空间。局部变量具有局部生存期,存放在内存的______栈______区中。已知语句“cout<<p;”的输出是“Hello!”,则语句“cout<<*p;”输出的是__________。对类中常量成员的初始化是通过在构造函数中给出的______________来实现的。在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。假定用户为类AB定义了一个构造函数“AB(intaa):a(aa){}”,则定义该类的对象时,有________种定义格式。在每个成员函数中,隐含的第一个参数的参数名为________。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分)1.斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。#include<iostream.h>voidmain(){intf,f1,f2,i;cout<<”斐波那契数列:\n”;f1=0;f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3;i<=20;i++){f=______(1)______;cout<<setw(6)<<f;if(_____(2)______)cout<<endl;f1=f2;f2=____(3)_______;}cout<<endl;}(1)(2)(3)2.对数组a[n]按升序进行的选择排序算法voidSelectSort(inta[],___(1)___){整理为word格式整理为word格式整理为word格式 inti,j,k; for(i=1;i<n;i++){//进行n-1次选择和交换k=i-1; for(j=i;j<n;j++) if(a[j]<a[k])___(2)___; intx=a[i-1];a[i-1]=a[k];___(3)___; }}(1)(2)(3)3.已知一个类的定义如下:#include<iostream.h>classAA{ inta[10]; intn;public: voidSetA(intaa[],intnn);//用数组aa初始化数据成员a, //用nn初始化数据成员n intMaxA();//从数组a中前n个元素中查找最大值voidSortA();//采用选择排序的方法对数组a中前n个元素//进行从小到大排序voidInsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序 voidPrintA();//依次输出数组a中的前n个元素};该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。int____(1)_____{ intx=a[0]; for(inti=1;i<n;i++) if(a[i]>x)___(2)___; ___(3)___;}(1)(2)(3)4.classA{inta;public:A(){a=0;}___(1)___{}//定义构造函数,用参数aa初始化数据成员a};main(){___(2)___;//定义类A的指针对象p___(3)__;//用p指向动态对象并初始化为整数5}(1)(2)(3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分)1.#include<iostream.h>#include<stdlib.h>voidmain(){ inta[8]={25,48,32,85,64,18,48,29};intmax,min; max=min=a[0]; for(inti=0;i<8;i++){if(x>a[i])max=a[i]; if(x<a[i])min=a[i]; } cout<<"max:"<<max<<endl; cout<<"min:"<<min<<endl;}2.#include<iostream.h>voidmain(){for(inti=1,s=0;i<20;i++){ if(i%2==0||i%3==0)continue; cout<<i<<’’; s+=i; } cout<<s<<endl;}3.voidtrans(intx){ chara[10]; inti=0,rem; do{ rem=x%16; x=x/16; if(rem<10)a[i]=48+rem;//整理为word格式整理为word格式整理为word格式’0’字符的ASCII码为48 elsea[i]=55+rem;//’A’字符的ASCII码为65 i++; }while(x!=0); while(i>0)cout<<a[i]; cout<<endl;}4.char*f(char*s){intn=strlen(s);char*r=newchar[n+1];for(inti=0;i<n;i++)if(s[i]>='a'&&s[i]<='z')r[i]=s[i]-'a'+'A';elser[i]=s[i];r[n]=’\0’;returnr;}五、编程题(每小题6分,共12分)1.求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。2.根据下面类中Reverse函数成员的原型和注释写出它的类外定义。classAA{ int*a; intn; intMS;public: voidInitAA(intaa[],intnn,intms){ if(nn>ms){cout<<"Error!"<<endl;exit(1);} MS=ms; n=nn; a=newint[MS]; for(inti=0;i<MS;i++)a[i]=aa[i]; }AA*Reverse();//对于调用该函数的对象,将其a数组中前n个//元素值按相反的次序排列,返回指向该对象的指针。};C语言程序设计A期末模拟试题一参考答案单选题1.B 2.A 3.C 4.B 5.C 6.A 7.C 8.B 9.D 10.D填空题1.C 2.空白 3.false(或0) 4.300 5.栈 6.H 7.初始化表 8.成员函数 9.1 10.this三、程序填充题1.(1)f1+f2 (2)i%5==0(3)f2.(1)intn (2)k=j(3)a[k]=x3.(1)AA::MaxA() (2)x=a[i](3)returnx4.(1)A(intaa):a(aa)(2)A*p(3)p=newA(5)四、理解问答题1.max:85min:182.1571113373.此函数用于把十进制整数x转换为十六进制数字串输出4.根据参数s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使s字符串中的小写字母均变为大写。五、编程题1.#include<iostream.h>voidmain(){ intx,max; cin>>x; max=x;for(inti=0;i<9;i++){ cin>>x; if(x>max)max=x; } cout<<"max:"<<max<<endl;}整理为word格式整理为word格式整理为word格式2.AA*AA::Reverse(){ inti,x; for(i=0;i<n/2;i++){ x=a[i];a[i]=a[n-1-i];a[n-1-i]=x; }returnthis;}C语言程序设计A期末模拟试题二一、单项选择题(每小题2分,共20分)编写C++程序一般需经过的几个步骤依次是()。A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。A.0B.4C.8D.6函数重载是指(A)。A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。A.cout<<*s;B.cout<<s;C.cout<<&s;D.cout<<(void*)s;在类作用域中能够通过直接使用该类的()成员名进行访问。A.私有B.公用C.保护D.任何假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为()。A.aB.AA::aC.a()D.AA::a()在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为()。A.length+1B.first+lengthC.(first+length-1)%MSD.(first+length)%MS假定AB为一个类,则执行“ABr1=r2;”语句时将自动调用该类的()。A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数双目运算符重载为普通函数时,其参数表中应带有()个参数。A.0B.1C.2D.3当派生类中有和基类一样名字的成员时,一般来说,()。A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员二、填空题(每题2分,共20分)行尾使用注释的开始标记符为__________。设enumPrintstatus{ready=2,busy,error};则cout<<busy的输出结果是________。重载一个函数的条件是:该函数必须在参数的个数或参数的___类型_上与其它同名函数有所不同。定义一个函数模板要用到的第一个修饰符是_template_。与结构成员访问表达式p->name等价的表达式是____________。如果一个派生类的基类不止一个,则这种继承称为____________。在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则插入一个新元素的位置为__________。向一个队列中插入元素就是把该元素放到________元素的后一位置上。假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则定义该类对象x的定义语句“ABx;”是_________(正确/错误)的。除了__________运算符外,其他重载的运算符都可以被派生类继承。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分)1.统计字符串中英文字母个数的程序。#include<iostream.h>intcount(charstr[]);voidmain(){chars1[80];整理为word格式整理为word格式整理为word格式cout<<”Enteraline:”;cin>>s1;cout<<”count=”<<count(s1)<<endl;}intcount(charstr[]){intnum=0;//给统计变量赋初值for(inti=0;str[i];i++)if(str[i]>=’a’&&str[i]<=’z’||___(1)___)___(2)___;___(3)___;}(1)(2)(3)2.从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。#include<iostream.h>voidmain(){ intx;cout<<"输入一个整数:";cin>>x;inta[20],k=0,r;do{ r=x%2;a[k++]=r;x=___(1)___; }while(___(2)___);for(--k;k>=0;k--)___(3)___;cout<<endl;}(1)(2)(3)3.假定有定义为“structNODE{intdata;NODE*next;};”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。voidf6(NODE*&L,inttable[],intn){ L=NULL; if(n<=0)return; inti=0; NODE*p; while(___(1)___){ p=newNODE; p->data=___(2)___; p->next=L; ___(3)___; i++; }}(1)(2)(3)4.已知一个利用数组实现栈的类定义如下:constintARRAY_SIZE=10;classStack{public: voidInit(){top=-1;}//初始化栈为空voidPush(intnewElem);//向栈中压入一个元素 intPop();//从栈顶弹出一个元素 boolEmpty(){//判栈空if(top==-1)returntrue;elsereturnfalse;} intDepth(){returntop+1;}//返回栈的深度 voidPrint();//按照后进先出原则依次输出栈中每个元素,直到栈空为止private: intelem[ARRAY_SIZE];//用于保存堆栈元素的数组 inttop;//指明栈顶元素位置的指针};该类的Pop和Print函数的实现分别如下:___(1)___{ if(top==-1){ cout<<"栈空!"<<endl; exit(1);//中止运行 } return___(2)___;}voidStack::Print(){ while(!Empty()) cout<<___(3)___<<'';}整理为word格式整理为word格式整理为word格式(1)(2)(3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分)1.#include<iomanip.h>constintN=5;voidmain(){inti,p=1,s=0; for(i=1;i<N;i++){ p=p*i; s=s+p; cout<<setw(5)<<i<<setw(5)<<p; cout<<setw(5)<<s<<endl; }}2.#include<iostream.h>#include<string.h>classCD{ char*a; intb;public: voidInit(char*aa,intbb) { a=newchar[strlen(aa)+1]; strcpy(a,aa); b=bb; } char*Geta(){returna;} intGetb(){returnb;} voidOutput(){cout<<a<<''<<b<<endl;}};voidmain(){ CDdx,dy; chara[20]; dx.Init("abcdef",30); strcpy(a,dx.Geta()); strcat(a,"xyz"); dy.Init(a,dx.Getb()+20); dx.Output(); dy.Output();}3.#include<iostream.h>#include<stdlib.h>#include<math.h>voidmain(){inti=10,a; while(i>0){ a=rand()%100+10; intj,k=int(sqrt(a)+1e-5);//sqrt(x)为求x的平方根函数for(j=2;j<=k;j++) if(a%j==0)break; if(j>k){cout<<a<<'';i--;} }}4.intf8(constchar*str1,constchar*str2){inti=0;while(str1[i]&&str2[i]) if(str1[i]==str2[i])i++; elseif(str1[i]>str2[i])return1; elsereturn-1; if(str1[i]==str2[i])return0; elseif(str1[i]>str2[i])return1; elsereturn-1;}五、编程题(每小题6分,共12分)1.按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。2.根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。classAA{ int*a; intn; intMS;public: voidInitAA(intaa[],intnn,intms){ if(nn>ms){cout<<"Error!"<<endl;exit(1);} MS=ms; n=nn; a=newint[MS];整理为word格式整理为word格式整理为word格式 for(inti=0;i<MS;i++)a[i]=aa[i]; }intMaxMin(int&x,int&y);//从数组a的前n个元素中求出//最大值和最小值,并分别由引用参数x和y带回,//同时若n大于0则返回1,否则返回0。};整理为word格式整理为word格式整理为word格式C语言程序设计A期末模拟试题二参考答案单选题1.B 2.A 3.A 4.D 5.B 6.A 7.C 8.D 9.C 10.B填空题1.// 2.3 3.类型 4.template 5.(*p).name 6.多继承 7.(first+length)%MS 8.队尾 9.正确 10.赋值三、程序填充题1.(1)str[i]>=’A’&&str[i]<=’Z’ (2)num++(3)returnnum2.(1)x/2(2)x!=0(3)cout<<a[k]3.(1)i<n(2)table[i](3)L=p4.(1)intStack::Pop()(2)elem[top--](3)Pop()四、理解问答题1.111223369424332.abcdef30abcdefxyz503.随机产生出10个10至100之间的素数并显示出来。4.实现strcmp函数的功能,比较两个字符串str1和str2的大小,若str1较大则返回1,若str2较大则返回-1,若两者相等则返回0。五、编程题1.doubleMean(doublea[M][N],intm,intn);doubleMean(doublea[M][N],intm,intn){inti,j;doublev=0.0;for(i=0;i<m;i++)for(j=0;j<n;j++)v+=a[i][j];v/=m*n;returnv;}2.intAA::MaxMin(int&x,int&y){ intmx,my; mx=my=a[0]; for(inti=1;i<n;i++){if(a[i]>mx)mx=a[i]; if(a[i]<my)my=a[i]; } x=mx;y=my; if(n>0)return1;elsereturn0;}C语言程序设计A期末模拟试题三一、单项选择题(每小题2分,共20分)C++程序的基本模块为()。A.表达式B.标识符C.语句D.函数设x和y均为bool量,则x&&y为真的条件是()。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假函数调用不可以(D)。A.出现在一个表达式中B.出现在执行语句中C.作为一个函数的实参D.作为一个函数的形参假定变量m定义为“intm=7;”,则定义变量p的正确语句为(B)。A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,则不正确的语句为(A)。整理为word格式整理为word格式整理为word格式A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};C.BOOK*x=newBOOK;D.BOOK*x=book;假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为(D)。A.intrx=x;B.intrx=&x;C.int*rx=&x;D.int&rx=x;面向对象方法的多态性是指()。A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的面向对象软件开发中使用的OOD表示()。A.面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法在关键字private后面定义的成员为类的()成员。A.私有B.公用C.保护D.任何假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。A.intAA::a()B.intAA:a()C.AA::a()D.AA::inta()二、填空题(每题2分,共20分)C++语言的编译单位是扩展名为_CPP__的_____程序_____文件。C++常数0345对应的十进制值为__________。假定x是一个逻辑量,则!x||false的值为__________。若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为____cin>>a____。当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的____总和___。若p指向x,则____*p____与x的表示是等价的。已知语句“cout<<s;”的输出是“apple”,则执行语句“cout<<s+2;”的输出结果为__________。若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。重载插入运算符<<或抽取运算符>>时,其运算符函数不能被定义为类的________函数。在一个或若干个类的基础上构造一个新类,被称为___________。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分)1.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为“#include<iostream.h>voidmain(){ intx; cout<<"请输入一个整数,若小于3则重输:"; docin>>x;while(___(1)___); inti=2; do{ while(___(2)___){ cout<<i<<''; x/=i; } ___(3)___; }while(i<x); if(x!=1)cout<<x; cout<<endl;}(1)(2)(3)2.主函数调用一个fun函数将字符串逆序。#include<iostream.h>#include<string.h>___(1)___;voidmain(){chars[80];cin>>s;___(2)___;cout<<”逆序后的字符串:”<<s<<endl;}voidfun(charss[]){intn=strlen(ss);for(inti=0;___(3)____;i++){charc=ss[i];整理为word格式整理为word格式整理为word格式ss[i]=ss[n–1–i];ss[n–1–i]=c;}}(1)(2)(3)3.已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。classARRAY{ int*v;//指向存放数组数据的空间 ints;//数组大小public: ARRAY(inta[],intn);~ARRAY(){delete[]v;}intsize(){returns;} int&operator[](intn);};___(1)___ARRAY(inta[],intn){ if(n<=0){v=NULL;s=0;return;} s=n; v=___(2)___; for(inti=0;i<n;i++)___(3)___;}(1)(2)(3)4.#include<iostream.h>#include<stdlib.h>classA{int*a;intn;intMaxLen;public:A():a(0),n(0),MaxLen(0){}A(int*aa,intnn,intMM){n=nn;MaxLen=MM;if(n>MaxLen)exit(1);___(1)___;//由a指向长度为MaxLen的动态数组for(inti=0;i<n;i++)a[i]=aa[i];}~A(){delete[]a;}intGetValue(inti)___(2)___//函数体返回a[i]的值};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10}; Ar(b,10,10);inti,s=0;for(i=0;i<10;i++);___(3)___//把r对象的a数据成员中的每个//元素值依次累加到s中cout<<"s="<<s<<endl;}(1)(2)(3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分)1.#include<iostream.h>voidmain(){ inta=2,b=5,c=0; if(a+b>10)c=a*b;elsec=3*a+b; if(c<=20)cout<<c*c;elsecout<<4+c-5; cout<<endl; a=a+b;b=a+b;c+=a+b; cout<<"a,b,c="<<a<<','<<b<<','<<c<<endl;}2.#include<iostream.h>#include<string.h>voidmain(){chara[5][10]={"student","worker","soldier","cadre","peasant"}; chars1[10],s2[10]; strcpy(s1,a[0]);strcpy(s2,a[0]); for(inti=1;i<5;i++){ if(strcmp(a[i],s1)>0)strcpy(s1,a[i]); if(strcmp(a[i],s2)<0)strcpy(s2,a[i]);}整理为word格式整理为word格式整理为word格式 cout<<s1<<’’<<s2<<endl;}3.#include<iostream.h>#include<math.h>voidmain(){ intx,y; cin>>x; y=int(sqrt(x));//sqrt(x)为求x的算术平方根 for(inti=1;i<=y;i++) if(x%i==0)cout<<”x=”<<i<<’*’<<x/i<<endl;}4.IntNode*FindMax(IntNode*f){ if(!f)returnNULL; IntNode*p=f; f=f->next; while(f){ if(f->data>p->data)p=f; f=f->next; } returnp;}假定IntNode的类型定义为:structIntNode{ intdata;//结点值域 IntNode*next;//结点指针域};五、编程题(每小题6分,共12分)1.计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。2.根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。classAA{ int*a; intn; intMS;public: voidInitAA(intaa[],intnn,intms){ if(nn>ms){cout<<"Error!"<<endl;exit(1);} MS=ms; n=nn; a=newint[MS]; for(inti=0;i<MS;i++)a[i]=aa[i]; }AA*Reverse1();//通过动态存储分配得到一个对象,并动态分配//a[MS]数组空间,要求该对象中的n和MS的值与*this中的//对应成员的值相同,数组元素的值是按照*this中数组元//素的相反次序排列得到的,要求该函数返回动态对象的地址。};整理为word格式整理为word格式整理为word格式C语言程序设计A期末模拟试题三参考答案单选题1.D 2.A 3.D 4.B 5.A 6.D 7.C 8.B 9.A 10.A填空题1.cpp、程序 2.229 3.!x 4.cin>>a 5.总和 6.*p 7.ple 8.this 9.成员 10.继承(派生)三、程序填充题1.(1)x<3(或x<=2)(2)x%i==0(3)i++2.(1)voidfun(charss[])(2)fun(s)(3)i<n/23.(1)ARRAY::(2)newint[n](3)v[i]=a[i]4.(1)a=newint[MaxLen](2){returna[i];}(3)s+=r.GetValue(i)四、理解问答题1.121a,b,c=7,12,302.workercadre3.把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。整理为word格式整理为word格式整理为word格式4.实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。五、编程题1.#include<iostream.h>voidmain(){ inti;//用i作为循环变量 intp=1;//用p作为累乘变量 ints=1;//用s作为累加循环变量 for(i=1;i<=10;i++){p*=3;s+=p;} cout<<s<<endl;}2.AA*AA::Reverse1(){ AA*px=newAA; px->n=n;px->MS=MS; px->a=newint[MS]; for(inti=0;i<n;i++){ px->a[n-1-i]=a[i]; } returnpx;}C语言程序设计A期末模拟试题四一、单项选择题(每小题2分,共20分)可用作C++语言用户标识符的一组标识符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof存储以下数据,占用存储字节最多的是()。A.0B.‘0’C.“0”D.0.0以下说法中正确的是(B)。A.C++程序总是从第一个定义的函数开始执行B.C++程序总是从main函数开始执行C.C++函数必须有返回值,否则不能使用函数D.C++程序中有调用关系的所有函数必须放在同一个程序文件中以下正确的说法是(B)。A.用户调用标准库函数前,必须重新定义B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统不允许用户重新定义标准库函数D.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中变量s的定义为“char*s=”Helloworld!”;”,要使变量p指向s所指向的同一个字符串,则应选取(A)。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;假定变量a和pa定义为“doublea[10],*pa=a;”,要将12.35赋值给a中的下标为5的元素,不正确的语句是(D)。A.pa[5]=12.35;B.a[5]=12.35;C.*(pa+5)=12.35;D.*(a[0]+5)=12.35;关于消息,下列说法中不正确的是()。A.发送消息的对象请求服务,接受消息的对象提供服务B.消息的发送者必须了解消息的接收者如何相应消息C.在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用D.每个对象只能接收某些特定格式的消息软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为()。A.abcB.*thisC.thisD.this&类的析构函数可以带有()个参数。A.0B.1C.2D.任意二、填空题(每题2分,共20分)用于从键盘上为变量输入值的标准输入流对象是________。程序中的预处理命令是指以______字符开头的命令。常数100和3.62的数据类型分别为__________和__________。用于存储一个长度为n的字符串的字符数组的长度至少为整理为word格式整理为word格式整理为word格式____n+1____。假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为_a+i*sizeof(a[i])_。基类和派生类的关系称为__________。类定义中,既包含数据成员,也包含________成员。在一个用数组实现的队列类中,包含有两个数据成员,一个指明队列长度,另一个指明__________元素的位置。当一个队列为空时,不能对其做________元素的操作。派生类的成员函数可以直接访问基类的成员,不能直接访问基类的______成员。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分)1.对数组a[n]按升序进行的插入排序算法voidInsertSort(___(1)___,intn){ inti,j,x; for(i=1;i<n;i++){//进行n-1次循环x=a[i]; for(j=i-1;j>=0;j--)//为x顺序向前寻找合适的插入位置 if(x<a[j])___(2)___;else___(3)___; a[j+1]=x; }}(1)(2)(3)2.假定有定义为“structNODE{intdata;NODE*next;};”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。voidf5(NODE*&L,inttable[],intn){ if(n<=0){L=NULL;return;} L=newNODE;//生成附加的头结点 inti=0; NODE*p=L; while(___(1)___){ p=p->next=___(2)___; p->data=___(3)___; i++; } p->next=NULL;//把最后一个结点的指针域置空 p=L; L=L->next;//使L指向链表的第一个带值的结点 deletep;}(1)(2)(3)3.下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:(a)用()而不是[]进行下标访问,(2)下标从1而不是从0开始,(c)要对下标是否越界进行检查。classARRAY{ int*v;//指向存放数组数据的空间 ints;//数组大小public: ARRAY(inta[],intn);~ARRAY(){delete[]v;}intsize(){returns;}int&operator()(intn);};___(1)___operator()(intn){//()的运算符函数定义 if(___(2)___){cerr<<"下标越界!";exit(1);}return___(3)___;}(1)(2)(3)4.在下面一段类的定义中,需要填充的函数由注释内容给出了功能。classPoint//定义坐标点类{public:intx,y;//点的横坐标和纵坐标Point(){x=0;y=0;}Point(intx0,inty0){x=x0;y=y0;}intX(){returnx;}intY(){returny;}voidPrintP(){cout<<"Point:("<<x<<","<<y<<")"<<endl;}}; 整理为word格式整理为word格式整理为word格式classLine:publicPoint//利用坐标点类定义直线类{private:classPointpt1,pt2;//直线的两个端点public: Line(Pointpts,Pointpte);//构造函数,分别用参数初始化对应的端点doubleDx(){returnpt2.x-pt1.x;}doubleDy(){returnpt2.y-pt1.y;}doubleLength(){//计算直线的长度 returnsqrt(___(1)___); };voidPrintL();//输出直线的两个端点和直线长度};Line::Line(Pointpts,Pointpte)___(2)___voidLine::PrintL(){cout<<"1st";pt1.PrintP();cout<<"2nd";pt2.PrintP();cout<<"TheLengthofLine:"<<___(3)___<<endl;}(1)(2)(3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分)1.#include<iostream.h>voidmain(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商标使用权转让合同(三):长期合作
- 简易劳动合同简易合同
- 合同纠纷处理与学生实践活动方案
- 水运联运代理合同及条款
- 钢结构加工承揽合同模板
- 林业用地承包转让合同样本
- 大学合同审签表
- 抽纱工艺的环保与可持续性考核试卷
- 天然气开采业的可再生能源转型实践与方案考核试卷
- 机床附件的标准化与规范化生产考核试卷
- 家校共育之道
- DeepSeek入门宝典培训课件
- 西安2025年陕西西安音乐学院专职辅导员招聘2人笔试历年参考题库附带答案详解
- 《作文中间技巧》课件
- 广东省2025年中考物理仿真模拟卷(深圳)附答案
- 2025届八省联考 新高考适应性联考英语试题(原卷版)
- 新苏教版一年级下册数学第1单元第3课时《8、7加几》作业
- 2024年山东电力高等专科学校高职单招职业技能测验历年参考题库(频考版)含答案解析
- 《平面广告赏析》课件
- 人教鄂教版六年级下册科学全册知识点
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
评论
0/150
提交评论