C++实验一

实验结论:

2-28

实现一个简单的菜单程序,运行时显示"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用户输入,A 表示增加,D 表示删除, S 表示排序,Q 表示退出,输入为 A、 D、S 时分别提示"数据已经增加、删除、排序。"输入为 Q 时程序结束。

1)if...else

#include<iostream>
using namespace std;

//if

int main(){
    char menu;
    
    while(1){//使用break语句可以跳出这个循环
    cout<<"Menu:A(dd) D(elete) S(ort) Q(uit), Select one:"<<endl;
    cin>>menu;
        if(menu=='A')
        {
        cout<<"Data has benn added"<<endl;
        continue;}//结束本次循环,并判断决定是否执行下一次循环
        else if(menu=='D')
        {
        cout<<"Data has been deleted"<<endl;
        continue;}
        else if(menu=='S')
        {
        cout<<"Data has been sorted"<<endl;
        continue;} 
        else if(menu=='Q')
        break;
    }
    
    return 0;
}

运行结果截图:

2)  switch

#include<iostream>
using namespace std;

//switch
 
int main(){
    
while(1){
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit), Select one:"<<endl;
char menu;    
cin>>menu;
switch(menu){
case 'A':
cout<<"Data has benn added"<<endl;
break;
case 'D':
cout<<"Data has been deleted"<<endl;
break;
case 'S':
cout<<"Data has been sorted"<<endl;
break;
case 'Q':
exit(0);
break;
default://输入了上面没有提及的情况时,出来吆喝一声
cout<<"INPUT ERROR!"<<endl;
break; 
}
} 
    return 0;
}

运行结果截图:同上

2-29

用穷举法找出 1~100 间的质数,显示出来。分别使用 while,do-while,for 循环语 句实现。

1)  while

#include<iostream>
#include<cmath>
using namespace std;

//while

int main(){
    int n=2,flag;
    while(n<101){
    int i=2;
    while(i<=sqrt(n)){
    flag=1;//立一个flag,这里首先假设1~100内所有的数均为质数
    if(n%i==0){
    flag=0;//flag倒了,此次的n不是质数,跳出循环   
    break;
    }
    i++;
}
if(flag)//如果flag没有倒,即这个数跟我们假设的一样,是一个质数,就将它输出
    cout<<n<<" is prime"<<endl;//在这一行之前,如果我加上“cout<<flag<<endl;”,就不能输出正确答案,为什么啊,求解。
    n++;
}
    return 0;}

运行结果截图:

2)do...while

#include<iostream>
#include<cmath>
using namespace std;

//do while

int main(){
    int n=2,flag;
    do{
        flag=1;
        int i=2;
        do{
            if(n%i==0){
                flag=0;
                break;}
                i++;
            }while(i<=sqrt(n));
            if(flag)
            cout<<n<<" is prime"<<endl;
            n++;
    }while(n<101);
    
    return 0; 
}

运行结果截图:同上

3)for

#include<iostream>
#include<cmath>
using namespace std;

//for

int main(){
    int n,flag;
    for(n=2;n<101;n++){
    for(int i=2;i<=sqrt(n);i++){
    flag=1; 
    if(n%i==0){
    flag=0;     
    break;
    }
}
if(flag) 
    cout<<n<<" is prime"<<endl;
}
    return 0;}

 运行结果截图:同上

2-32

 在程序中定义一个整型变量,赋以 1~100 的值,要求用户猜这个数,比较两个数的大 小,把结果提示给用户,直到猜对为止。

1)while

#include<iostream>
#include<stdlib.h> using namespace std; //while int main(){ int n=68;
   int i; cout<<"Guess a number(1~100)"<<endl; while(cin>>i){ if(i>n) cout<<"Need a little bit smaller"<<endl; else if(i<n) cout<<"Need a little bit bigger"<<endl; else{ cout<<"U did it"<<endl; break;} } return 0; }

运行结果截图:

2)do...while

#include<iostream>
#include<stdlib.h> using namespace std; //do while int main(){ int n=68;
int i; cout<<"Guess a number(1~100)"<<endl; do{ cin>>i; if(i>n) cout<<"Need a little bit smaller"<<endl; else if(i<n) cout<<"Need a little bit bigger"<<endl; }while(i!=n); cout<<"U did it"<<endl; return 0; }

运行结果截图:同上

2-34

口袋里有红、黄、蓝、白、黑5种颜色的球若干个,每次从口袋里取出3个不同颜色的球,问有多少种取法

(这个排列组合的我不会(19/3/12),所以去百度了,参考的是这篇博客https://blog.csdn.net/qikaihuting/article/details/70170469)【理不直气也壮??(不是

#include<iostream>
using
namespace std; int fac(int n) { if(n<=1) return 1; else return n*fac(n-1); }//计算n的阶乘,见书p75 3-8 int com(int n,int m) { int temp; if(n<m) { temp=n; n=m; m=temp;} return fac(n)/(fac(m)*fac(n-m)); } /* 以上是排列组合C(n,m)的数学公式。 */ int main() { int a,b,ans; cout<<"Enter the number of the ball & the color u can choose:"<<endl;
/* cin>>a>>b;//一般情况下 ans=comb(a,b);//一般情况下
*/
ans=com(3,5);//对于此题 cout<<"The answer of 2-34 is "<<ans<<endl; return 0; }

运行结果截图:

书上3-9例题

#include<iostream>
using namespace std;

    int comm(int n,int k){
        if(k>n)
        return 0;
        else if(n==k||k==0)
        return 1;
        else 
        return comm(n-1,k)+comm(n-1,k-1);
    }
    
int main(){
int n,k;
cout<<"Enter the number of the ball  & the color u can choose:"<<endl;
cin>>n>>k;
cout<<"C("<<n<<","<<k<<")= "<<comm(n,k)<<endl;
    return 0;
}

实验体会:

1.C++对C有兼容性,所以C学的不扎实的地方要重新看。C++的优势貌似要在比较大的地方才能显现出来。

2.cin>>n之后不能有endl

3.for的循环功能似乎比do while和while强一些

原文地址:https://www.cnblogs.com/kori/p/10513748.html