C++程序设计实践教程思考题答案.docx

上传人:b****6 文档编号:7794236 上传时间:2023-01-26 格式:DOCX 页数:23 大小:20.48KB
下载 相关 举报
C++程序设计实践教程思考题答案.docx_第1页
第1页 / 共23页
C++程序设计实践教程思考题答案.docx_第2页
第2页 / 共23页
C++程序设计实践教程思考题答案.docx_第3页
第3页 / 共23页
C++程序设计实践教程思考题答案.docx_第4页
第4页 / 共23页
C++程序设计实践教程思考题答案.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C++程序设计实践教程思考题答案.docx

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

C++程序设计实践教程思考题答案.docx

C++程序设计实践教程思考题答案

实验1C++基础

6.编写程序,输入某大写字母的ASCII码值,输出该字母的对应小写字母。

#include

usingnamespacestd;

intmain()

{

inti;

cin>>i;

if(i>=65&&1<=90)

cout<

else

cout<<"输入有误"<

}return0;

实验2

三、实验思考

1.输入直角三角形的两条直角边长,调用平方根库函数sqrt来求斜边的长度

#include

#include

usingnamespacestd;

intmain()

{floata,b,c;

cout<<"请输入直角三角形的两条边长:

";

cin>>a>>b;

c=sqrt(a*a+b*b);

cout<<"直角三角形的斜边="<

return0;

}

2.从键盘输入一个字符,如果输入的是英文大写字母,则将它转换成小写字母后输出,否则输出原来输入的字符。

#include

usingnamespacestd;

intmain()

{

charc;

1

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

";

cin>>c;

if(c>='A'&&c<='Z')

c+='a'-'A';

cout<

return0;

}

3.输入一个学生的成绩,如高于60分,则输出“pass”;否则,输出“failed”。

#include

usingnamespacestd;

intmain()

{

floatgrade;

cout<<"请输入成绩:

";

cin>>grade;

if(grade>=60)

cout<<"pass"<

else

cout<<"failed";

return0;

}

4.计算分段函数

#include

#include

usingnamespacestd;

intmain()

{

doublex,y;

cout<<"请输入一个数x:

";

cin>>x;

if(!

x)

y=cos(x)-pow(x,2)+3*x;

else

y=sin(x)+sqrt(pow(x,2)+1)+3*x;

cout<<"y="<

return0;

}

2

5.从键盘上输入1~7之间的一个数字,输出其对应星期几的英文表示。

#include

usingnamespacestd;

intmain()

{

charc;

cout<<"Enteracharacterofnumbersbetween1and7:

";

cin>>c;

switch(c)

{

case'1':

cout<<"Monday";break;

case'2':

cout<<"Tuesdag";break;

case'3':

cout<<"Wenesday";break;

case'4':

cout<<"Thursday";break;

case'5':

cout<<"Friday";break;

case'6':

cout<<"Saturday";break;

case'7':

cout<<"Sunday";break;

default:

cout<<"wrongnumber";

}

cout<

return0;

}

6.设计一个简单的计算器程序,能够进行加、减、乘、除简单运算并显示结果。

#include

usingnamespacestd;

intmain()

{

cout<<"输入简单的算术表达式:

(数操作符数)";

intleftOperand,rightOperand;

charOperator;

cin>>leftOperand>>Operator>>rightOperand;

intresult;

switch(Operator)

{

case'+':

result=leftOperand+rightOperand;break;

case'-':

result=leftOperand-rightOperand;break;

case'*':

3result=leftOperand*rightOperand;break;

case'/':

if(rightOperand!

=0)

result=leftOperand/rightOperand;

else

{

cout<<"除数为0,除法不能进行"<

return0;

}

break;

default:

cout<

"<

}

cout<

}

实验3

三、思考题参考程序

1n2?

kn1.编程计算表达式k?

1的值。

#include

usingnamespacestd;

intmain()

{

intn,k=1,sum=0,mean;

cout<<"请输入n的值:

";

cin>>n;

while(k<=n)

{

sum+=k*k;

k++;

}

if(n>0)

mean=sum/n;

else

mean=0;

cout<<"1~n个整数平方和的均值="<

return0;

4}

2.输入两个正整数,判别它们是否互为互质数。

所谓互质数,就是最大公约数是1。

#include

usingnamespacestd;

intmain()

