实验3 循环程序设计
【实验目的】
1掌握循环结构while、do-while、for的使用。
2了解转向语句的使用。
3学习循环结构的嵌套使用。
【实验内容】
⒈编写程序用公式
计算e的近似值。直到最后一项小于给定精度。
#include <iostream.h>
void main()
{
double e = 0.0,x = 1.0,y,z;
int n=1;
cout<< "input 精度:";
cin>>z ;
y=1/x ;
while(y>=z){
x*=n;
y=1/x;
e+=y;
++n;}
cout<<e<<endl;
}
⒉有一对兔子,从第三个月起每个月生一对兔子,小兔子从第三个月起每个月又生一对兔子,假设所有兔子都不死,编程序计算每个月的兔子是多少对(求20个月)。
#include <iostream.h>
void main( )
{ int f1,f2,f3;
int i;
f1=f2=1;
for(i=3;i<=20;i++){
f3=f1+f2;
cout<<i<<"月兔子对数为:"<<f3<<endl;
f1=f2;
f2=f3;}
}
⒊编写程序打印如图3-1所示蝶形图形。
# include <iostream.h>
void main()
{ int i,j,k,d;
for(i=-3;i<=3;i++){
cout<<endl;
d=i;
if (i<0) d=-i;
for (j=1;j<=10-3*d;j++)
cout<<" ";
for (k=1;k<=6*d+3;k++)
cout<<"B"; }
cout<<endl;
}
⒋ 从键盘输入任意多个整数(-999为结束标志),计算其中正数之和。
#include <iostream.h>
void main()
{ int x,s=0;
while(1){
cin>>x;
if (x==-999) break;
if (x<0) continue;
s=s+x;
}
cout<<"s="<<s<<endl;
}
⒌?编程序打印一个如图3-2所示的数字金字塔:(选作题)
# include <iostream.h>
void main()
{ int i,j,k,m;
for(i=1;i<=9;i++)
{
{ for (j=1;j<=9-i;j++)
cout<<" ";
for (k=1;k<=i;k++)
cout<<k;
for (m=i-1;m>=1;m--)
cout<<m;
}
cout<<endl;
}
}
⒍课本的第9题
⑴ #include <iostream.h>
#include <iomanip.h>
void main()
{cout <<" *";
for(int i=1; i<=9; i++)
cout <<setw(4) <<i;
cout <<"\n-----------------------------------------\n";
for(int i=1; i<=9; i++){
cout <<setw(3) <<i;
for(int j=1; j<=9; j++)
cout <<setw(4) <<i*j;
cout <<endl; }
}
⑵ #include <iostream.h>
#include <iomanip.h>
void main()
{cout <<" *";
for(int i=1; i<=9; i++)
cout <<setw(4) <<i;
cout <<"\n-----------------------------------------\n";
for(int i=1; i<=9; i++){
cout <<setw(3) <<i;
for(int j=1; j<=i; j++)
cout <<setw(4) <<i*j;
cout <<endl; }
}
⑶ #include <iostream.h>
#include <iomanip.h>
void main()
{ cout <<" *";
for(int i=1; i<=9; i++)
cout <<setw(4) <<i;
cout <<"\n-----------------------------------------\n";
for(int i=1; i<=9; i++){
cout <<setw(3) <<i;
if(i!=1)
cout <<setw(4*i-4) <<" ";
for(int j=i; j<=9; j++)
cout <<setw(4) <<i*j;
cout <<endl;}
}
课本的第10题:
#include <iostream.h>
void main()
{ int n;
long a=1, b=1, c=1, temp;
cout <<"please input a value:\n";
cin >>n;
for(int i=4; i<=n; i++){
temp=a+c;
a=b;
b=c;
c=temp;}
cout << c <<endl;
}
⒎设计一个简单的计算器程序
#include <iostream.h>
void main()
{int x,y;
char op;
cout<<"first number:";
cin>>x;
cout<<"Second number:";
cin>>y;
cout<<"op:";
cin>>op;
switch(op)
{ case'+': cout<<endl<<x<<"+"<<y<<"="<<x+y; break;
case'-': cout<<endl<<x<<"-"<<y<<"="<<x-y;break;
case'*': cout<<endl<<x<<"*"<<y<<"="<<x*y;break;
case'/': cout<<endl<<x<<"÷"<<y<<"="<<x/y; break;
case'%': cout<<endl<<x<<"%"<<y<<"="<<x%y; break;
default: cout<<endl<<"Wrong";
}
}
⒏编程求方程ax2+bx+c=0的解,其中的a,b,c由键盘输入。
#include <stdio.h>
#include <math.h>
void main()
{float a,b,c,disc,x1,x2,p,q;
scanf("%f,%f,%f",&a,&b,&c);
if (a==0)
{if (b==0)
{ if(c==0)
printf("该方程无穷解\n");
else printf("该方程无解\n");
}
else printf("单根x=%f\n",-b/a);
}
else
{ disc=b*b-4*a*c;
if (disc==0)
printf("x1=x2=%7.2f\n", -b/(2*a));
else {if (disc>0)
{ x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("x1=%7.2f,x2=%7.2f\n", x1, x2);
}
else
{p=-b/(2*a);
q=sqrt(fabs(disc))/(2*a);
printf("x1=%7.2f + %7.2f i\n", p,q);
printf("x1=%7.2f — %7.2f i\n", p,q);
}
}
}
}