第一题:
(1)
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 char a; 6 cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; 7 while(cin>>a) 8 { 9 if(a == 'A') 10 cout<<"数据已经增加"<<endl; 11 else if(a == 'D') 12 cout<<"数据已经删除"<<endl; 13 else if(a == 'S') 14 cout<<"数据已经排序"<<endl; 15 else if(a == 'Q') 16 break; 17 else 18 { 19 cout<<"输入错误,重新输入!"<<endl; 20 cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; 21 continue; 22 } 23 cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; 24 } 25 return 0; 26 }
(2)
1 #include<iostream> 2 #include<stdlib.h> 3 using namespace std; 4 int main() 5 { 6 char a; 7 cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; 8 while(cin>>a) 9 { 10 switch(a) 11 { 12 case 'A':cout<<"数据已经增加"<<endl;break; 13 case 'D':cout<<"数据已经删除"<<endl;break; 14 case 'S':cout<<"数据已经排序"<<endl;break; 15 case 'Q':exit(0); 16 default :cout<<"输入错误,重新输入!"<<endl; 17 } 18 cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; 19 } 20 return 0; 21 }
第二题:
(1)
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 //质数的求法:质数表示其有2个因数:除了1,还有它自身。因此将其与比1大,比自身小的数一一取余,全部无法整除即可。 7 //while 8 int n=1; 9 while(n<=100) 10 { 11 int i=2; 12 while(i<=n) 13 { 14 if(i > sqrt(n)) 15 { 16 cout<<n<<" "; 17 break; 18 } 19 if(n%i == 0) 20 break; 21 ++i; 22 } 23 ++n; 24 } 25 return 0; 26 }
(2)
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 //do-while 7 int n=1; 8 do 9 { 10 ++n; //跳过对1是否为质数的判断 11 int i=2; 12 do 13 { 14 if(i > sqrt(n)) 15 { 16 cout<<n<<" "; 17 break; 18 } 19 if(n%i == 0) 20 break; 21 ++i; 22 }while(i<=n); 23 }while(n<100); //++n写在前面,n不能取到100 24 return 0; 25 }
(3)
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 //for 7 for(int n=1;n<=100;++n) 8 { 9 for(int i=2;i<=n;++i) 10 { 11 if(i > sqrt(n)) 12 { 13 cout<<n<<" "; 14 break; 15 } 16 if(n%i == 0) 17 break; 18 } 19 } 20 return 0; 21 }
第三题:
1 #include<iostream> 2 #include<cstdlib> 3 using namespace std; 4 int main() 5 { 6 int n,k; 7 unsigned seed='a'; 8 srand(seed); 9 n=(1+rand())%100; //确保随机性 10 cout<<"猜数游戏开始,你共有5次机会"<<endl; 11 for(int i=1;;++i) 12 { 13 cout<<"第 "<< i <<" 次机会:"; 14 cin>>k; 15 if(k == n) 16 { 17 cout<<"你咋那么厉害呢!"<<endl; 18 break; 19 } 20 else if(k > n) 21 cout<<"猜大了!"<<endl; 22 else if(k < n) 23 cout<<"猜小了!"<<endl; 24 if(i >= 5) 25 { 26 cout<<"游戏结束。"<<endl; 27 break; 28 } 29 } 30 return 0; 31 }
第四题:
#include<iostream> using namespace std; int main() { //先去第一个球,然后在剩下的里面取一个,然后继续在剩下的剩下的里面再取一个。 int t; //记录总数 for(int x=1;x<=5;++x) for(int y=1+x;y<=5;++y) for(int z=1+y;z<=5;++z) ++t; cout<<"共有 "<< t <<" 种取法"<<endl; return 0; }
小结:求质数的算法老是出问题,经常在运行的时候会多出或漏掉什么数……