C++教材练习题参考答案Word格式.docx
《C++教材练习题参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++教材练习题参考答案Word格式.docx(58页珍藏版)》请在冰点文库上搜索。
![C++教材练习题参考答案Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/78ea542a-7790-4654-9f06-6e6decd64132/78ea542a-7790-4654-9f06-6e6decd641321.gif)
>
a;
的十位数是:
a/10<
的个位数是:
a%10<
4、
inta,b,c,v,aver;
输入三个数:
cin>
a>
b>
c;
v=a*a+b*b+c*c;
aver=(a+b+c)/3;
三个数的平方和是:
v<
三个数的平均值是:
aver<
第二章
inta,b,c,t;
if(a>
b){t=a;
a=b;
b=t;
c){t=a;
a=c;
c=t;
if(b>
c){t=b;
b=c;
'
\t'
floatx,sum=0.0;
inti=1;
while(i<
=10)
{
x;
sum=sum+x;
i=i+1;
}
平均值是:
sum/10<
inty=0,t=1;
intn;
n;
for(inti=1;
i<
=n;
i++)
{t=t*i;
y=y+t;
n="
n<
y="
y<
{intcount=0;
for(intn=100;
1000;
n++)
for(inti=2;
=n-1;
if(n%i==0)break;
if(i>
n-1)
cout<
count++;
\n'
count="
count<
5、
{inta,n,sum=0,c=0;
cout<
n=a;
do
sum+=n%10;
n/=10;
c++;
}while(n);
的所有数字之和为:
sum<
是"
位数"
<
6、
{inta,b,i;
for(i=1;
=999;
a=i%10;
b=i%100;
if(i==a*a||i==b*b)
7、
{inta,b,n;
for(n=10000;
=99999;
a=n*10+6;
b=6*100000+n;
if(b==4*a){cout<
break;
第三章
//1.一维数组的输入和输出
#include<
inta[10],k=1;
for(inti=0;
10;
请输入第"
k++<
个元素a["
]\t"
a[i];
数组a为:
\n"
for(i=0,k=0;
k++;
a[i]<
if(k%5==0)cout<
//2.通过指针输出一维数组中值为奇数元素
inta[10]={3,4,5,8,9,11,14,16,19,21},*p=a,k=0;
数组a中的奇数有:
if(p[i]%2)
{
k++;
cout<
*(p+i)<
if(k%5==0)cout<
}
//3.产生一个随机的二维数组b[4][5],并按矩阵的方式输出
stdlib.h>
intb[4][5];
产生的数组为:
4;
for(intj=0;
j<
5;
j++)
b[i][j]=rand();
b[i][j]<
//4.二维数组的平方赋值
inta[3][4]={3,1,5,2,4,1,7,5,3,6,9,8},b[3][4];
3;
i++){
a[i][j]<
b[i][j]=a[i][j]*a[i][j];
数组b为:
for(i=0;
//5.小写字母改写为大写字母
charstr[100];
请输入一个含空格字符的字符串。
cin.getline(str,100);
str[i];
if(str[i]>
='
a'
str[i]<
z'
)
str[i]-='
-'
A'
转换后的字符串为:
str<
//6.通过指针将字符串逆序
string.h>
charstr[]="
abc321"
*s1=str,*s2,ch;
原字符串为:
s1<
s2=str;
//A
while(*s2)s2++;
s2--;
//B
while(s1<
s2){
ch=*s1;
*s1=*s2;
*s2=ch;
s1++;
s2--;
逆序后的字符串为:
/*其中A到B行可改为:
s2=str+strlen(str)-1;
*/
第四章习题答案
4-1
voidswap(int*p1,int*p2)
intt;
t=*p1;
*p1=*p2;
*p2=t;
inta,b,c;
int*s1,*s2,*s3;
输入三个数a,b,c:
s1=&
s2=&
b;
s3=&
b)swap(s1,s2);
c)swap(s1,s3);
c)swap(s2,s3);
输出排好序的三个数:
4-2
voidtrans(int,int);
intn,sel;
输入一个整数:
\n输出进制:
2,8,16,32(输入0时退出):
sel;
switch(sel)
case2:
trans(n,2);
case8:
trans(n,8);
case16:
trans(n,16);
case32:
trans(n,32);
case0:
default:
进制输入错误!
}while(sel!
=0);
voidtrans(intn,intbase)
intc;
if(n==0)return;
c=n%base;
trans(n/base,base);
if(c<
=9)
else
char(c-10+'
)<
4-3
math.h>
iomanip.h>
voidfun(intb[],intn)
n-1;
i++)//若不是素数,将其值置为0
for(intj=i+1;
if(b[i]!
=0&
b[j]!
=0)
if(b[j]%b[i]==0)
b[j]=0;
inta[210]={0},n=0,k=5;
48;
i++)//给数组赋初值
a[i]=k,k+=2;
fun(a,48);
49;
if(a[i]!
{
cout<
setw(6)<
n++;
if(n%5==0)
}
4-4
intgcd(int,int);
intlcm(int,int);
intnum1,num2,den1,den2,a,l,g;
num1>
den1>
num2>
den2;
num1<
/"
den1<
"
num2<
den2<
求分母的最小公倍数:
l=lcm(den1,den2);
l<
两分数的和为:
a=(l/den1)*num1+(l/den2)*num2;
/'
求分子分母的最大公约数:
g=gcd(a,l);
g<
输出最简分数:
a/g<
l/g<
intgcd(inta,intb)
inti;
for(i=a;
i>
=1;
i--)
if(!
((a%i)||(b%i)))
break;
return(i);
intlcm(inta,intb)
i=b;
while(i%a)i+=b;
return(i);
4-5
doublesin(doublex,doubleeps)
doubleterm,sum,y;
intn=1;
//n=0
y=x*x;
term=x;
sum=0;
while(fabs(term)>
=eps)
sum+=term;
n++;
term=term*y/((2*n-2)*(2*n-1));
//((2*n)*(2*n-1))
term*=-1;
returnsum;
doublex,y;
输入x的值(角度):
while(x>
360)x-=360;
y=3.1415926*x/180;
度数为:
x<
其sin值为:
sin(y,1e-6)<
4-6
floatsolut(floata,floatb,floatc,floatd)
floatx=1,x0,f,f1;
do{
x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*a*x0+2*b)*x0+c;
//对f函数的导数
x=x0-f/f1;
}while(fabs(x-x0)>
=1e-3);
returnx;
floata,b,c,d;
inputa,b,c,d:
c>
d;
x^3+"
x^2+"
x+"
d<
=0"
x="
solut(a,b,c,d)<
4-7
prime(intn)
{inti=2;
intflag=1;
for(;
n/2&
flag==1;
if(n%i==0)
flag=0;
return(flag);
{
intm,j,k,n=0;
for(m=6;
m<
=100;
m+=2)
{for(j=3;
=m/2;
j+=2)
if(prime(j))
{k=m-j;
if(prime(k))
setw(4)<
="
+"
k;
if(++n%5==0)cout<
if(m==j+k)break;
}}
4-8
voidf1(intn)
intj=n%10;
if(n/10)f1(n/10);
voidf2(intn)
n%10<
if(n/10)f2(n/10);
intx;
输入一个整数:
输入的整数为:
该整数的反序输出为:
f2(x);
该整数的正序输出为:
f1(x);
第五章习题参考解答
1.
131
231
132
232
133
233
123
2.
正确程序之一为:
#defineSQR(x)((x)*(x))
voidmain(){
intcounter;
for(counter=0;
counter<
++counter){
(counter+1)<
x的平方为"
SQR(counter+1)<
3.
#definetrue1
#definefalse0
#defineok2
#defineerror–1
#defineoverflow-2
4.
#defineIFF(x)if(x%10==0)returntrue;
elseretruefalse;
5.
#defineEXCHANGE(x,y)x=x+y;
y=x-y;
x=x-y;
第六章
1.[程序如下]
structstudent
floatCPPscore;
floateng;
};
students1;
floatsum;
s1.CPPscore>
s1.eng;
sum=s1.CPPscore+s1.eng;
sum;
2.[程序如下]
#include<
structscore
charname[8];
intno;
floatc,english,maths,average;
};
scoreinput(scorest);
floataverage(floata,floatb,floatc);
voidsort(scorest[],intn);
voidprint(scorest[],intn);
scorestudent[30];
for(inti=0;
i<
5;
i++)
student[i]=input(student[i]);
sort(student,5);
print(student,5);
scoreinput(scorest)
请输入学生姓名:
;
st.name;
请输入学生学号:
st.no;
请输入C++成绩:
st.c;
请输入英语成绩:
st.english;
请输入数学成绩:
st.maths;
endl;
st.average=average(st.c,st.english,st.maths);
returnst;
floataverage(floata,floatb,floatc)
{return(a+b+c)/3;
voidsort(scorest[],intn)
{scoretemp;
for(inti=0;
n-1;
for(intj=i;
j<
n;
j++)
if(st[i].average<
st[j].average)
{temp=st[i];
st[i]=st[j];
st[j]=temp;
voidprint(scorest[],intn)
No."
姓名"
平均"
C++"
英语"
数学"
{
st[i].no;
cout