C++程序设计习题与实验教程参考答案习题部分.docx

上传人:b****5 文档编号:8027565 上传时间:2023-01-28 格式:DOCX 页数:61 大小:36.59KB
下载 相关 举报
C++程序设计习题与实验教程参考答案习题部分.docx_第1页
第1页 / 共61页
C++程序设计习题与实验教程参考答案习题部分.docx_第2页
第2页 / 共61页
C++程序设计习题与实验教程参考答案习题部分.docx_第3页
第3页 / 共61页
C++程序设计习题与实验教程参考答案习题部分.docx_第4页
第4页 / 共61页
C++程序设计习题与实验教程参考答案习题部分.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

C++程序设计习题与实验教程参考答案习题部分.docx

《C++程序设计习题与实验教程参考答案习题部分.docx》由会员分享,可在线阅读,更多相关《C++程序设计习题与实验教程参考答案习题部分.docx(61页珍藏版)》请在冰豆网上搜索。

C++程序设计习题与实验教程参考答案习题部分.docx

C++程序设计习题与实验教程参考答案习题部分

第1章概述

一、选择题

题号

1

2

3

4

答案

B

B

B

A

二、填空题

1.主或main

2.#include或#include”iostream.h”

3.①编译②连接(构件)

4.{}

5.;

6.①.cpp②.obj③.exe

三、编程题

#include

voidmain()

{

cout<<"我的姓名是XX,"<<’\n’<<”我的学号为XXX”<

}

第2章数据类型与表达式

一、选择题

题号

1

2

3

4

5

6

7

8

9

答案

A

A

D

C

C

B

A

C

C

题号

10

11

12

13

14

15

16

17

18

答案

A

D

D

D

D

B

C

B

B

勘误:

3.其中“a=(m+n,m--n);”改为“a=(m+n,m-n);”

二、填空题

1.double

2.1.5

3.①fabs()②math.h

4.?

:

5.0

6.x>5&&!

(x%2)或x>5&&x%2!

=0

7.true或1

8.b%a==0&&c%a==0

9.(float)x或float(x)

10.5.4

11.①1②2

12.①4②5

勘误:

a和b的值分别为①、②。

13.①20②32③32④16⑤20

14.①A②B

15.①3②1

16.9.0

17.13

18.4

三、编程题

1.交换两个整数的位置

#include

voidmain()

{

intx,y,t;

cin>>x>>y;

cout<

t=x;x=y;y=t;

cout<<"交换后的两个数为:

"<

}

2.求三角形面积

#include

#include

voidmain(void)

{

inta,b,c;

doubles,area;

cout<<"输入三角形三边长a,b,c:

"<

cin>>a>>b>>c;

s=(a+b+c)/2.0;

area=sqrt(s*(s-a)*(s-b)*(s-c));

cout<<"三角形面积为:

"<

}

第3章流程控制语句

一、选择题

题号

1

2

3

4

5

6

7

8

9

10

答案

C

B

B

D

D

C

C

B

C

B

题号

11

12

13

14

15

16

17

18

19

20

答案

D

A

C

A

D

C

D

B

B

A

题号

21

22

23

24

25

26

27

28

29

30

答案

A

C

B

C

A

B

D

A

D

D

勘误:

3.A选项改为“if(x>3)if(y>5)z=6;elsez=7”

7.其中“合法的”改为“不合法的”

二、填空题

1.switch

2.字符型

3.4

4.①5②3③y=0

5.1,**

6.5,y=-8

7.2,3,y=5

8.3,0

9.4,0,B

10.1,2,3

11.5,0,D

12.0,5,50

13.①1②5

14.***

15.①@@###②###

16.0123401234

17.3571113

18.3

19.①y1*y2>0②x1=x,y1=3*x1*x1*x1-5*x1+13③x2=x

20.①n<999②b=n/10%10③(a+b+c)%5==0

勘误:

“各个数位的数字之和等于5的整数”改为“各位数字之和是5的倍数的整数”

21.①12②15

22.(100-cock-hen)%3==0)

勘误:

for(cock=0;cock<=20;cock++)

for(hen=0;hen<=33;hen++)

23.①n++②r>eps

24.①isprime=1②j>1

25.①intr=1②break

26.①x<=200②x%2==0

27.①c!

=''②c>='A'&&c<='Z'||c>='a'&&c<='z'③c=cin.get()

28.①s=0②t+=i

勘误:

“t=1”改为“t=0”

29.①s2=1②n③s1+=n%10

30.①9②min>s③n/=10

三、编程题

1.从大到小排列3个整数

#include

voidmain()

