zoukankan      html  css  js  c++  java
  • 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强一些

  • 相关阅读:
    PHP通过日志来发现问题
    php环境重启
    排行榜的实现
    git相关使用技巧和问题
    lua State加载部分库
    c++ 解析json
    查看某个进程允许打开的最大文件描述符
    glog安装与使用
    ubuntu update-alternatives
    gcc安装多个版本
  • 原文地址:https://www.cnblogs.com/kori/p/10513748.html
Copyright © 2011-2022 走看看