C++往年试题1

上传人:缘*** 文档编号:333289729 上传时间:2022-09-01 格式:PDF 页数:50 大小:6.36MB
返回 下载 相关 举报
C++往年试题1_第1页
第1页 / 共50页
C++往年试题1_第2页
第2页 / 共50页
C++往年试题1_第3页
第3页 / 共50页
C++往年试题1_第4页
第4页 / 共50页
C++往年试题1_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《C++往年试题1》由会员分享,可在线阅读,更多相关《C++往年试题1(50页珍藏版)》请在金锄头文库上搜索。

1、|2006 秋一、选择题(用答题卡答题,答案依次填在2130答题号内)21、下列叙述中,不 正 确 的 是.A,个函数中可以有多个return语句 B 函数可通过return语句返回数据C 必须用一个独立的语句来调用函数 D 函数main也可以带有参数22、下列定义变量和常量的语句中,语法正确的是。A float ij,int k;B const int i;C int const k=l;D#define PI=3.1415923、下列对于构造函数和析构函数的叙述中,正确的是。A 构造函数可以重载,析构函数不能重载B 构造函数不能重载,析构函数可以芭载C 构造函数可以重载,析构函数也可以重载

2、D 构造函数不能重载,析构函数也不能重载24、执行以下语句时,循环的次数是。for(int x=0,y=0;!x&y=5;y+);A 无数次 BO C5 D625、已定义类A,该类构造函数的参数都没有缺省值。执行语句:A al(2),a2(l,2),*p=newA3;则自动调用该类的缺省构造函数的次数为 oA 1 B 2 C3 D 526、下列关于派生类的叙述中,不正确的是 oA 派生类可以作为基类派生出新的派生类 B 一个派生类可以有多个基类C 派生类继承了基类的所有成员 D 派生类只能继承基类中的非私有成员27、设有说明语句:int i=2,*p=&i;char s20=,Hello,*q

3、=s;以下选项中,存 在 语 法 错 误 的 是。A cinp;B coutp;C cinq;D coutq;28、下列关于赋值兼容规则的叙述中,不正确的是。A 派生类的对象可以赋值给基类的对象B 基类的对象可以赋值给派生类的对象C 派生类的对象可以初始化其基类的引用D 可以将派生类对象的地址赋值给其基类的指针变量2 9 下列关于变量的叙述中,不正确的是。A C+语言中将变量分为auto,static,extern和 register四种存储类型B 自动变量和外部变量的作用域为整个程序文件C 函数内定义的静态变量的作用域为定义它的函数体D 外部静态变量的作用域为定义它的文件内3 0 设有说明语

4、句:char a=,string!,*p=a;以下选项中,正确的是 OA.sizeof(a)的值与strlen(a)的值相等B.strlen(a)的值与strlen(p)的值相等C.sizeof(a)的值与sizeof(p)的值相等D.sizeof(a)的值叮sizeof(*p)的值相等二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)基本概念题,共5分1、当一个类的非静态成员函数被调用时.,该成员函数的指向调用它的对象。2、C+语言中的友元函数提供了在类外访问类中的私有成员和保护成员的功能,但破坏了类 的 。3,使用成员函数对双目运算符进行重载时,其 左 操 作 数 是 。4

5、、设有宏定义和变量说明:#define T(x,y)x+yint a=T(3,4)*T(3,5);则变量a 的初侑为(4)。5、设有说明语句:inta4=l,2,2,3,4,5,*p=(int*)a;则*8+5)的值为(5)。阅读程序题,共13分6 程 序 (3 分)#include#includeint isvowel(char c)return(c=,a,|c=,e,|c=,i,|c=,o,|c=,u,);void pluralize(char*s)(int len=strlen(s);char*p=s+len-l;char*q=s+len-2;if(*p=,h,&(*q=,c,|*q=,

6、s,)strcat(p,es,);/strcat 函数实现两个字符串的拼接else if(*p=,s,)strcat(pjes);else ifi(*p=y)if(isvowel(*q)strcat(p,s);else strcpy(p,ies);else if(*p=*z,)if(isvowel(*q)strcat(p,zes,*);else strcat(p,es);else strcat(pjs);void main(void)char word620=“wishJbus,toy”,“navy”,“quiz,computer;fbr(int i=0;i6;i+)pluralize(wor

7、di);coutword i?t9;ifi(i+1 )%2=0)cout,n,;)程序输出的第一行是(6),第 二 行 是(7),第三行是(8)。7 程序(3 分)#includevoid f(int j)if(!j)coutj;return;if(j%2)f(j/10);coutj%10;elsecoutj%10;f(j/10);)void main(void)出 0);cout,n,;RI 357);cout,n,;R2468);coutwW;程序输出的第一行是 第二行是一(10)_ ,第三行是一8 程序(3 分)#includeint x=2,y=x+30;class Aint y;st