{

inta,b,c,d;

cin>>a>>b>>c;

if(a

if(a

if(b

cout<

}

2.100~300满足条件的数

#include

voidmain()

{

intk=0;

for(inti=101;i<300;i+=2)

if((i*i)%6==3){

cout<

k++;

if(k%5==0)cout<<'\n';

}

cout<<'\n';

}

3.逆序显示16进制数

#include

voidmain()

{

inta,k,n;

cin>>a;

k=a;

while(k){

n=k%16;

k/=16;

switch(n){

case10:

cout<<'A';break;

case11:

cout<<'B';break;

case12:

cout<<'C';break;

case13:

cout<<'D';break;

case14:

cout<<'E';break;

case15:

cout<<'F';break;

default:

cout<

}

}

cout<<'\n';

}

第4章数组

一、选择题

题号

1

2

3

4

5

6

7

8

9

10

11

答案

D

D

B

B

B

C

D

B

A

B

B

题号

12

13

14

15

16

17

18

19

20

21

22

答案

D

C

B

A

D

B

A

A

B

C

C

勘误:

15.其中“s3[20]=”abc””改为“s3[20]=”abc””(字符c后有一个空格)

二、填空题

1.①3②24

2.首地址

3.①i②i+j③i/7④i%7⑤i*7+j

4.①7②8③7④50

5.①字符(char)型②cin.getline(str,80);

6.123456

7.FMBS

勘误:

“for(inti=0;i<4;i++,p++)cout<<*p[i];”改为“for(inti=0;i<4;i++)cout<<*s[i];”

8.①a:

5d:

1e:

4f:

1g:

1

②i:

1l:

1m:

1o:

3r:

3

③s:

2u:

1y:

3

9.①Itis4:

30pm.②I③430

10.①<100:

3②<200:

2③<300:

5④<400:

2⑤<500:

3

11.D80

12.①500②800③900

13.①26②20

14.①s2+31②n③t%2+'0'④!

strcmp(s1,p2)

15.①num[i++]②s=0③flag=1④j<=k

16.①i=len2③b[k]=b[k-1]④++i%5==0

17.①pa>=a&&pb>=b②j+k+carry③ps++④p

18.①t[n++]②continue③t[k+1]=t[k]④n++

19.①*p1②*p1++③p1++,p2++④*p1='\0'

20.①n/10%10②i==j||j==k||i==k③i*i==n④(i+1)%5==0

21.①char*p3②*p1>='A'&&*p1<='Z'||*p1>='a'&&*p1<='z'

③p2++④char(*p4)[20]

22.①&a[i]②*p[k]<*p[j]③int*t④*p[i]

三、编程题

1.交换一维数组中的最大元素与最小元素的位置

#include

voidmain(void)

{

inta[6]={18,16,19,15,11,8};

inti,max,min,j,k,t;

cout<<"原数组为:

\n";

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

cout<

cout<

for(j=k=0,max=min=a[0],i=1;i<6;i++)

{

if(max

if(min>a[i])min=a[i],k=i;

}

t=a[j],a[j]=a[k],a[k]=t;

cout<<"交换后的数组为:

\n";

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

cout<

cout<

}

2.二维数组右移一列

#include

#defineROW3

#defineCOL4

voidmain(void)

{

inta[ROW][COL]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,t;

cout<<"移动前的数组为:

\n";

for(i=0;i

{

for(j=0;j

cout<

cout<<'\n';

}

for(i=0;i

{

t=a[i][COL-1];

for(j=COL-1;j>0;j--)

a[i][j]=a[i][j-1];

a[i][j]=t;//a[i][0]=t;

}

cout<<"移动后的数组为:

\n";

for(i=0;i

{

for(j=0;j

cout<

cout<<'\n';

}

}

3.统计字符串中种类字符的个数

#include

voidmain()

{

charstr[50],*p=str;

intcon=0,num=0,eng=0,oth=0;

cout<<"请输入一个字符串:

";

cin.getline(str,50);

while(*p)

{

if(*p<32)con++;

elseif(*p>='0'&&*p<='9')num++;

elseif(*p>='A'&&*p<='Z'||*p>='a'&&*p<='z')eng++;

elseoth++;

p++;

}

cout<

\n";

}

4.一维数组插入有序二维数组

#include

#include

#defineROW4

#defineCOL3

voidmain()

{

inta[ROW][COL]={{1,3,2},{4,6,8},{8,9,10}},b[COL]={2,7,1};

inti,j;

cout<<"插入前的数组为:

\n";

for(i=0;i

{

for(intj=0;j

cout<

cout<

}

for(i=0;i

{

for(j=ROW-1;j>0;j--)

if(a[j-1][i]>b[i])

a[j][i]=a[j-1][i];

elsebreak;

a[j][i]=b[i];

}

cout<<"插入后的数组为:

\n";

for(i=0;i

for(intj=0;j

cout<

cout<

}

}

5.二维数组正数和负数的均值

#include

voidmain(void)

{

intb[3][5]={{1,12,3,0,-2},{7,-12,-13,18},{-20,0,9,-5,7}};

floatave1=0,ave2=0;

inti,j,count1=0,count2=0,(*p)[5]=b;

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

for(j=0;j<5;j++)

{

if(p[i][j]>0)

{

ave1+=b[i][j];

count1++;

}

if(*(*(p+i)+j)<0)

{

ave2+=b[i][j];

count2++;

}

}

cout<<"正数的平均值为"<

}

6.查找一维数组中的元素

#include

voidmain()

{

floata[10]={3,5,8,1,7,9,10,2,6,4};

floatk,*p=a;

cout<<"输入要查找的元素:

";cin>>k;

inti,index=-1;

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

{

if(*p==k)

{

index=i;

break;

}

p++;

}

if(index==-1)cout<

\n";

elsecout<

\n";

}

7.删除字符串中的指定字符

#include

#include

voidmain()

{

charstring[100],ch,*p=string;

cout<<"请输入字符串:

\n";

cin.getline(p,100);

cout<<"请输入要删除的字符:

";cin.get(ch);

while(*p)

{

if(*p==ch)

strcpy(p,p+1);

elsep++;

}

cout<<"删除字符"<

\n";

cout<

}

第5章函数与编译预处理

一、选择题

题号

1

2

3

4

5

6

7

8

9

10

答案

D

C

D

A

B

C

D

D

C

C

题号

11

12

13

14

15

16

17

18

19

20

答案

A

B

C

C

C

A

D

C

D

C

勘误:

15.D选项“和类型均不同”改为“或类型不同”

二、填空题

1.①值传递②地址传递③引用传递

2.inline

3.①文件包含②宏定义③条件编译

4.①形参名②函数先使用后定义

5.①形式参数②实际参数③参数类型④参数个数⑤参数顺序

6.①void②int

7.①静态存储区域②0

8.①void(*fp)(char*s,inta[])②fp=f;或(*fp)=f;

9.①sum1=5②sum2=-15

10.①s3=2.8②s1=0,s2=4,s3=2③50

11.①11②1331③31

12.①0101②010111③0

13.①12345②32145

14.①-414②-1814③-3214

15.①x=5,y=3②y=10

16.①15-1121410②267143320

17.①1a②3b③5c

18.①i+1②k=j③str[k]=str[k+1]④del(s)

19.①i++②a[j]=x③add_sort(b,x,n)④n

20.①*sum②n/=10③fun(i,&s)④i%11==0&&s==13

21.①k=j②a[i]%2!

=0③count++④on_off(a,LAMP,CHILD)

22.①str[i]②substr[k+1]=='\0'③k++④f(s1,s2)

三、编程题

1.字符排序

#include

voidsort_char(char*str)

{

char*p1,*p2,*q;

charc;

for(p1=str;*(p1+1)!

='\0';p1++){

q=p1;

for(p2=p1+1;*p2!

='\0';p2++)

if(*p2<*q)q=p2;

if(q!

=p1){

c=*p1;

*p1=*q;

*q=c;

}

}

}

voidmain()

{

chars[]="gabhdecf";

cout<<"原字符串为:

"<

sort_char(s);

cout<<"排序后的字符串为:

"<

}

2.互换前后奇数位置的元素

#include

#include

voidfun(char*str)

{

inti,j;

charc;

if(strlen(str)<3)return;

if(strlen(str)%2==0)j=strlen(str)-1;

elsej=strlen(str);

for(i=1;i

c=str[i];

str[i]=str[j];

str[j]=c;

}

}

voidmain()

{

chars[]="ggoiromndno";

cout<<"原字符串为:

"<

fun(s);

cout<<"交换后的字符串为:

"<

}

3.查找自反数

#include

#include

intfun(intn)

{

inta[50];

inti=0,k=n;

while(k){

a[i]=k%10;

k/=10;

i++;

}

i--;

for(intj=0;j

if(a[j]!

=a[i])break;

if(j>=i)return1;

elsereturn0;

}

voidmain()

{

intbase,num;

cout<<"请输入基数base和需要查找的自反数的个数num:

"<

cin>>base>>num;

intn=base,count=0;

while(count

if(fun(n)){

cout<

count++;

if(count%5==0)cout<

}

n++;

}

cout<

}

第6章结构体与简单链表

一、选择题

题号

1

2

3

4

5

6

7

8

9

答案

D

C

B

B

B

C

D

A

C

题号

10

11

12

13

14

15

16

17

18

答案

D

D

B

A

C

B

B

C

B

勘误:

11.其中“不正确”改为“有语法错误”

二、填空题

1.结构体变量各成员所占内存长度之和

2.①typedefnodeNODE;②NODEs1,s2;

3.delete

4.动态

5.new或delete

6.p->next->next==NULL

7.①p==head②p->next==NULL

③p0->next=p->next④deletep

⑤p0->next=p1⑥p1->next=p

8.2012

9.13431

10.gh

11.①a[i].con=0②a[i].con++③continue

12.①h1->data>=h2->data②h1!

=NULL&&h2!

=NULL

③p->next=h1④h=merge(h1,h2)

13.①head->next=p1②returnhead

③head->next=p2④p2=p2->next

14.①newNode②p->next=top

③top->next④deletep

15.①p②returnh

③p=newND④p->next=h

16.①node*h②h2->next

③temp④h2

17.①p=p->next②p1->next=p

③h=h->next④p->next=h1

18.①p->next=head②p1

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

当前位置:首页 > 考试认证 > 司法考试

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

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