实验2

实验结论

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

(1)使用if...else语句进行判断。

#include <iostream>
using namespace std;
int main() {
    char n;
    cout << "Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"<<endl;
    cin>>n;
    while(n!='Q'){
        if (n=='A'){
            cout<<"数据已经增加"<<endl;
            cin>>n;
            continue;}
        else if (n=='D'){
            cout<<"数据已经删除"<<endl;
            cin>>n;
            continue;}
        else if (n=='S'){
            cout<<"数据已经排序"<<endl;
            cin>>n;
            continue;}
        else {
            cout<<"请输入A、D、S、Q,输入Q时退出程序!"<<endl;
            cin>>n;
            continue;}
    }
    return 0;
}

运行结果:

(2)使用switch语句。

#include <iostream>
using namespace std;
int main() {
    char n;
    cout<< "Menu: A(dd) D(elete) S(ort) Q(uit),Select one:"<<endl;
    cin>> n;
    while(n!='Q'){
       switch(n){
         case 'A':
            cout<<"数据已经添加"<<endl;
               break;
         case 'D':
             cout<<"数据已经删除"<<endl;
               break;
         case 'S':
             cout<<"数据已经排序"<<endl;
               break;
        default:
               cout<<" 请输入A、D、S、Q,输入Q时退出程序!"<<endl;
       }cin>> n;
    }
    return 0;
}

运行结果:

2-29 用穷举法找出1——100间的所有质数并显示出来。

(1)用for循环

#include <iostream>
using namespace std;
int main() {
    int a,i;
    for(a=2;a<=100;a++)
    {
        for(i=2;i<a;i++)
        {
            if(a%i==0)
            break;
        }
            if (i==a)
            cout << a <<" " ;
        
    }
        return 0;
}

(2)用while循环

#include <iostream>
using namespace std;
int main() {
    int i,a=2;
    while (a<=100)
    {
      i=2;
     while(i<a)
      {
        if (a%i==0)
            break;
            i++;
      }
        if (a==i)
            cout << a <<" " ;
        a++;
    }
    return 0;
}

(3)用do...while循环。

#include <iostream>
using namespace std;
int main() {
    int a=1,i;
    do{
        a++;
        i=1;
       do{
            i++;
            if (a%i==0)
            break;
         }while(i<a);
      
        if (a==i)
        cout << a <<" " ;
        
    }while(a<100);
    return 0;
}

运行结果:

  • 判断一个数为质数:用该数除以1外的每一个比它小的正整数,如果能整除,则为合数;如果都不能整除,则为质数。

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

(1)用while循环

#include <iostream>
using namespace std;
int main() {
    int i=59,m;
    cout << "猜猜这个数是多少?(在1——100之间)"<<endl;
    cin>>m;
    while (m){
        if (i<m)
            cout <<"您猜的值太大了"<<endl;
        else if (i>m)
            cout <<"您猜的值太小了"<<endl;
        else
        {
            cout <<"恭喜您,猜对了!"<<endl;
            break;
            
        }
     cin>>m;
    }
    return 0;
}

(2)用do...while循环

#include <iostream>
using namespace std;
int main() {
    int i=59,m;
    cout << "猜猜这个数是多少?(在1——100之间)"<<endl;
    do {
        cin>>m;
        if (i<m)
            cout <<"您猜的值太大了"<<endl;
        else if (i>m)
            cout <<"您猜的值太小了"<<endl;
        else break;
    }while (i!=m);
     
      cout <<"恭喜您,猜对了!"<<endl;
    return 0;
}

运行结果:

2-34 口袋中有红、黄、蓝、白、黑五种颜色的球若干,每次从口袋中取出3个球,问有多少种取法?

#include <iostream>
using namespace std;
int main() {
    enum color {red,yellow,blue,white,black};
    int i,j,k,n=0;
    for (i=red;i<=black;i++)
    {
        for (j=red;j<=black;j++)
        {
            if(i!=j)
               for(k=red;k<=black;k++)
               {
                    if (k!=i&&k!=j)
                        n+=1;
               }
        }
            
    }
    cout << "total:"<<n<<endl;
    return 0;
}

运行结果:

  • 思路:按红、黄、蓝、白、黑的顺序取出第一个球,按红、黄、蓝、白、黑的顺序取出第二个球。判断与第一个球与第二个球颜色是否一致,如果不同,则按红、黄、蓝、白、黑的顺序取出第三个球,判断第三个球的颜色是否和第一个或者第二个相同。若都不同,则在总数上加1.

实验总结与体会

  • 在实验2-29中,我将i++写在了while循环外,导致运行结果无限循环输出2.
  • 在实验2-34中,我一开始写的代码如下,输出的结果是30,我一直没想明白错在哪里,求指教
#include <iostream>
using namespace std;
int main() {
    enum color {red,yellow,blue,white,black};
    int i,j,k,n=0;
    for (i=red;i<=black;i++)
    {
        for (j=red;j<=black;j++)
        {
           if(i==j)
               break;
            else 
               for(k=red;k<=black;k++)
               {
                    if (k!=i&&k!=j)
                        n+=1;
               }
        }
            
    }
    cout << "total:"<<n<<endl;
    return 0;
}
posted on 2018-03-25 23:29  半醉未央  阅读(215)  评论(7编辑  收藏  举报