实验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); } } } }