C语言程序设计自检自测题及解答一Word下载.docx
《C语言程序设计自检自测题及解答一Word下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计自检自测题及解答一Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
18<
='
43-18<
endl;
"
语句后得到的输出结果为________。
2.2.
已知'
A'
~'
Z'
的ASCII码为65~90,当执行"
charch=14*5+2;
ch<
语句序列后,得到的输出结果为________。
3.3.
使用const语句定义一个标识符常量时,则必须对它同时进行__________。
4.4.
表达式x=x+1表示成增1表达式为__________。
5.5.
若x=5,y=10,则x>
y和x<
=y的逻辑值分别为________和________。
6.6.
typedefintABC[10];
语句把ABC定义为具有10个整型元素的________。
7.7.
假定p所指对象的值为25,p+1所指对象的值为46,则执行"
(*p)++;
语句后,p所指对象的值为________。
8.8.
假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为____________________。
9.9.
假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为____________。
10.10.设px是指向一个类动态对象的指针变量,则执行"
deletepx;
语句时,将自动调用该类的____________。
11.11.若需要把一个函数"
voidF();
定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:
________________。
12.12.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用____________头文件。
三、给出下列程序运行后的输出结果(每小题6分,共36分)
1、#include<
iostream.h>
voidmain(){
ints=0;
for(inti=1;
;
i++)
{
if(s>
50)break;
if(i%2==0)s+=i;
}
i,s="
i<
"
s<
2、#include<
chara[]="
abcdabcabfgacd"
inti1=0,i2=0,i=0;
while(a[i])
if(a[i]=='
a'
)i1++;
b'
)i2++;
i++;
i1<
'
i2<
3.#include<
iomanip.h>
voidmain(){
inta[9]={2,4,6,8,10,12,14,16,18};
for(inti=0;
9;
i++)
setw(5)<
*(a+i);
if((i+1)%3==0)cout<
4.#include<
voidLE(int*a,int*b){
intx=*a;
*a=*b;
*b=x;
*a<
*b<
voidmain()
intx=10,y=25;
LE(&
x,&
y);
cout<
x<
y<
5.#include<
classA{
inta,b;
public:
A(){a=b=0;
A(intaa,intbb)
a=aa;
b=bb;
a<
b<
};
Ax,y(2,3),z(4,5);
6.#include<
template<
classTT>
classFF{
TTa1,a2,a3;
FF(TTb1,TTb2,TTb3)
a1=b1;
a2=b2;
a3=b3;
TTSum(){returna1+a2+a3;
FF<
int>
x(2,3,4),y(5,7,9);
x.Sum()<
y.Sum()<
四、写出下列每个函数的功能(每小题6分,共24分)
1、doubleSF(doublex,intn)//n为大于等于0的整数
doublep=1,s=1;
=n;
p*=x;
s+=p/(i+1);
returns;
2.floatFH(){
floatx,y=0,n=0;
cin>
>
x;
while(x!
=-1)
n++;
y+=x;
if(n==0)returny;
elsereturny/n;
voidWA(inta[],intn){
n-1;
intk=i;
for(intj=i+1;
j<
n;
j++)
if(a[j]<
a[k])k=j;
intx=a[i];
a[i]=a[k];
a[k]=x;
4.#include<
#include<
fstream.h>
voidJB(char*fname)
//可把以fname所指字符串作为文件标识符的文件称为fname文件,
//假定该文件中保存着一批字符串,每个字符串的长度均小于20。
ifstreamfin(fname);
chara[20];
inti=0;
while(fin>
a)
fin.close();
i="
五、编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数并返回它。
(10分)
intCount(doublea[],intn);
//此为该函数的声明
参考解答:
评分标准:
选对者得1分,否则不得分。
1.B2.C3.D4.C5.A6.D
每题与参考答案相同者得2分,否则酌情给分。
1.43-18=25
2.H
3.初始化
4.++x
5.false或0true或1
6.数组类型
7.26
8.a+(i*N)*sizeof(a[0][0])或a+i*sizeof(a[i])
9.*(p->
b)或*((*p).b)
10.析构函数
11.friendvoidF();
12.iostream.h或iomanip.h
每题与参考答案的数据和显示格式完全相同者得6分,否则酌情给分。
1.i,s=15,562.433.246
81012
141618
4.25105.236.921
251045
每题与参考答案的叙述含义相同者得6分,否则酌情给分。
1.计算的值并返回。
2.求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志。
3.采用选择排序的方法对数组a中的n个整数按照从小到大的次序重新排列。
4.从文件fname中依次读取每个字符串并输出到屏幕上显示出来,
同时统计并显示出文件中的字符串个数。
评分标准见参考程序中的注释。
intCount(doublea[],intn){
doublem=0;
inti;
for(i=0;
i++)m+=a[i];
//计算出所有元素之和得3分
m=m/n;
//计算出平均值得1分
intc=0;
if(a[i]>
=m)c++;
//按条件统计出元素个数得4分
returnc;
//返回统计结果得2分
《C++语言程序设计》自检自测题及解答
(二)
一、填空(每空2分,共20分)
1.C++目标程序经___________后生成扩展名为exe的可执行程序文件。
2.16位计算机中整型占__________个字节存储空间。
3.要在屏幕上显示"
Hello,world!
应执行语句cout<
_______________________________。
4.表达式8&
3的结果是__________。
5.作为语句的函数调用是通过__________________________来体现的。
6.执行if(x>
=0||x<
=0)cout<
abcd"
;
elsecout<
wxyz"
屏幕上显示的是_______________。
7.设一维整型数组data已进行了初始化,则其元素个数可由操作符sizeof通过表达式__________________________计算出来。
8.若一全局变量只允许本程序文件中的函数使用,则定义它时应加上修饰符_______________。
9.设有intw[3][4];
,pw是与数组名w等价的数组指针,则pw应初始化为__________________________。
10.要使引用pr代表变量char*p;
,则pr应初始化为__________________。
二、单项选择题(每空2分,共20分)
1.下列变量名中,()是合法的。
ACHINABbyte-sizeCdoubleDA+a
2.下列各种函数中,()不是类的成员函数。
A构造函数B析构函数C友元函数D拷贝构造函数
3.下列()是正确的语句。
A;
Ba=17Cx+yDcout<
\n"
4.循环while(inti=0)i--;
执行次数是()。
A0B1C5D无限
5.设intf(int);
和intg(int);
是函数f和g的原形,以下将f作为语句调用的是()。
Ag(f(3));
Bf(g(3));
Cg(f(3)+2);
Dp=f(g(3)+1);
6.设int*p2=&
x,*p1=a;
p2=*b;
则a和b的类型分别是()。
Aint*和intBint*和int**
Cint和int*Dint*和int*
7.设intx;
,则经过()后,语句*px=0;
可将x值置为0。
Aint*px;
Bintconst*px=&
x;
Cint*constpx=&
Dconstint*px=&
8.设voidf1(int*m,long&
n);
inta;
longb;
则以下调用合法的是()。
Af1(a,b);
Bf1(&
a,b);
Cf1(a,&
b);
Df1(&
a,&
9.以下结构类型可用来构造链表的是()。
Astructaa{inta;
int*b;
};
Bstructbb{inta;
bb*b;
Cstructcc{int*a;
ccb;
Dstructdd{int*a;
aab;
10.使用操作符setw对数据进行格式输出时,需要包含()文件。
Aiostream.hBfstream.hCiomanip.hDstdlib.h
三、回答问题(每题4分,共20分)
1.设int*p;
,判断下列表达式的正确性(用T表正确,用F表错误)。
--++p()++(p--)()p----()(++p)--()
2.请初始化一维指针数组color,其初值表初值为"
red"
,"
blue"
white"
和"
black"
。
3.设intx[]={99,98,97},&
y=x[1];
,
写出语句cout<
y--<
'
y*2<
endl;
执行结果。
4.设intfp(chara,intb=0,doublec=100.0);
,判断下列重载函数的正确性。
(用T表正确,用F表错误)。
intfp();
()voidfp(char);
()
intfp(char,int);
()voidfp(char,int,int);
5.要使语句p1=newlong*;
p2=newfloat*[15];
能正常执行,写出p1和p2的定义。
四、(每题10分,共20分)
1.写出下列程序的执行结果。
#include<
voidfun(int,int,int*);
voidmain(){
intx,y,z;
fun(2,3,&
x);
fun(4,x,&
y);
fun(x,y,&
z);
z<
}
voidfun(inta,intb,int*c){b*=a;
*c=b-a;
2.下列程序向a盘上的文本文件aaa.dat输出0至100间的整数,请将程序补充完全。
stdlib.h>
#include________________
voidmain(void){
ofstreamf1(_________________);
if(___________){
cerr<
a:
aaa.datopen!
exit
(1);
for(inti=0;
=100;
i++)___________<
f1._______________;
五、(每题10分,共20分)
1.编程求数列1,
,……的所有大于等于0.000001的数据项之和并输出结果。
2.用递归方法设计函数intArrayMin(intd[],intsize);
,其中d为数组,size为数组元素个数;
ArrayMin返回d中的最小元素。
1.连接
2.2
3."
\"
4.0
5.函数的副作用
6.abcd
7.sizeof(data/data[0])
8.static
9.int(*pw)[4]=w;
10.char*&
pr=p;
1.A2.C3.A4.A5.B
6.B7.C8.B9.B10.C
1.--++p(T)++(p--)(F)p----(F)(++p)--(T)
2.char*color[]={"
3.98,194
4.intfp();
(T)voidfp(char);
(F)
intfp(char,int);
(F)voidfp(char,int,int);
(T)
5.long**p1;
float**p2;
1.4,12,44
2.<
"
aaa.dat"
!
f1(或f1.fail())f1close()
1、#include<
voidmain(){
intn=1,d=1;
doubles=0.0,s0;
while((s0=double(n)/d)>
=0.000001)
{
s+=s0;
d++;
2.intArrayMin(intd[],intsize){
intk=d[size-1];
if(size==1)returnk;
if(k<
=ArrayMin(d,size-1))returnk;
elsereturnArrayMin(d,size-1);