江苏省秋计算机二级考试VC++试题Word文档格式.docx
- 文档编号:21789668
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:10
- 大小:18.78KB
江苏省秋计算机二级考试VC++试题Word文档格式.docx
《江苏省秋计算机二级考试VC++试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《江苏省秋计算机二级考试VC++试题Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
D.派生类只能继承基类中的非私有成员
27.设有说明语句:
inti=2,*p=&
i;
chars[20]=”Hello”,*q=s;
以下选项中存在语法错误的是(27)。
A.cin>
>
p;
B.cout<
<
C.cin>
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<
iostream.h>
string.h>
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<
word[i]<
’\t’;
if((i+1)%2==0)cout<
’\n’;
程序输出的第一行是(6),第二行是(7),第三行是(8)。
7.【程序】
voidf(intj)
{if(!
j){cout<
j;
return;
if(j%2){f(j/10);
j%10;
else{cout<
f(j/10);
{f(0);
’\n’;
f(1357);
f(2468);
程序输出的第一行是(9),第二行是(10),第三行是(11)。
8.【程序】
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=”<
x<
”,\t”<
”y=”<
y<
endl;
};
intA:
x=23;
{Aa(54,3),b(65),c;
a.print();
inti=a+b;
”i=”<
i<
endl;
c++;
c.print();
程序输出的第一行是(12),第二行是(13),第三行是(14)。
9.【程序】
(2分)
char*f(char*s,charch)
{char*p=s,*q=s;
while(*q=*p++)if(*q!
=ch)q++;
returns;
{chars1[]=”HelloHowareyou”,s2[]=”110010111”;
f(s1,’e’)<
f(s2,‘0’)<
程序输出的第一行是(15),第二行是(16)。
10.【程序】
intx,y;
A(inti,intj){x=i;
y=j;
operator++(int)
++x<
‘’<
++y<
”重载1”<
friendAopertor++(A);
Aopertor++(Aop)
{cout<
++op.x<
++op.y<
”重载2”<
voidmain(void)
{Aa(1,2);
++a;
a++;
程序输出的第一行是(17),第二行是(18)。
●完善程序题(共12分)
11.下面程序的功能是:
先输入一行字符串,并从输入的字符串中找到最小的字符(其ASCII值最小),用min保存该字符。
然后将该字符前的所有字符顺序往后移动一个字符位置。
最后,将保存的字符放在该字符串的第0个位置上。
例如,设输入的字符串为“bcdfae”,其中字母a为最小字符,经移动处理后,输出的字符串为“abcdfe”。
【程序】
(4分)
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;
{charstr[80];
cin.getline(str,80);
fun(str);
str<
12.用程序模拟两个大整数(为简化程序,设整数为正数)的加法运算。
假定一个整数最多N位,用一个一维数组存放其各位数字。
在数组下标为0的元素中存放该整数的个位数字,在下标为1的元素中存放该整数的十位数字,依此类推。
例如,大整数a的值为88099005798957,大整数b的值为776988213577,则两个整数相加的结果为88875994012534。
以下是程序输出的结果:
Integera:
88099005798957
Integerb:
776988213577
Sum:
88875994012534
#defineN20//整数的位数
voidadd(intsum[],inta[],intb[]);
//sum=a+b
voidwrt((23));
{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;
N;
++i){
sum[i]=(24);
if(sum[i]<
10)carry=0;
else{carry=sum[i]/10;
sum[i]=(25);
voidwrt(constchar*s,inta[])
{inti;
cout<
s;
for((26);
i>
0&
a[i]==0;
--i)//输出前导空格
(‘‘);
//输出一个空格
for(;
=0;
--i)cout<
a[i];
’\n’;
13.下面程序先建立一条单向链表,其中每个结点包含产品名称和产品类别。
然后对链表中的结点按产品类别进行分类,将同类别产品的结点放在一起。
具体实现过程为:
依次从已建立的链表上取下一个结点,根据该结点的产品类别值插入到新的链表中。
插入过程为:
若新链表上已有该产品类别的结点,则将结点插入到同类别结点的最后一个结点的后面;
否则,将该结点插入到新链表的最后一个结点的后面。
最后,输出分类后链表上各个结点的信息。
structnode{
charproduct[20];
//产品名称
charcategory[10];
//产品类别
node*next;
node*create(void)//创建链表
{nodetemp,*p2=&
temp;
charproduct[20],category[10];
while
(1){
”输入产品名称和类别,当输入产品名称为end时表示结束:
”;
cin>
product>
category;
if(strcmp(product,“end”)==0)break;
p2->
next=newnode;
p2=p2->
next;
strcpy(p2->
product,product);
category,category);
(27);
returntemp.next;
voidprint(node*h)//输出链表h
{while(h){
h->
product<
’\t’<
category<
h=h->
voiddeletechain(node*h)//删除链表h
{node*p;
while((28)){h=h->
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->
}//找同类结点
category)==0){
}//定位在同类结点后
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;
{node*h;
h=create();
print(h);
h=classify(h);
deletechain(h);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 计算机 二级 考试 VC 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)