实验一:C++简单程序设计

【实验一】

#2-28

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

(1)if...else...语句,break,continue控制     

//2_28.cpp
#include<iostream>
using namespace std;
int main(){
    char x;
    int i;
    char A,D,S,Q;
    cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
    for(;i=1;i++){
        cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
        cin>>x;
        if(x=='A'){
            cout<<"数据已增加"<<endl;
            continue;
        }
         
        else if(x=='D'){
            cout<<"数据已删除"<<endl;
            continue;
        }
         
        else if(x=='S'){
            cout<<"数据已排序"<<endl;
            continue;
        }
        else if(x!='A'&&x!='Q'&&x!='S'&&x!='D'){
            cout<<"输入有误"<<endl;
            continue;
             
        }
        else if (x=='Q')
              break;
        
    }
    
    return 0; 
} 

(2)switch语句

//2_28.cpp
#include<iostream>
using namespace std;
int main(){
    char x;
    char A,D,S,Q;
    cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
    cin>>x;
    for(;x!='Q';){
       switch (x){
           case 'A':
            cout<<"数据已增加"<<endl;
            break;
        case 'D':
            cout<<"数据已删除"<<endl;
            break;
        case 'S':
            cout<<"数据已排序"<<endl;
            break;
        default:
            cout<<"输入错误"<<endl; 
            break;
       }
       cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
        cin>>x;
    }
    return 0; 
} 

#2-29

用穷举法找出1~100间的质数并显示出来。

(1)while语句

//2_29.cpp
    #include<iostream>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    int main(){
        int i=1,n,j,k=1;
        
        while(i<=100){
            n=sqrt(i);
            for(j=2;j<=n;j++){
                if(i%j==0)break;
            }
        if(j>n&&i!=1){
            cout<<setw(5)<<i;
            k++;
            if(k>5){
                cout<<setw(5)<<endl;
                k=1;
            }
        }
        i++;
        }
        return 0;
    }

(2)do...while语句

//2_29.cpp
    #include<iostream>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    int main(){
        int i=1,n,j,k=1;
        
        do{
            n=sqrt(i);
            for(j=2;j<=n;j++){
                if(i%j==0)break;
            }
        if(j>n&&i!=1){
            cout<<setw(5)<<i;
            k++;
            if(k>5){
                cout<<setw(5)<<endl;
                k=1;
            }
        }
        i++;
        }while(i<=100);
        return 0;
    }

(3)for语句

//2_29.cpp
    #include<iostream>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    int main(){
        int i=1,n,j,k=1;
        for(i=1;i<=100;i++){
            n=sqrt(i);
            for(j=2;j<=n;j++){
                if(i%j==0)break;
            }
        if(j>n&&i!=1){
            cout<<setw(5)<<i;
            k++;
            if(k>5){
                cout<<setw(5)<<endl;
                k=1;
            }
        }
        }
        return 0;
    }

#2-32

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

 (1)while语句

//2-32.cpp
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
 int x,n;
 srand( (unsigned)time( NULL ) );
 n=rand()%100+1;
 
  
 cout<<"Enter a number please:";
 
 cin>>x;
 
 while(x!=n){
  
  if(x>n){
   cout<<"smaller than the number"<<endl;
  }
  if(x<n){
   cout<<"bigger than the number"<<endl;
  }
  cout<<"Enter a number please:";
 
 cin>>x;
 if(x==n){
  cout<<"congratulation you guess the number!"<<endl;
  exit(0);
 }
}
 
 return 0;
 
 
}

(2)do-while语句

//2-32.cpp
#include<iostream>
#include<cstdlib> 
#include<ctime>
using namespace std;
int main(){
    int x,n;
    srand( (unsigned)time( NULL ) );
    n=rand()%100+1;
    
        
    cout<<"Enter a number please:";
    
    cin>>x;
    
    do{
        
        if(x>n){
            cout<<"smaller than the number"<<endl;
        }
        if(x<n){
            cout<<"bigger than the number"<<endl;
        }
        cout<<"Enter a number please:";
    
    cin>>x;}while(x!=n);
    if(x==n){
        cout<<"congratulation you guess the number!"<<endl;
    }

    
    return 0;
    
    
}

 

#2-34

口袋中有红黄蓝白黑5种颜色的球若干个。没词葱口袋中取出3个颜色不同的球,问有多少种取法。

