C++程序设计习题与实验教程参考答案习题部分文档格式.docx
《C++程序设计习题与实验教程参考答案习题部分文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计习题与实验教程参考答案习题部分文档格式.docx(61页珍藏版)》请在冰豆网上搜索。
![C++程序设计习题与实验教程参考答案习题部分文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/27/18e24a7b-6026-4d14-805a-1dabca8fab6d/18e24a7b-6026-4d14-805a-1dabca8fab6d1.gif)
6.x>
5&
&
!
(x%2)或x>
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.交换两个整数的位置
intx,y,t;
cin>
>
x>
y;
x<
’\t’<
y<
t=x;
x=y;
y=t;
交换后的两个数为:
x<
2.求三角形面积
#include<
math.h>
voidmain(void)
{
inta,b,c;
doubles,area;
输入三角形三边长a,b,c:
a>
b>
c;
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));
三角形面积为:
area<
第3章流程控制语句
19
20
21
22
23
24
25
26
27
28
29
30
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>
25.①intr=1②break
26.①x<
=200②x%2==0
27.①c!
='
'
②c>
A'
c<
Z'
||c>
a'
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个整数
inta,b,c,d;
if(a<
b){d=a;
a=b;
b=d;
}
c){d=a;
a=c;
c=d;
if(b<
c){d=b;
b=c;
a<
'
\t'
b<
\n'
;
2.100~300满足条件的数
intk=0;
for(inti=101;
i<
300;
i+=2)
if((i*i)%6==3){
cout<
k++;
if(k%5==0)cout<
}
3.逆序显示16进制数
inta,k,n;
a;
k=a;
while(k){
n=k%16;
k/=16;
switch(n){
case10:
cout<
break;
case11:
B'
case12:
C'
case13:
D'
case14:
E'
case15:
F'
default:
n;
第4章数组
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;
4;
i++,p++)cout<
*p[i];
”改为“for(inti=0;
i++)cout<
*s[i];
8.①a:
5d:
1e:
4f:
1g:
1
②i:
1l:
1m:
1o:
3r:
③s:
2u:
1y:
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<
len1②j>
=len2③b[k]=b[k-1]④++i%5==0
17.①pa>
=a&
pb>
=b②j+k+carry③ps++④p<
ps
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>
*p1<
||*p1>
③p2++④char(*p4)[20]
22.①&
a[i]②*p[k]<
*p[j]③int*t④*p[i]
1.交换一维数组中的最大元素与最小元素的位置
voidmain(void)
inta[6]={18,16,19,15,11,8};
inti,max,min,j,k,t;
原数组为:
\n"
for(i=0;
6;
i++)
cout<
a[i]<
for(j=k=0,max=min=a[0],i=1;
{
if(max<
a[i])max=a[i],j=i;
if(min>
a[i])min=a[i],k=i;
t=a[j],a[j]=a[k],a[k]=t;
交换后的数组为:
2.二维数组右移一列
#defineROW3
#defineCOL4
voidmain(void)
inta[ROW][COL]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,t;
移动前的数组为:
ROW;
for(j=0;
j<
COL;
j++)
a[i][j]<
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;
移动后的数组为:
3.统计字符串中种类字符的个数
charstr[50],*p=str;
intcon=0,num=0,eng=0,oth=0;
请输入一个字符串:
cin.getline(str,50);
while(*p)
if(*p<
32)con++;
elseif(*p>
*p<
9'
)num++;
||*p>
)eng++;
elseoth++;
p++;
str<
中有控制字符"
con<
个,数字字符"
num<
个,英文字母"
eng<
个,其它字符"
oth<
个。
4.一维数组插入有序二维数组
iomanip.h>
#defineROW4
#defineCOL3
inta[ROW][COL]={{1,3,2},{4,6,8},{8,9,10}},b[COL]={2,7,1};
inti,j;
插入前的数组为:
ROW-1;
for(intj=0;
setw(5)<
a[i][j];
}
for(j=ROW-1;
if(a[j-1][i]>
b[i])
a[j][i]=a[j-1][i];
elsebreak;
a[j][i]=b[i];
插入后的数组为:
i++){
5.二维数组正数和负数的均值
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;
3;
5;
{
if(p[i][j]>
0)
{
ave1+=b[i][j];
count1++;
}
if(*(*(p+i)+j)<
ave2+=b[i][j];
count2++;
正数的平均值为"
ave1/count1<
,负数的平均值为"
ave2/count2<
6.查找一维数组中的元素
floata[10]={3,5,8,1,7,9,10,2,6,4};
floatk,*p=a;
输入要查找的元素:
k;
inti,index=-1;
10;
if(*p==k)
index=i;
break;
if(index==-1)cout<
k<
没有出现在数组中。
elsecout<
是数组中下标为"
index<
的元素。
7.删除字符串中的指定字符
string.h>
charstring[100],ch,*p=string;
请输入字符串:
cin.getline(p,100);
请输入要删除的字符:
cin.get(ch);
if(*p==ch)
strcpy(p,p+1);
elsep++;
删除字符"
ch<
后的字符串为:
string<
第5章函数与编译预处理
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]=='
③k++④f(s1,s2)
1.字符排序
voidsort_char(char*str)
char*p1,*p2,*q;
charc;
for(p1=str;
*(p1+1)!
p1++){
q=p1;
for(p2=p1+1;
*p2!
p2++)
if(*p2<
*q)q=p2;
if(q!
=p1){
c=*p1;
*p1=*q;
*q=c;
chars[]="
gabhdecf"
原字符串为:
s<
sort_char(s);
排序后的字符串为:
2.互换前后奇数位置的元素
voidfun(char*str)
if(strlen(str)<
3)return;
if(strlen(str)%2==0)j=strlen(str)-1;
elsej=strlen(str);
for(i=1;
j;
i+=2,j-=2){
c=str[i];
str[i]=str[j];
str[j]=c;
ggoiromndno"
fun(s);
交换后的字符串为:
3.查找自反数
intfun(intn)
inta[50];
inti=0,k=n;
a[i]=k%10;
k/=10;
i++;
i--;
for(intj=0;
i;
j++,i--)
if(a[j]!
=a[i])break;
if(j>
=i)return1;
elsereturn0;
intbase,num;
请输入基数base和需要查找的自反数的个数num:
base>
num;
intn=base,count=0;
while(count<
num){
if(fun(n)){
n<
count++;
if(count%5==0)cout<
n++;
第6章结构体与简单链表
11.其中“不正确”改为“有语法错误”
1.结构体变量各成员所占内存长度之和
2.①typedefnodeNODE;
②NODEs1,s2;
3.delete
4.动态
5.new或delete
6.p->
next->
next==NULL
7.①p==head②p->
③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->
③temp④h2
17.①p=p->
next②p1->
next=p
③h=h->
next④p->
next=h1
18.①p->
next=head②p1