C++上机实验答案五
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.程序填空
⑴ 以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
① t=10*t+i
② ②s=s+t
⑵ 下面程序的功能是输出符合条件的三位整数:它是完全平方数,又有两位数字相同,并且统计个数,请填空。
①(i-n1*100)/10或(i/10)%10
②num++
③j++
2.编程
(1)输入10个字符,输出其中的最大者。
#include
void main()
{
char ch,maxchar;
cout<<"please input ten character:";
cin>>ch;
maxchar=ch;
for(int i=1;i<10;i++)
{
cin>>ch;
if(ch>maxchar)maxchar=ch;
}
cout<<"maxchar="<
}
(2)一个球从100m高度自由落下,每次落地后反弹回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?
分析:共经过: 100*(1+1/2+1/4+1/8---+1/1024) 米
第10次:100/1024米
#include
void main()
{
double s=1,t=1,sum,t10;
int i;
for(i=1;i<=10;i++)
{
t=2*t;
s=s+1/t;
}
t10=100/t;
sum=100*s;
cout<<"sum="<
}
(3)用下列泰勒级数求sinx的近似值,x的值从键盘输入,精度要求为10-6。
#include
#include
void main()
{
int sign=1,n=1;
double x=3.0,fenzi=x,fenmu=1.0,equo=1,sum=x;
while(fabs(equo)>=1e-6)
{
fenzi*=x*x;
fenmu*=(2*n)*(2*n+1);
sign*=-1;
equo=sign*fenzi/fenmu;
sum+=equo;
n++;
}
cout<<"sin x="<
}
(4)编写程序,对输入的一批整数统计出正数的个数、负数的个数、奇数的个数、偶数的个数,要求所统计的整数由键盘输入,以0作为输入数据结束的标志。
#include
void main()
{
int a=0,b=0,c=0,d=0,x;
cin>>x;
while(x!=0)
{
if(x>0)a+=1;
if(x<0)b+=1;
if(x%2)c+=1;
else d+=1;
cin>>x;
}
cout<<"正数个数="<
cout<<"负数个数="<
cout<<"奇数个数="<
cout<<"偶数个数="<
}
(5)用牛顿迭代法求方程2x3-4x2+3x–6=0在1.5附近的根,精度要求为10-6。
#include
#include
void main()
{
double x1,x2=1.5,y1,y2;
cout<<" x1 x2 y\n";
do
{
x1=x2;
y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
y2=6*x1*x1-8*x1+3;
x2=x1-y1/y2;
cout<<"\t"<
}while(fabs(x1-x2)>1e-6);
c
out<<"x="<
}
(6)输出这样的三位整数:这些三位数的个、十、百位上的数字均不相同,并且能被11整除。
#include
void main()
{
int i,j,k,n=0;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if(i==j||j==k||k==i)
continue;
else if((i*100+j*10+k)%11==0)
{
cout<<++n;
cout<<":"<
}
}
(7)输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
void main()
{
int a,b,num1,num2,temp;
cout<<"请输入两个正整数: ";
cin>>num1>>num2;
if(num1>num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
cout<<"最大公约数为:"<
cout<<"最小公倍数为:"<
}