{

intm,n,r;

cout<<"请输入两个正整数:

";

cin>>m>>n;

cout<

if(m

{r=m;m=n;n=r;}

while(r=m%n)

{

m=n;

n=r;

}

if(n==1)

cout<<"是互质数"<

else

cout<<”不是互质数”<

return0;

}

3.编写程序,输出从公元2000年至3000年间所有闰年的年号。

#include

usingnamespacestd;

intmain()

{

intyear;

cout<<"公元2000年至3000年间闰年的年号:

\n";

for(year=2000;year<=3000;year++)

if((year%4==0&&year%100!

=0)||(year%400==0))

cout<

cout<

return0;

}

4.编写程序模拟猴子吃桃子问题:

猴子第1天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。

第2天将剩下的桃子又吃了一半,又多吃一个。

以后每天都吃了前一天剩下的

5

一半零1个。

到了第10天,只剩下了一个桃子。

请问猴子第一天共摘了多少个桃子?

方法1:

#include

usingnamespacestd;

intmain()

{

intday,qian,hou=1;

for(day=9;day>=1;day--)

{

qian=(hou+1)*2;

hou=qian;

}

cout<

return0;

}

运行结果:

1534

方法2:

#include

usingnamespacestd;

intmain()

{

intday,number=1;

for(day=9;day>=1;day--)

number=(number+1)*2;

cout<

return0;

}

方法3:

#include

usingnamespacestd;

intpeach(int);

intmain()

{

cout<<"第1天共摘了"<

(1)<<"个"<

return0;

}

intpeach(intday)

{

intnumber;

6

if(day==10)

number=1;

else

number=2*(peach(day+1)+1);

returnnumber;

}

5.计算s=1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+…+n)的值。

方法1:

#include

usingnamespacestd;

intmain()

{

inti,j,n;

longintsum,total(0);

cout<<"inputn:

";

cin>>n;

for(i=1;i<=n;i++)

{

sum=0;

for(j=1;j<=i;j++)

sum+=j;

total+=sum;

}

cout<<"s="<

return0;

}

#include

usingnamespacestd;

intmain()

{

inti,n;

longintsum(0),total(0);

cout<<"inputn:

";

cin>>n;

for(i=1;i<=n;i++)

{

sum+=i;

total+=sum;

}

7

cout<<"s="<

return0;

}

6.马克思曾经做过这样一道趣味数学题:

有30个人在一家小饭馆用餐,其中有男人、女人和小孩。

每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,一共花了50先令。

请问男人、女人以及小孩各有几个人?

#include

usingnamespacestd;

intmain()

