江苏省秋计算机二级考试VC++试题.docx

上传人:b****6 文档编号:8653459 上传时间:2023-02-01 格式:DOCX 页数:10 大小:18.78KB
下载 相关 举报
江苏省秋计算机二级考试VC++试题.docx_第1页
第1页 / 共10页
江苏省秋计算机二级考试VC++试题.docx_第2页
第2页 / 共10页
江苏省秋计算机二级考试VC++试题.docx_第3页
第3页 / 共10页
江苏省秋计算机二级考试VC++试题.docx_第4页
第4页 / 共10页
江苏省秋计算机二级考试VC++试题.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

江苏省秋计算机二级考试VC++试题.docx

《江苏省秋计算机二级考试VC++试题.docx》由会员分享,可在线阅读,更多相关《江苏省秋计算机二级考试VC++试题.docx(10页珍藏版)》请在冰豆网上搜索。

江苏省秋计算机二级考试VC++试题.docx

江苏省秋计算机二级考试VC++试题

2006年(秋)笔试试卷

第二部分VisualC++程序设计

一、选择题(用答题卡答题,答案依次填在(21)~(30)答题号内)

21.下列叙述中,不正确的是(21)。

A.一个函数中可以有多个return语句B.函数可通过return语句返回数据

C.必须用一个独立的语句来调用函数D.函数main也可以带有参数

22.下列定义变量和常量的语句中语法正确的是(22)。

A.floati,j,intk;B.constinti;

C.intconstk=1;D.#definePI=3.14159

23.下列对于构造函数和析构函数的叙述中正确的是(23)。

A.构造函数可以重载,析构函数不能重载

B.构造函数不能重载,析构函数可以重载

C.构造函数可以重载,析构函数也可以重载

D.构造函数不能重载,析构函数也不能重载

24.执行以下程序时,循环的次数是(24)。

for(intx=0,y=0;!

x&&y<=5;y++);

A.无数次B.0C.5D.6

25.已定义类A,该类构造函数的参数都没有缺省值。

执行语句:

Aa1

(2),a2(1,2),*p=newA[3];

则自动调用该类的缺省构造函数的次数为(25)。

A.1B.2C.3D.5

26.下列关于派生类的叙述中不正确的是(26)。

A.派生类可以作为基类派生出新的派生类

B.一个派生类可以有多个基类

C.派生类继承了基类的所有成员

D.派生类只能继承基类中的非私有成员

27.设有说明语句:

inti=2,*p=&i;chars[20]=”Hello”,*q=s;

以下选项中存在语法错误的是(27)。

A.cin>>p;B.cout<>q;D.cout<

28.下列关于赋值兼容规则的描述中不正确的是(28)。

A.派生类的对象可以赋值给基类的对象

B.基类的对象可以赋值给派生类的对象

C.派生类的对象可以初始化其基类的引用

D.可以将派生类对象的地址赋值给其基类的指针变量

29.下列关于变量的叙述中不正确的是(29)。

A.C++语言中将变量分为auto、static、extern和register四种存储类型

B.自动变量和外部变量的作用域为整个程序文件

C.函数内定义的静态变量的作用域为定义它的函数体

D.外部静态变量的作用域为定义它的文件内

30.设有说明语句:

chara[]=”string!

”,*p=a;

以下选项中正确的是(30)。

A.sizeof(a)的值与strlen(a)的值相等B.strlen(a)的值与strlen(p)的值相等

C.sizeof(a)的值与sizeof(p)的值相等D.sizeof(a)的值与sizeof(*p)的值相等

二、填空题(请将答案填写在答题纸的相应答题号内)

●基本概念题(共5分)

1.当一个类的非静态成员函数被调用时,该成员函数的

(1)指向调用它的对象。

2.C++语言中的友元函数提供了在类外访问类中私有成员和保护成员的功能,但破坏了类的

(2)。

3.使用成员函数对双目运算符进行重载时,其左操作数是(3)。

4.设有宏定义和变量说明:

#defineT(x,y)x+y

inta=T(3,4)*T(3,5)

则变量a的初值为(4)。

5.设有说明语句:

inta[][4]={{1,2},{2,3,4,5}},*p=(int*)a;

则*(p+5)的值为(5)。

●阅读程序题(共13分)

6.【程序】(3分)

#include

#include

intisvowel(charc)

{return(c==’a’||c==’e’||c==’i’||c==’o’||c==’u’);}

voidpluralize(char*s)

{intlen=strlen(s);

char*p=s+len-1;

char*q=s+len-2;

if(*p==’h’&&(*q==’c’||*q==’s’))strcat(p,“es”);

elseif(*p==’s’)strcat(p,“es”);

elseif(*p==’y’)

if(isvowel(*q))strcat(p,“s”);

elsestrcpy(p,“ies”);

elseif(*p==’z’)

if(isvowel(*q))strcat(p,“zes”);

elsestrcat(p,“es”);

elsestrcat(p,“s”);

}

voidmain(void)

{

charword[6][20]={“wish”,“bus”,“toy”,“navy”,“quiz”,“computer”};

for(inti=0;i<6;i++){

pluralize(word[i]);cout<

if((i+1)%2==0)cout<<’\n’;

}

}

程序输出的第一行是(6),第二行是(7),第三行是(8)。

7.【程序】(3分)

#include

voidf(intj)

