cout<<*ptr<<'\n';
}
答案:
1).A
2).B
第8题(4.0分)
以下程序的功能将字符串中的内容按逆序输出,但不改变字符串内容.请完善程序.
voidfun(char*s)
{if(【1】)return;
fun(【2】);
cout<<*s;
}
voidmain()
{chars[]="good";
fun(s);
}
答案:
1).!
*s
2).s+1
二、单项选择共30题(共计30分)
第1题(1.0分)
若有语句组
for(intx,y=2;y<6;y++,y++)
{
x=2;
for(intj=y;j<6;j++)x+=j;
}
则x的值是____.
A:
25
B:
11
C:
不确定
D:
9
答案:
B
第2题(1.0分)
设有下列语句组
inta=0;
if(2*2==5<2*(a=4))a=1;
elsea=2;
a的值为____.
A:
0
B:
1
C:
2
D:
4
答案:
C
第3题(1.0分)
以下程序段
if(x--<10)cout<cout<<--x;
若x=10,则输出结果是____。
A:
8
B:
9
C:
10
D:
11
答案:
A
第4题(1.0分)
以下程序运行的结果是____.
#include
voidmain()
{
inti=3,j=-50;
do
{
j=j+i;
i--;
}
while(i>2);
cout<}
A:
-50
B:
-47
C:
-46
D:
-45
答案:
B
第5题(1.0分)
设有以下语句组:
intx=2,a=1;
while(x)a=a+1;
语句a=a+1执行的次数是____。
A:
0
B:
1
C:
无限次
D:
有限次
答案:
C
第6题(1.0分)
以下程序段
intx=2,y;
if(x<0)y=0;
elseif(x<4)y=5/x;
elsey=1;
cout<执行后,y=____。
A:
0
B:
1
C:
2
D:
2.5
答案:
C
第7题(1.0分)
下面保留字中不能作为函数的返回类型的是____.
A:
void
B:
int
C:
new
D:
long
答案:
C
第8题(1.0分)
以下描述正确的是____.
A:
函数中,return后面一定要有表达式
B:
函数中,不可以有多条return语句
C:
函数返回值一定要通过return语句返回
D:
return语句是函数中不可缺少的语句
答案:
C
第9题(1.0分)
若定义函数:
intf(intx){x++;returnx;}
执行以下语句:
inta=5;f(a)+f(a);
则a的值是____.
A:
5
B:
6
C:
7
D:
8
答案:
A
第10题(1.0分)
下列叙述中,不正确的是____.
A:
一个函数中可以有多个return语句
B:
函数可通过return语句返回数据
C:
必须用一个独立的语句来调用函数
D:
函数main也可以带有参数
答案:
C
第11题(1.0分)
设有宏定义和语句:
#defineP(x,y)x/y
#definePP(a,b)a*b
intc=P(2+3,2+3)+PP(2+3,2+3);
则变量c的值是_____.
A:
26
B:
17
C:
17.5
D:
31
答案:
B
第12题(1.0分)
若有定义intk=3;,以k+1作为参数,对下列宏定义进行宏展开,则最终结果不为7的是____.
A:
#defines(x)x*x
B:
#defines1(x)(x)*(x)
C:
#defines2(x)(x*x)
D:
#defines4(x)(x*(x))
答案:
B
第13题(1.0分)
若定义inta[2][3]={0*3},则下列叙述正确的是____.
A:
此语句有语法错误.
B:
只有a[0][0]有初值为0.
C:
每个元素的初值都为0.
D:
每个元素都有初值,但除a[0][0]外,其余元素的值不确定.
答案:
C
第14题(1.0分)
数组名为函数实参时,传递给函数的是____.
A:
数组首地址
B:
数组元素个数
C:
数组首元素的值
D:
数组所有元素
答案:
A
第15题(1.0分)
若a是n行m列的数组,则元素a[i][j]是数组的第____个元素.
A:
i*m+j
B:
i*m+j+1
C:
i*n+j
D:
i*n+j+1
答案:
B
第16题(1.0分)
下列程序的运行结果是____.
#include
#include
voidmain(void)
{chars[]="Rep\0ch";
intm=sizeof(s);
intn=strlen(s);
cout<}
A:
73
B:
63
C:
77
D:
67
答案:
A
第17题(1.0分)
若有以下说明,则数值为4的表达式是____.
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
A:
a[g-c]
B:
a[4]
C:
a['d'-'c']
D:
a['d'-c]
答案:
D
第18题(1.0分)
下列程序的运行结果是____.
chars1[]="hello";
chars2[]={'h','e','l','l','o'};
cout<A:
0
B:
正数
C:
负数
D:
无法比较
答案:
C
第19题(1.0分)
若有定义chars1[10]="abcd";则下列语句正确的是____.
A:
strcpy(s1,'a');
B:
strcpy("world",s1);
C:
strcpy(s1,"bigbigworld");
D:
strcpy(s1,"world");
答案:
D
第20题(1.0分)
若有下列定义
structstudent
{intnum;
charname[20];
}stud6;
A:
struct是定义结构体类型的关键字
B:
name、num是结构体成员名
C:
stud6为结构体类型名
D:
student为结构体类型名
答案:
C
第21题(1.0分)
下列结构体定义不正确的是____.
A:
structabc
{inta,b,c;}stru[10];
B:
structabc[10]
{inta,b,c;};
C:
structabc
{inta,b[10],c;}stru
D:
structabc
{inta,b,c;}stru;
答案:
B
第22题(1.0分)
若有定义
structstudent
{intnum;
charname[20];
}stu;
则下列语句正确的是____.
A:
student.num=1;
B:
stu.num=2;
C:
cout<D:
cint>>stu;
答案:
B
第23题(1.0分)
以下程序的输出结果为____.
#include
voidmain()
{structcmplx
{intx;inty;}cnum[2]={1,3,2,7};
cout<}
A:
0
B:
1
C:
3
D:
6
答案:
D
第24题(1.0分)
类型相同的两个指针不能进行的运算是____.
A:
+
B:
-
C:
=
D:
==
答案:
A
第25题(1.0分)
下面关于内存的动态分配说法错误的是____.
A:
new和delete是C++提供的运算符
B:
delete只能释放由new分配的内存空间
C:
由new分配一组连续内存空间,数量可以是常数,也可以是变量
D:
使用new和delete需要加入头文件"stdio.h"
答案:
D
第26题(1.0分)
有如下程序段
inta=1,*p=&a,b=1;
*p=*p+b;
执行该程度段后,a的值____.
A:
1
B:
2
C:
3
D:
编译出错
答案:
B
第27题(1.0分)
若有语句char*p[]="abcdd";则下列选项错误的是____.
A:
char&a=*p;
B:
char*q=p++;
C:
char*s=*p;
D:
p++;
答案:
C
第28题(1.0分)
若有"charp[]="A\0BC\0DEF\n";",则strlen(p+4)的值是.
A:
0
B:
1
C:
2
D:
4
答案:
A
第29题(1.0分)
若有定义chars[]="abcd";*p=s;则下列叙述正确的是____.
A:
数组s中的内容与p中的内容相等.
B:
数组s所占用内存数与p所占用的内存数相等
C:
*p与s[0]相等.
D:
数组s与p完全等同
答案:
C
第30题(1.0分)
若有"char*p="hello";"则以下选项中错误的是
A:
char&a=*p;
B:
char*s=*p;
C:
char*q=p+2;
D:
p=p+2
答案:
B
三、程序填空共3题(共计18分)
第1题(6.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
求FIBONACCI数列的前N项,公式如图。
-------------------------------------------------------*/
#include
voidmain()
{
intn,l1,l2,l3,i;
cin>>n;
/***********SPACE***********/
l1=【?
】;l2=1;
cout</***********SPACE***********/
for(i=3;【?
】)
/***********SPACE***********/
{l3=【?
】;
cout<l1=l2;
/***********SPACE***********/
【?
】;
}
}
答案:
1).0
2).i<=n;i++或i3).l1+l2或l2+l1
4).l2=l3
第2题(6.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
将一维数组大于等于平均值的元素存入另一个数组,
小于平均值的元素仍存在原数组,并打印这两个数组。
-------------------------------------------------------*/
#include
voidmain()
{
inti,la,lb,n;
floata[100],b[100],sum,av;
/***********SPACE***********/
【?
】;
for(i=0;icin>>a[i];
sum=0;
for(i=0;isum+=a[i];
/***********SPACE***********/
【?
】;
la=lb=0;
for(i=0;iif(a[i]>=av)
b[lb++]=a[i];
else
/***********SPACE***********/
{【?
】;
}
for(i=0;icout<cout<<'\n';
for(i=0;icout<
}
答案:
1).cin>>n
2).av=sum/n或av=sum/i
3).a[la++]=a[i]
第3题(6.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
以下程序通过调用自定义函数scopy()将字符串s1复制到
字符串s2,并输出显示。
-------------------------------------------------------*/
#include
voidscopy(char*p,char*q)
{
while(*p!
='\0')
{
/***********SPACE***********/
【?
】;
p++;
q++;
}
/***********SPACE***********/
【?
】;
}
voidmain()
{
char*s1="Nanjing,China";
chars2[20];
cout<<"\nThes1is:
"</***********SPACE***********/
【?
】;
cout<<"\nThes2is:
"<}
答案:
1).*q=*p
2).*q='\0'
3).scopy(s1,s2)
四、程序设计共2题(共计20分)
第1题(10.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
用筛选法求出2到200之间的所有的素数。
--------------------------------------------------
注意:
程序编写在下面的Promgram和End区域。
------------------------------------------------*/
/**********Program**********/
/**********End**********/
第2题(10.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
用指针作为函数的参数,设计一个实现两个参数
交换的函数。
输入三个实数,按升序排序后输出。
------------------------------------------------*/
/**********Program**********/
/**********End**********/
答案:
----------------------
#include
voidswap(int*p1,int*p2)
{intt;
t=*p1;*p1=*p2;*p2=t;}
voidmain()
{inta,b,c;
int*s1,*s2,*s3;
cout<<"输入三个数a,b,c:
";
cin>>a>>b>>c;
s1=&a;s2=&b;s3=&c;
if(a>b)swap(s1,s2);
if(a>c)swap(s1,s3);
if(b>c)swap(s2,s3);
cout<<"输出排好序的三个数:
";
cout<----------------------