8、atic int x;public:operator int()return x+y;A operator-H-(int)(return A(x+,y+);)A(int x=2,int y=3)A:x=:x+x;A:y=:y+y;void print()cout,x=,x,t,y=,yendl;;int A:x=23;void main(void)(Aa(54,3),b(65),c;a.print。;int i=a+b;c o u tv-v v e n d l;c+;c.print();)程序输出的第一行是 32),第二 行 是 (1 3),第三行是一 34)。9 程序(2 分)#includ

9、echar*f(char*s,char ch)char*p=s,*q=s;while(*q=*p-H-)if(*q!=ch)q-H-;return s;void main(void)(char sl =,Hello How are you,s2 =,1100101 11”;co u t f(sl,e,),n,;coutf(s2;0,),n,;|程序输出的第一行是(1 5),第二行是(16).10.程序(2 分)#includeclass A!int x,y;public:A(int i,intj)x=i;y=j;operator+(int)coutv+xvv-vv+yvv-vv”重载 l,,n

10、,;friend A operator+(A);;A operator+(A op)(coutvv+op.x,yv+op.yv,Yv”重载 2,n,;return op;|void main(void)Aa(l,2);-H-a;a-H-;程序输出的第一行是(17),第二行是(18)。完善程序题,共 12分1 1 下面程序的功能是:先输入一行字符串,并从输入的字符串中找到最小的字符(其ASCH值最小),用 min保存该字符。然后将该字符前的所有字符顺序往后移动一个字符位置。最后,将保存的字符放在该字符串的第0 个位置上。例如,设输入的字符串“bcdfae,其中字母 a 为最小字符,经移动处理后,

11、程序输出字符串“abed佗”.程序(4 分)#includevoid fun(char*str)char min,*q,*p;(1 9);min=*p-H-;while(*p!=,0,)if(20)min=*p;q=p;)p+;)p=q;whi (21)*p=*(p-l);一(22L _;*p=min;void main(void)char str80;cin.getline(str,80);fun(str);co u t str,n,;12、用程序模拟两个大整数(为简化程序,设整数为正数)的加法运算。假定一个整数最多N 位,用个一维数组存放其各位数字。在数组下标为0 的元素中存放该整数的个位

12、数字,下 标 为 1 的元素中存放 该 整 数 的 十 位 数 字,依 次 类 推。例 如,大 整 数 a 的值为88099005798957,大整数b的值为776988213577,则两个整数相加的结果为88875994012534。以下是程序输出的结果:integer a:88099005798957integer b:776988213577Sum:88875994012534 程序(4 分)#include#define N 20 整数的位数void add(int sum,int a,int b);/sum=a+bvoid wrt(23);void main(void)(int aN

13、=7,5,9,8,9,7,5,0,0,9,9,0,8,8;int bN=7,7,5,3,l,2,8,8,9,6,7,7;int sumN;add(sum,a,b);witflnteger a:,a);wrt(44Integer b:”,b);wrt(Sum:,sum);void add(int sum,int a,int b)int carry=0,i;/carry 表示进位fbr(i=O;iN;-H-i)sumi=(24);if(sumi10)carry=0;elsecarry=sumi/10;sumi=(25);)void wrt(const char*s,int a)int i;cout

14、s;for(26);i=0;-i)coutai;cout,n,;1 3 下面程序先建立一条单向链表,其中每一个结点包含产品名称和产品类别。然后,对链表中的结点按产品类别进行分类,将同类别产品的结点放在一起。具体实现过程为:依次从已建立的单向链表上取下个结点,根据该结点的产品类别值插入到新的链表中。插入过程为:若新链表上己有该产品类别的结点,则将结点插入到同类别结点的最后一个结点的后面;否则,将该结点插入到新链表的最后一个结点的后面。最后,输出分类后链表上各个结点的信息。程序(4 分)#include#includestruct nodechar product20;产品名称char categ

15、ory10;产品类别node*next;;node*create(void)/创建链表(node temp,*p2=&temp;char product20,category 10;while(l)coutvv”输入产品名称和类别,当输入产品名称为end时表示结束:”;cinproductcategory;ifstrcmp(product/,end,)=0)break;p2-next=new node;p2=p2-next;strcpy(p2-product,product);strcpy(p2-category,category);(2 7);return temp.next;void pr

16、int(node*h)输出链表while(h)couth-product,t,h-categoryendl;h=h-next;coutendl;)void deletechain(node*h)册 U 除链表 h node*p;while(28)h=h-next;delete p;)node*insertascategory(node*h,node*p)按类别插入结点node*p2=0,*pl=h;iRh=0)p-next=0;return p;while(p 1&strcmp(p 1 -category,p-category)p2=pl;pl=pl-next;找同类结点while(p 1&strcmp(p 1 -category,p-category)=0)p2=pl;pl=pl-next;定位在同类结点后p-next=p 1;(29):插入p 1 ,p2结点之间return h;node*classify(node*h)/按类别分类(node*h2=0,*p;while(h)p=h;_(30)一;h2=insertascategory(h2,p);return h2;)void m

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号