{

intx,y,z;

for(x=1;x<=16;x++)

for(y=1;y<=24;y++)

{

z=30-x-y;

if(3*x+2*y+z==50)

cout<<"Menare"<

return0;

}实验4常用程序设计算法

三、实验思考

1.读入一个整数N,若N为非负数,则计算N到2×N之间的整数和;若N为负数,则求2×N到N之间的整数和。

分别利用for和while写出两个程序。

#include

usingnamespacestd;

intmain()

{

intN;

cin>>N;

inti=N;

longsum=0;

if(N>=0)

{

for(;i<=2*N;i++)

sum+=i;

8

}

else

{

for(;i>=2*N;i--)sum+=i;}

cout<

}

#includeusingnamespacestd;

intmain()

{

intN;

cin>>N;

inti=N;

longsum=0;if(N>=0){

while(i<=2*N){

sum+=i;i++;}

}

else

{

while(i>=2*N){

sum+=i;i--;}

}

cout<

9

2.设s?

1?

111?

?

?

?

,求与8最接近的s的值及与之对应的n值。

23n

#include

usingnamespacestd;

intmain()

{

floats=1.0;

intn=1;

do

{

++n;

s+=1.0/n;

}while(s<=8);

if((s-8)>(8-(s-1.0/n)))

cout<<"s="<

"<

10

return0;

}

4.一司机出车祸后驾车逃离现场,第一位目击者记得车牌号前两位数字相同,且后两位数字也相同;第二位目击者是一位数学家,他看出车牌号是四位完全平方数。

试推算肇事车的车牌号。

#include

usingnamespacestd;

intmain()

{

intn,i;

for(i=32;i<100;i++)

{

n=i*i;

if(n%10==n%100/10&&n/1000==n/100%10)

cout<

}

return0;

}

11

5.编程验证“四方定理”:

所有自然数至多只要用4个数的平方和就可以表示。

#include

usingnamespacestd;

intmain()

{

intnumber,i,j,k,l;

cout<<"Pleaseenteranumber:

";

cin>>number;

for(i=1;i

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

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

for(l=0;l<=k;l++)

if(number==i*i+j*j+k*k+l*l)

{

cout<

exit(0);

}

return0;

}

6.编程验证“角谷猜想”:

任给一个自然数,若为偶数则除以2,若为奇数则乘3加1,得到一个新的自然数,然后按同样的方法继续运算,若干次运算后得到的结果必然为1。

#include

usingnamespacestd;

intmain()

{

intn,flag;

flag=1;

cout<<"pleaseinputn:

"<

cin>>n;

while(flag)

{

if(n%2==0)

n=n/2;

else

n=n*3+1;

12

}if(n==1){flag=0;cout<<"success!

"<

实验5函数和编译预处理

三、实验思考

1.参考程序如下:

#include

usingnamespacestd;

longintFibonacci(intn);

voidmain()

{

inti;

longintt,t1;

cout<<"pleaseinputt:

"<

cin>>t;

for(i=2;;i++)

{

t1=Fibonacci(i);

if(t1>t){cout<<"minFibonacci="<

}

longintFibonacci(intn)

{

if(n==0)return1;

elseif(n==1)return1;

elsereturnFibonacci(n-1)+Fibonacci(n-2);

}

2.参考程序如下:

#include

usingnamespacestd;

intnum_n(intn,inta)//由n个a组成的多位数的计算{

if(n==1)returna;

13

elsereturnnum_n(n-1,a)*10+a;

}

voidmain()

{

inti,n;

longintsum=0;

cout<<"pleaseinputn:

"<

cin>>n;

for(i=1;i<=n;i++)

{cout<

sum+=num_n(i,2);

}

cout<<"n="<

sum="<

3.参考程序如下:

#include

usingnamespacestd;

intisprime(intn)//判断n是否为素数的函数{

inti;

for(i=2;i

if(n%i==0)return0;//非素数,函数值返回0return1;//素数,函数值返回1

}

voidmain()

{

inti,min_prime,max_prime;

for(i=1000;i<=2000;i++)

if(isprime(i)==1)

{cout<<"最小素数="<=1000;i--)

if(isprime(i)==1)

{cout<<"最大素数="<

4.参考程序如下:

#include

usingnamespacestd;

intsum(intn)

14{

statics=0;

s=s+n;

returns;

}

voidmain()

{

inti,n,s;

cout<<"情指定n:

";

cin>>n;

for(i=1;i<=n;i++)

s=sum(i);

cout<<"1~n之和="<

}

5.参考程序如下:

#include

usingnamespacestd;

intis_h(intn)//判断参数n是否为回文

{

inti,m,fn;//i用来记录n的某一位数字,m初值为n,fn用于记录n的倒序数m=n;

fn=0;

while(m!

=0)

{

i=(m%10);

fn=(fn*10+i);

m=m/10;

}

if(fn==n)return1;//是回文数返回1

elsereturn0;//不是回文数返回0

}

voidmain()

{

inti;

intt;cin>>t;

for(i=1;i<=t;i++)

if(is_h(i)==1)

cout<<"回文数:

"<

15

}

6.参考程序如下:

#include

usingnamespacestd;

#defineX(a+b)/2

#defineAREAX*h

voidmain()

{

floata,b,h,s;

cout<<"请分别输入a,b,h的值,用空格分隔!

"<>a>>b>>h;

s=AREA;

cout<

}

实验六数组

三、实验思考题

参考源代码

思考题1.shi_6_3_1.cpp

#include

#defineN5

intlookup(int[],int,int);//函数说明

voidmain()

{inti,a[N],index,yLooked;

cout<<"请输入N(=5)个整数:

"<

for(i=0;i>a[i];

cout<<"请输入您要找的整数:

"<

cin>>yLooked;

index=lookup(a,N,yLooked);//函数调用if(index!

=-1)

cout<<"您要找的数下标为:

"<

cout<<"没有找到"<

cout<<"\n谢谢使用本程序,再见!

"<

16cin.get();

}

intlookup(intx[],intn,inty)//函数定义

{intflag=-1;//首先假设找不到

inti;

for(i=0;i

if(x[i]==y)

{flag=i;

break;//找到了则不必再往后找

}

returnflag;

}

--------------------------------------------------------------------------------------------------思考题2.shi_6_3_2.cpp

#include

#defineN5

intmax(int[],int);//函数说明

voidmain()

{inti,a[N],xMax;

cout<<"请输入N(=5)个整数:

"<

for(i=0;i>a[i];

xMax=max(a,N);

cout<<"数组中最大的的整数:

"<

cout<<"\n谢谢使用本程序,再见!

"<

cin.get();

cin.get();

}

intmax(intx[],intn)

{inti,r=x[0];//首先假设x[0]最大,且存于r中

for(i=1;i

if(x[i]>r)r=x[i];//发现了更大的则修改r

returnr;//r中存有最大元素的值

}

------------------------------------------------------------------

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

当前位置:首页 > 经管营销 > 经济市场

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

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