(1)无顺序取法(10种)

//2-34.cpp
#include<iostream>
using namespace std;
int main(){
enum num{red,yellow,blue,white,black};
int i,j,k,n=0,h;
for(i=red;i<=black;i++){
    for(j=red+i+1;j<=black;j++){
            for(k=red+j+1;k<=black;k++){
                n++;
                switch(i){
        case 0:cout<<"red"<<ends;break;
        case 1:cout<<"yellow"<<ends;break;
        case 2:cout<<"blue"<<ends;break;
        case 3:cout<<"white"<<ends;break;
        case 4:cout<<"black"<<ends;break;
    }
    switch(j){
        case 0:cout<<"red"<<ends;break;
        case 1:cout<<"yellow"<<ends;break;
        case 2:cout<<"blue"<<ends;break;
        case 3:cout<<"white"<<ends;break;
        case 4:cout<<"black"<<ends;break;
    }
    switch(k){
        case 0:cout<<"red"<<endl;break;
        case 1:cout<<"yellow"<<endl;break;
        case 2:cout<<"blue"<<endl;break;
        case 3:cout<<"white"<<endl;break;
        case 4:cout<<"black"<<endl;break;
    }
        
            }
        
    }
}
    
    cout<<"一共有"<<n<<"种方法"<<endl;
    return 0; 
    
}

(2)有顺序取法(60种)

//2-34.cpp
#include<iostream>
using namespace std;
int main(){
enum num{red,yellow,blue,white,black};
int i,j,k,n=0,h;
for(i=red;i<=black;i++){
    for(j=red;j<=black;j++){
        if(i!=j){
            for(k=red;k<=black;k++){
                if(k!=j&&k!=i){
                n++;
                switch(i){
        case 0:cout<<"red"<<ends;break;
        case 1:cout<<"yellow"<<ends;break;
        case 2:cout<<"blue"<<ends;break;
        case 3:cout<<"white"<<ends;break;
        case 4:cout<<"black"<<ends;break;
    }
    switch(j){
        case 0:cout<<"red"<<ends;break;
        case 1:cout<<"yellow"<<ends;break;
        case 2:cout<<"blue"<<ends;break;
        case 3:cout<<"white"<<ends;break;
        case 4:cout<<"black"<<ends;break;
    }
    switch(k){
        case 0:cout<<"red"<<endl;break;
        case 1:cout<<"yellow"<<endl;break;
        case 2:cout<<"blue"<<endl;break;
        case 3:cout<<"white"<<endl;break;
        case 4:cout<<"black"<<endl;break;
    }
                }
            }
        }
    }
}
    
    cout<<"一共有"<<n<<"种方法"<<endl;
    return 0; 
    
}

【实验总结与体会】

对于此实验一中的各类题使用while do-while switch for 等不同循环结构的使用有了更加清晰的认识,和区别认知。并且掌握了域宽的使用方式。

域宽的头文件为#include<iomanip>,在输出时添加入setw()语句,在括号中填入自己程序的域宽。

实验一中的2-34的枚举类型属于第一次接触,以及实验一中的2-32中的随机数的生成有了系统的认知,并且能运用其在程序中。

随机数使用的是srand rand函数,头文件为#include<ctime>,并且使用srand((unsigned)time(0))或srand((unsigned)time(NULL))srand函数产生一个随机种子运用rand()%max+min进行生成一个随机数,max为最大数,min为最小数。并且当生成double类型的随机数,要声明例如rand()/double(RAND-MAX)。

枚举类型:枚举类型()enum枚举类型名{变量值类型}例如enum colour{red black blue white.......};枚举类型具有默认值,默认按照顺序0,1,2,3........,因此如此题中如果要输出变量值red black等等,需要对其进行强制转型,例如static-cast<int>(x)对x进行转型,本题中我并没有使用此方法,因为我还不太会用。我是用switch函数对其输出为枚举类型。枚举类型的元素是常量,不能对其进行赋值。

评论:https://www.cnblogs.com/1499978329f/p/10540143.html#4210744

https://www.cnblogs.com/AliceMaestra/p/10561811.html#4210748

https://www.cnblogs.com/shy0825/p/10561610.html#4210750

 

posted on 2019-03-16 21:15  山海yyqx  阅读(391)  评论(7编辑  收藏  举报