{if(!

j){cout<

if(j%2){f(j/10);cout<

else{cout<

}

voidmain(void)

{f(0);cout<<’\n’;

f(1357);cout<<’\n’;

f(2468);cout<<’\n’;

}

程序输出的第一行是(9),第二行是(10),第三行是(11)。

8.【程序】(3分)

#include

intx=2,y=x+30;

classA{

inty;

staticintx;

public:

operatorint()

{returnx+y;}

Aoperator++(int)

{returnA(x++,y++);}

A(intx=2,inty=3)

{A:

:

x=:

:

x+x;A:

:

y=:

:

y+y;}

voidprint()

{cout<<”x=”<

};

intA:

:

x=23;

voidmain(void)

{Aa(54,3),b(65),c;

a.print();

inti=a+b;cout<<”i=”<

c++;c.print();

}

程序输出的第一行是(12),第二行是(13),第三行是(14)。

9.【程序】(2分)

#include

char*f(char*s,charch)

{char*p=s,*q=s;

while(*q=*p++)if(*q!

=ch)q++;

returns;

}

voidmain(void)

{chars1[]=”HelloHowareyou”,s2[]=”110010111”;

cout<

}

程序输出的第一行是(15),第二行是(16)。

10.【程序】(2分)

#include

classA{

intx,y;

public:

A(inti,intj){x=i;y=j;}

operator++(int)

{cout<<++x<<‘’<<++y<<‘’<<”重载1”<<’\n’;}

friendAopertor++(A);

};

Aopertor++(Aop)

{cout<<++op.x<<‘’<<++op.y<<‘’<<”重载2”<<’\n’;}

voidmain(void)

{Aa(1,2);++a;a++;}

程序输出的第一行是(17),第二行是(18)。

●完善程序题(共12分)

11.下面程序的功能是:

先输入一行字符串,并从输入的字符串中找到最小的字符(其ASCII值最小),用min保存该字符。

然后将该字符前的所有字符顺序往后移动一个字符位置。

最后,将保存的字符放在该字符串的第0个位置上。

例如,设输入的字符串为“bcdfae”,其中字母a为最小字符,经移动处理后,输出的字符串为“abcdfe”。

【程序】(4分)

#include

voidfun(char*str)

{charmin,*q,*p;

(19);

min=*p++;

while(*p!

=’\0’){

if((20)){min=*p;q=p;}

p++;

}

p=q;

while((21)){*p=*(p-1);(22);}

*p=min;

}

voidmain(void)

{charstr[80];

cin.getline(str,80);

fun(str);cout<

}

12.用程序模拟两个大整数(为简化程序,设整数为正数)的加法运算。

假定一个整数最多N位,用一个一维数组存放其各位数字。

在数组下标为0的元素中存放该整数的个位数字,在下标为1的元素中存放该整数的十位数字,依此类推。

例如,大整数a的值为88099005798957,大整数b的值为776988213577,则两个整数相加的结果为88875994012534。

以下是程序输出的结果:

Integera:

88099005798957

Integerb:

776988213577

Sum:

88875994012534

【程序】(4分)

#include

#defineN20//整数的位数

voidadd(intsum[],inta[],intb[]);//sum=a+b

voidwrt((23));

voidmain(void)

{inta[N]={7,5,9,8,9,7,5,0,0,9,9,0,8,8};

intb[N]={7,7,5,3,1,2,8,8,9,6,7,7};

intsum[N];

add(sum,a,b);

wrt(“Intrgera:

”,a);wrt(“Intrgerb:

”,b);wrt(“Sum:

”,sum);

}

voidadd(intsum[],inta[],intb[])

{intcarry=0,i;//carry表示进位

for(i=0;i

sum[i]=(24);

if(sum[i]<10)carry=0;

else{carry=sum[i]/10;sum[i]=(25);}

}

}

voidwrt(constchar*s,inta[])

{inti;

cout<

for((26);i>0&&a[i]==0;--i)//输出前导空格

cout<<(‘‘);//输出一个空格

for(;i>=0;--i)cout<

cout<<’\n’;

}

13.下面程序先建立一条单向链表,其中每个结点包含产品名称和产品类别。

然后对链表中的结点按产品类别进行分类,将同类别产品的结点放在一起。

具体实现过程为:

依次从已建立的链表上取下一个结点,根据该结点的产品类别值插入到新的链表中。

插入过程为:

若新链表上已有该产品类别的结点,则将结点插入到同类别结点的最后一个结点的后面;否则,将该结点插入到新链表的最后一个结点的后面。

最后,输出分类后链表上各个结点的信息。

【程序】(4分)

#include

#include

structnode{

charproduct[20];//产品名称

charcategory[10];//产品类别

node*next;

};

node*create(void)//创建链表

{nodetemp,*p2=&temp;

charproduct[20],category[10];

while

(1){

cout<<”输入产品名称和类别,当输入产品名称为end时表示结束:

”;

cin>>product>>category;

if(strcmp(product,“end”)==0)break;

p2->next=newnode;

p2=p2->next;

strcpy(p2->product,product);

strcpy(p2->category,category);

}

(27);

returntemp.next;

}

voidprint(node*h)//输出链表h

{while(h){

cout<product<<’\t’<category<

h=h->next;

}

cout<

}

voiddeletechain(node*h)//删除链表h

{node*p;

while((28)){h=h->next;deletep;}

}

node*insertascategory(node*h,node*p)//按类别插入结点

{node*p2=0,*p1=h;

if(h==0){p->next=0;returnp;}

while(p1&&strcmp(p1->category,p->category)){

p2=p1;p1=p1->next;

}//找同类结点

while(p1&&strcmp(p1->category,p->category)==0){

p2=p1;p1=p1->next;

}//定位在同类结点后

p->next=p1;(29);//插入在p1、p2结点之间

returnh;

}

node*classify(node*h)//按类别分类

{node*h2=0,*p;

while(h){

p=h;(30);

h2=insertascategory(h2,p);

}

returnh2;

}

voidmain(void)

{node*h;

h=create();print(h);

h=classify(h);print(h);

deletechain(h);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1