實驗1:C++簡單程序設計(1)


實驗目的
1. 掌握c++中類c部分的編程知識: 數據類型,常量,變量,運算符,表達式,分支結構,循環結構
2. 掌握C++中數據輸入和輸出的基本方法
3. 熟練使用c++程序開發環境,掌握c++程序編寫、編譯、運行、調試的方法
實驗准備
實驗前,請圍繞以下內容結合教材、網絡檢索學習指定內容。
1. 開發環境使用 devc++中編寫、運行c++程序的步驟 code::blocks中編寫、運行、調試c++程序的步驟 參考鏈接 vs2017中編寫、運行、調試c++程序的步驟 參考鏈接
2. 簡單的c++程序結構 學習/復習教材「2.1.3 C++程序實例」
3. c++中數據輸入輸出的基本方法
學習/復習教材2.3節,學習C++中I/O流、預定義的插入符<<和提取符>>的基本用法。
4. if語句、switch語句、while語句、do…while語句的用法 學習/復習教材2.4節,通過示例理解背后簡單算法及c++分支語句、循環語句的用法。
5. 自定義數據類型: typedef,枚舉類型用法 學習/復習教材2.5節,結合示例理解枚舉類型和int型在類型轉換時的注意事項。
實驗內容
Part1: 驗證性內容
   在c++開發環境中編寫、編譯、運行、調試一個簡單的c++程序
   運行2.4節所有編程示例,理解c++編程基礎及I/O流對象cin,cout的基本用法
Part2: 編程練習
教材第2章習題2-28     教材第2章習題2-29      教材第2章習題2-32     教材第2章習題2-34

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;
int main(){
    char m;
    while(1)
    {
    cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
    cin>>m;
    if(m=='A')
      cout<<"Data has added"<<endl;
      else if(m=='D')
      cout<<"Data has deleted"<<endl;
      else if(m=='S')
      cout<<"Data has sorted"<<endl;
      else if(m=='Q')
      break;
      else
      cout<<"Data error"<<endl;
      }           
}

運行結果

(2)使用switch語句

#include<iostream> 
using namespace std;
int main(){
    char m;
    while(1){
        cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
        cin>>m;
        if(m=='Q')
          break;
        switch(m){
            case 'A':cout<<"Data has added"<<endl;break;
            case 'D':cout<<"Data has deleted"<<endl;break;
            case 'S':cout<<"Data has sorted"<<endl;break;
            default:cout<<"Data error"<<endl;break;
        }
    }
return 0;
}

運行結果

2-29 用窮舉法找出1~100間的質數並顯示出來。分別使用while,do···while,for循環語句實現。

(1)使用while語句

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    int number=2,i;
    while(number<100){
        i=2;
        while(i<=sqrt(number)&&number%i!=0){
              i++;
        }
        if(i>sqrt(number))
           cout<<number<<" ";
        number++;
    }
    return 0;
}

運行結果

(2)使用do···while語句

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    int number=2,i;
    do{
        i=1;
        do{
           i++;
        }while((i<=sqrt(number)&&number%i!=0));
        if(i>sqrt(number))
           cout<<number<<" ";
        number++;
    } 
    while(number<100);
    return 0;
}

運行結果

(3)使用for語句

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

運行結果

2-32 在程序中定義一個整型變量,賦予1~100的值。要求用戶猜這個數,比較兩個數的大小,把結果提示給用戶,直到猜對為止。分別使用while,do···while語句實現循環。

(1)使用while語句

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
     srand(time(NULL));
     int random_number=rand()%100+6;
     cout<<"Enter the number you guess between 1 and 100:";
     int guess_number;
     cin>>guess_number;
     int wrong=1;
     while(wrong)
     {
         if(random_number>guess_number){
             cout<<"bigger than your guess,guess again:";
             cin>>guess_number;
         } 
        else if(random_number<guess_number){
            cout<<"smaller than your guess,guess again:";
            cin>>guess_number;
        }
        else{
            cout<<"congratulations!Guessed it!"<<endl;
            wrong=0;
        }
    }
     return 0;
} 

運行結果

(2)使用do···while語句

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
     srand(time(NULL));
     int random_number=rand()%100+6;
     cout<<"Enter the number you guess between 1 and 100:";
     int guess_number;
     cin>>guess_number;
     int wrong=1;
     do
     {
         if(random_number>guess_number){
             cout<<"bigger than your guess,guess again:";
             cin>>guess_number;
         } 
        else if(random_number<guess_number){
            cout<<"smaller than your guess,guess again:";
            cin>>guess_number;
        }
        else{
            cout<<"congratulations!Guessed it!"<<endl;
            wrong=0;
        }
    } while(wrong); 
     return 0;
} 

運行結果

2-34口袋中有紅、黃、藍、白、黑5種顏色的球若干。每次從口袋中取出3個不同顏色的球,問有多少種取法?

(1)有序的取法

#include<iostream>
using namespace std;
enum Ball{Red,Yellow,Blue,White,Black};
void transform(int number);
int main(){
    int count=0;
    for(int catch1=Red;catch1<=Black;catch1++)
        for(int catch2=Yellow;catch2<=Black;catch2++)
            for(int catch3=Blue;catch3<=Black;catch3++)
            {
                transform(catch1);
                transform(catch2);
                transform(catch3);
                cout<<endl;
                count++;
            }
    cout<<"There are "<<count<<" ways"<<endl;
    return 0;
} 
void transform(int number){
    switch(number){
        case Red:cout<<"Red ";break;
        case Yellow:cout<<"Yellow ";break;
        case Blue:cout<<"Blue ";break;
        case White:cout<<"White "; break;
        case Black:cout<<"Black";break;
    }
}

運行結果

(2)無序的取法

#include<iostream>
using namespace std;
enum Ball{Red,Yellow,Blue,White,Black};
void transform(int number);
int main(){
    int count=0;
    for(int catch1=Red;catch1<=Black;catch1++)
        for(int catch2=catch1+1;catch2<=Black&&catch2>catch1;catch2++)
            for(int catch3=catch2+1;catch3<=Black&&catch3>catch2;catch3++)
            {
                transform(catch1);
                transform(catch2);
                transform(catch3);
                cout<<endl;
                count++;
            }
    cout<<"There are "<<count<<" ways"<<endl;
    return 0;
} 
void transform(int number){
    switch(number){
        case Red:cout<<"Red ";break;
        case Yellow:cout<<"Yellow ";break;
        case Blue:cout<<"Blue ";break;
        case White:cout<<"White "; break;
        case Black:cout<<"Black";break;
    }
}

運行結果

評論:

https://www.cnblogs.com/zcq1224/p/10544256.html

https://www.cnblogs.com/wmy0621/p/10543834.html

https://www.cnblogs.com/pink-fairy/p/10546289.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM