C(I)练习题题库及答案_第1页
C(I)练习题题库及答案_第2页
C(I)练习题题库及答案_第3页
C(I)练习题题库及答案_第4页
C(I)练习题题库及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《高级语言程序设计(C++。》题库

一.单项选择题(每小题2分,共20分)

1.下列字符列中,合法的浮点型常量是:

(A)457(B)6e5.3(C)e7(D)123e6

2.字符串常量”w\x42\\\nx\103y”的长度是:

(A)7(B)11(C)15(D)16

3.以下运算符中,自右向左结合的运算符是:

(A)[](B)<=(C)*=(D)«

4.表达式4/8*100/2.0的值是:

(A)25(B)25.0(C)0(D)0.0

5.设变量inta=5;下列哪个表达式计算后,使得变量b的值不为2?

(A)b=a/2(B)b=6-(—a)(C)b=a%2(D)b=a<3?3:2

6.设a是整型变量,不能表达数学关系式的C++表达式是:

(A)a>ll&&a<15(B)a—12||a==13||a—14

(C)!(a<=ll)&&!(a>=15)(D)ll<a<=14

7.下列C++代码中,不能正确对字符串si置串值的代码是:

(A)char*sl;cin>>sl;(B)char*sl,*s2="name";si=s2;

(C)charsi[5]="name";(D)charsi[5]={MnameM};

8.一个具有6个整型指针元素的一维数组的正确定义是:

(A)int**p⑹(B)int*(p)[6]

(C)int*p[6](D)*(*(p)[6])

9.执行语句x=l;while(x++<7)cout«,**;后输出结果是:

(A)**(B)****(C)******(D)*******

10.若用一维数组名作为调用函数时的实参,则传递给形参的是:

(A)数组首元素的地址(B)数组首元素的值

(0数组元素的个数(D)数组中全部元素的值

二.简答题(每小题2分,共20分)

1.设整型变量x为任何一个整数,表达式-2<x<2的值是?

2.调用函数时,希望从提供的实参变量中得到函数的结果,则对应的形

参应该是?

3.设有变量定义char*s□={"Beijing","Shanghai","Guangzhou”};执行

语句cout«*(s+l)+l;输出是?

4.表述“变量x的值等于3”和“变量y的值等于5”其中有且只有一种

情况成立的表达式是?

5.设有变量定义inta[4][3],*p=a[2];表达式p+2指向的元素是?

6.将字符串str2拷贝到字符数组strl口中,应调用函数?

7.说明语句char*w();的含义是?

8.表达式newint[10]的含义是?

9.设有函数调用语句Count(a,num,max,min,average);功能是由参max,

min,average返回整型数组a前num个元素中的最大值,最小值和平均

值。对应的函数原型是?

10.有说明structlink{intcode;link*ncxt;};link*head,*p;

已知head为单链表的头结点,在*head之后插入*p结点操作的语句是?

三.分析程序,写输出结果(每小题5分,共20分)

1.#include<iostream.h>

voidmain()

{inta[10]={2,4,0,-5,10,6,-8,9,6,7);

inti,s=0,count=0;

for(i=0;i<10;i++)

if(a[i]>0)s+=a[i],count++;

elsecontinue;

cout<<〃s="〈〈s<<〃count=,,<<count«endl;

)

2.#include<iostream.h>

voidfun();

voidmainO

{inti;

for(i=l;i<5;i++)

fun();

cout«endl;

}

voidfun()

{staticinta;

intb=2;

cout<<(a+=3,a+b)<〈'\t';

}

3.#include<iostream.h>

intlcm(intm,intn)

{intr,a,b;

a=m;b=n;r=m;

do{

m=n;n=r;r=m%n;

}while(r);

returna*b/n;

)

voidmain()

{cout«lcm(3,7)<<*\t*«lcm(4,6)«endl;}

4.ttinclude<iostream.h>

voidprintN(intn)

{if(n)

{printN(n-l);

cout<<n<<ends;

)

)

voidprint(intw)

(if(w)

(print(w-l);

printN(w);

cout<<endl;

)

)

voidmainO

{print(5);)

四.根据程序功能填空。(每空2分,共20分)

1.本程序按以下公式计算e的值,精度为他-6。

#include<iostream.h>

voidmain()

{doublee,t,n;

e=0;

t=n=(1);

while((2))

{e+=t;

(3)____;

n=n+l.0;

}

cout«,ze="z«e«endl;

)

2.本程序由主函数输入一字符串,调用函数,把该字符串中的数字0〜9

转换成小写字母a〜j;所有小写字母转换成大写字符。然后在主函数输

五.程序设计(第1小题6分,第2、3小题各7分,共20分)

1.编写函数输出以下形状的图形,其中构成图形的符号和输出的行数通

过参数传送。

#

##

#

#########

2.编写一个程序,实现如下功能:

(1)输入k«100)个整数到数组x[100]中;

(2)计算k个数的平均值及大于平均值的元素个数。

3.编写一个程序,实现如下功能:

(1)从键盘输入aopbo其中a,b为数值;op为字符,限制为+、

-、*、/。

(2)调用函数count(op,a,b),计算表式aopb的值。山主函数

输出结果。

《高级语言程序设计(C++I)》练习题参考答案

一.单项选择题(每小题2分,共20分)

1.下列字符列中,合法的浮点型常量是:

(A)457(B)6e5.3(C)e7(D)

123e6

2.字符串常量Hw\x42\\\nx\103y"的长度是:

(A)7(B)11(C)15(D)16

3.以下运算符中,自右向左结合的运算符是:

(A)[](B)<=(C)*=(D)«

4.表达式4/8*100/。。的值是:

(A)25(B)25.0(C)0(D)0.0

5.设变量inta=5;下列哪个表达式计算后,使得变量b的值不为2?

(A)b=a/2(B)b=6-(—a)(C)b=a%2(D)

b=a<3?3:2

6.设a是整型变量,不能表达数学关系式的C++表达式是:

(A)a>11&&a<15(B)a—12||a==13||a—14

(C)!(a<=ll)&&!(a>=15)(D)U<a<=14

对C++表达式ll<a<15的计算:

①ll<af0或1

②0<15>1或1<15»1

原因:C++的逻辑判断结果为整型值

7.下列C++代码中,不能正确对字符串si置串值的代码是:

(A)char*sl=newchar[20];cin>>sl;

(B)charsl=nnamen;//si是字符变量,不能赋给串值

(C)charsi[5]-name";(D)charsi[]={"name"};

8.一个具有6个整型指针元素的一维数组的正确定义是:

(A)int**p[6](B)int(*p)[6]

(C)int*p[6](D)*(*(p)[6])

试比较以下几种说明形式:

int*p;//p是指向整型变量的指针(p是关联类型为

整型的指针)

int*pa[10];//pa是数组,元素类型是整型指针

int(*pb)[10];//Pb是指针,指向(关联类型)长度为10

的整型数组

int*f();//f是返回整型指针的函数名

int(*f)();//f是指针,指向(关联类型)是返回整型

值的无参函数

例:有声明

int(*f)(intint);intmax(int,int);intmin(int,

int);

则:f=max;f(a,b);〃等价于(*f)(a,b);

max(a,b);

f=min;f(a,b);〃等价于(*f)(a,b);

min(a,b);

9.执行语句x=l;while(x++<7)cout«,**;后输出结果是:

(A)**(B)****(C)******(D)*******

(x++<7)①x<7②x=x+l

10.若用一维数组名作为调用函数时的实参,则传递给形参的是:

(A)数组首元素的地址(B)数组首元素的值

(C)数组元素的个数(D)数组中全部元素的值

二.简答题(每小题2分,共20分)

1.设整型变量x为任何一个整数,表达式-2<x<2的值是?1

2.调用函数时,希望从提供的实参变量中得到函数的结果,则对应的形

参应该是?

指针或引用类型参数

注意使用方法:

函数定义调用

voidfunl(intxl);intal;funl(al);//传数

据值参数

voidfun2(int*x2);inta2;fun2(&a2);〃指针

参数,传地址值

voidfun3(int&x3);inta3;fun3(a3);//引用

参数,传名

以上参数用于操作数据对象

voidfun4(int*&x4);int*a4;fun3(a4);//指针

引用参数,传名

以上参数用于操作指针对象

3.设有变量定义char*s□={"Beijing","Shanghai","Guangzhou”};执行

语句cout〈〈*(s+l)+l;输出是?hanghai

s是字符指针数组

s+1==&s[l]〃S是二级指针

*(s+l)==&s[l][0]

*(s+l)+l=&s[l][1]//一级指针

输出字符指针是输出所指串值

4.表述“变量x的值等于3”和“变量y的值等于5”其中有且只有一种

情况成立的表达式是?x==3&&y!=5||x!=3&&y=5或

(x==3)!=(y==5)

5.设有变量定义inta[4][3],*p=a[2];表达式p+2指向的元素是?

a⑵[2]

a[0][0]a[0][l]a[0][2]

a[l][0]a[l][2]

a[2][0]a[2][l]a⑵⑵<p+2

a[3][0]a[3][l]a[3][2]

6.将字符串str2拷贝到字符数组strl口中,应调用函数?

strcpy(strl,str2)

7.说明语句char*w();的含义是?函数原型。w是函数名,返回字

符型指针

8.表达式newint[10]的含义是?分配长度为10的整型数组堆内存,

返回首地址

分配堆要用指针记录地址

int*p=newint[10],*q;

*p=10;p[l]=20;〃对动态数组的两种访问方式

*q=10;q[0]=12:〃错误,指针没有关联对象

9.设有函数调用语句Count(a,num,max,min,average);功能是由参数

max,min,average返回整型数组a前num个元素中的最大值,最小值和

平均值。对应的函数原型是?

voidCount(int[],int,int&,int&,double&);

若调用语句为Count(a,num,&max,&min,&average);

则函数原型为voidCount(int[],int,int*,int*,double*);

10.有说明structlink{intcode;link*next;};link*head,*p;

己知head为单链表的头结点,在*head之后插入*p结点操作的语句是?

p->next=head->next;head->next=p;//p->next

(*p).next

思考:

(1)结点插在表头如何操作?p->next=head;head=p;

(2)结点插在表尾如何操作?

q=head;while(q->next)q=q->next;q->next=p;p->next=NULL;

(3)遍历链表,输出结点值:

q=head;while(q->next){cout<<q->code;q=q->next;}

(4)删除一个结点*(q->next)如何操作?

t=q->next;q->next=t->next;deletet;

三.分析程序,写输出结果(每小题5分,共20分)

1.求>0的元素和;>0的元素个数。

#include<iostream.h>

voidmain()

{inta[10]:{2,4,0,-5,10,6,-8,9,6,7};

inti,s=0,count=0;

for(i=0;i<10;i++)

if(a[i]>0)s+=a[i],count++;

elsecontinue;

cout«〃s=〃<<sVcount=,z«count<<endl;

}

s=44count=7

2.测试静态变量和自动变量。静态变量第一次自动初始化为0,再调用

时不改变。

nc1udc<iostrcam.h>

voidfun();

voidmain。

{inti;

for(i=l;i<5;i++)funO;

②32

cout<<endl;

)68

voidfun()③62

{staticinta;intb=2;911

cout<<(a+=3,a+b)«'\t';@92

}5811141214

3.求最小公倍数

#include<iostream.h>

intlcm(intin,intn)

{intr,a,b;

a=m;b=n;r=m;

do〃辗转相除法,求最大公约数

{m=n;n=r;r=m%n;

}while(r);

returna*b/n;〃求最小公倍数

}

voidmain()

{cout«lcin(3,7)«,\t5«lcm(4,6)«endl;

)

2112

4.输出数字三角型,以递归方式建立程序。

#include<iostream.h>

voidprintN(intn)

{if(n)

{printN(n-1);

cout<<n«ends;

)

)

voidprint(intw)

{if(w)

Iprint(w-1);

printN(w);

cout<<endl;

)

)

voidmain()

{print(5);}

1

12

123

1234

12345

四.根据程序功能填空。(每空2分,共20分)

1.本程序按以下公式计算e的值,精度为他-6。

111

C=1t+---1-----b…-I----+…

1!2!加

#include<iostream.h>

voidinain()

{doublee,t,n;

e=0;

t=n=(1);1.0

while((2))t>=le-6

{e+=t;

(3)____;t=t/n

n=n+l.0;

)

cout<<,,e=,,«e<<endl;

)

2.本程序由主函数输入一字符串,调用函数,把该字符串中的数字0〜9

转换成小写字母a〜j;所有小写字母转换成大写字符。然后在主函数输

出转换后的字符串。

#include<iostream.h>

#include<ctype.h>

(4)voidchange(char*,char*);

voidmain()

{charstrl[20],str2[20];

cin>>strl;

change(strl,str2);

cout<<str2<<endl;

)

voidchange(char*sl,char*s2)

{whi1e(____(5)_____)*sl

{if(*sl>=,O'&&*sl<=,9')

*s2=____(6)_____;*sl+*atO'

else*s2=toupper(*sl);

(7)____sl++;s2++;

)

*s2八O';

3.函数create从键盘输入整数序列,以输入0为结束。按输入逆序建立

一个以head为表头的单向链表。例如,输入序列为123450,建立

的链表是5432lo

structnode{intdata;node*next;);

voidcreate(node*&head)

{node*p;

(8)____;p=newnode

cin»p->data;

while(p->data!=0)

{if(head==NULL)

{head=p;head->next=NULL;}

else

{(9)____p->next=head;

_(10)____head=p;

)

p=newnode;

cin>>p->data;

}

)

五.程序设计(第1小题6分,第2、3小题各7分,共20分)

4.编写函数输出以下形状的图形,其中构成图形的符号和输出的行数通

过参数传送。

#

##

##

#########

答案:

#include<iostrean.h>

#include<iomanip.h>

voidprint_figurc(introw,chartag)〃行参数和符号参数

{inti;

cout<<setw(row-1)<</,/z<<tag<<endl;〃输出第1行

for(i=2;i<row;i++)〃输出第2行到row-1行

cout«setw(row-i)«,z,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论