c++实验一
c++实验一
2-28
实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Select one:”提示用户输入。输入为A、D、S时分别表示“数据已经增加、删除、排序。”,输入为Q时程序结束。
(1)要求使用if…else语句进行判断,用break,continue控制程序流程。
代码:
#include<iostream> using namespace std; int main() { char i; while(true) { cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; cin>>i; if(i-65==0) { cout<<"数据已经增加"<<endl; continue; } else if(i-68==0) { cout<<"数据已经删除"<<endl; continue; } else if(i-83==0) { cout<<"数据已经排序"<<endl; continue; } else if(i-81==0) { cout<<"程序结束"; break; } else { cout<<"not found"<<endl; continue; } } return 0; }
结果:
(2)要求使用switch语句。
代码:
#include<iostream> using namespace std; int main() { char i; while(true) { cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; cin>>i; switch(i) { case 'A':cout<<"数据已经增加"<<endl;break; case 'D':cout<<"数据已经删除"<<endl;break; case 'S':cout<<"数据已经排序"<<endl;break; case 'Q':cout<<"程序结束";break; default:cout<<"not found"<<endl; } if(i==81) break; } return 0; }
结果:
2-29
用穷举法找出1~100间的质数并显示出来,分别使用while,do…while,for循环语句实现。
(1)while循环语句
代码:
#include<iostream> using namespace std; int main() { int a=2,n=1; while(a<101) { int i=2; while(i<a&&a%i!=0) { i++; } if(i==a) { cout<<a; if(n%5==0) cout<<endl; else cout<<" "; n++; } a++; } return 0; }
结果:
(2)do…while循环语句
代码:
#include<iostream> using namespace std; int main() { int a=2,n=1,i=2; do { if(a%i==0&&i!=a) { a++; continue; } else if(i==a) { cout<<a++; if(n%5==0) cout<<endl; else cout<<" "; n++; i=2; } else i++; }while(a<101); return 0; }
结果:
(3)for循环语句
代码:
#include<iostream> using namespace std; int main() { int i,j,n=1; for(i=2;i<=100;i++) for(j=2;j<=i;j++) { if(i%j==0&&i!=j) break; if(i==j) { cout<<i; if(n%5==0) cout<<endl; else cout<<" "; n++; } } return 0; }
结果:
2-32
在程序中定义一个整形变量,赋予1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用while,do…while语句实现循环。
(1)while循环语句
代码:
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { srand(time(NULL)); int n=rand()%100+1; int a,i=1; while(i==1) { cout<<"输入1~100中你猜测的数:"; cin>>a; if(a>n) cout<<"实际比这个数小"<<endl; else if(a<n) cout<<"实际比这个数大"<<endl; else { cout<<"你猜对啦"<<endl; i=0; } } return 0; }
结果:
(2)do…while循环语句
代码:
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { srand(time(NULL)); int n=rand()%100+1; int a,i=1; do { cout<<"输入1~100中你猜测的数:"; cin>>a; if(a>n) cout<<"实际比这个数小"<<endl; else if(a<n) cout<<"实际比这个数大"<<endl; else { cout<<"你猜对啦"<<endl; i=0; } }while(i==1); return 0; }
结果:
2-34
口袋中有红、黄、蓝、白、黑5种颜色的球若干,每次从口袋中取出3个不同颜色的球,问有多少种取法?
代码:
#include<iostream> using namespace std; enum ball{red,yellow,blue,white,black}; int main() { ball balls; int i,j,k,n=0; for(i=red;i<=black;i++) for(j=i+1;j<=black;j++) for(k=j+1;k<=black;k++) { switch(i) { case 0:cout<<"red ";break; case 1:cout<<"yellow ";break; case 2:cout<<"blue ";break; case 3:cout<<"white ";break; case 4:cout<<"black ";break; } switch(j) { case 1:cout<<"yellow ";break; case 2:cout<<"blue ";break; case 3:cout<<"white ";break; case 4:cout<<"black ";break; } switch(k) { case 2:cout<<"blue"<<endl;break; case 3:cout<<"white"<<endl;break; case 4:cout<<"black"<<endl;break; } n++; } cout<<"有"<<n<<"种取法"; return 0; }
结果:
用了好几个switch唉,尝试改进一下代码:
#include<iostream> using namespace std; void pailie(int); enum ball{red,yellow,blue,white,black}; int main() { ball balls; int i,j,k,n=0; for(i=red;i<=black;i++) for(j=i+1;j<=black;j++) for(k=j+1;k<=black;k++) { pailie(i); pailie(j); pailie(k); cout<<endl; n++; } cout<<"有"<<n<<"种取法"; return 0; } void pailie(int x) { switch(x) { case 0:cout<<"red ";break; case 1:cout<<"yellow ";break; case 2:cout<<"blue ";break; case 3:cout<<"white ";break; case 4:cout<<"black ";break; } }
结果:
实验一总结:
1、感觉自己do…while用的不怎么熟练唉;
2、百度了一波随机数,学到了用时间time(NULL)使每次可以随机到不同的数,其包含在ctime类中;
3、rand()包含在cstdlib类中。