實驗1 C++基礎

來源:互聯網
上載者:User

1.實驗目的和要求

目的:快速掌握C++語言編程的方法,瞭解C++的增強功能,主要內容有:(1)輸入資料流、輸出資料流的使用;(2)重載、預設參數;(3)引用;(4)new和delete運算子分配記憶體。

2.實驗內容:

(1)       編寫一個用輸入和輸出資料流運算子進行的輸入和輸出的程式。從鍵盤輸入兩個數,分別對兩個數進行加,減,乘和除的運算。並輸出計算結果,如: 23+123=146。

 

#include<iostream>using namespace std;int main(){    double a,b;    cout<<"輸入兩個數"<<endl;    cin>>a>>b;    cout<<"a+b="<<(a+b)<<endl;    cout<<"a-b="<<(a-b)<<endl;    cout<<"a*b="<<(a*b)<<endl;    if(b==0)        cout<<"ERROR,除數不能為0"<<endl;    else        cout<<"a/b="<<(a/b)<<endl;    return 0;}

 

 

(2)       用new和delete運算子動態分配記憶體空間的方法編寫程式。從鍵盤輸入3´3整型數組的資料,並計算出所有元素之和,列印出最大值和最小值。輸入輸出要用流運算子實現。

 

#include<iostream>using namespace std;int main(){    int **a=(int**)new int*[3];//申請空間    for(int i=0;i<3;i++)        a[i]=new int[3];//申請行空間    cout<<"輸入9(3*3)個整數"<<endl;    for(int i=0;i<3;i++)        for(int j=0;j<3;j++)            cin>>a[i][j];    int max=a[0][0],min=a[0][0],sum=0;    for(int i=0;i<3;i++)        for(int j=0;j<3;j++)        {            sum+=a[i][j];            if(max<a[i][j])                max=a[i][j];            if(min>a[i][j])                min=a[i][j];        }    cout<<"sum="<<sum<<endl;    cout<<"max="<<max<<endl;    cout<<"min="<<min<<endl;    delete []a;}

 

(3)       編寫C++風格的程式,解決百錢問題:將1元人民幣兌換成1,2,5分的人民幣,有多少種換法?

 

#include<iostream>using namespace std;int main(){    int i,j,k;    int count=0;    for(i=0; i*5<=100; i++)        for(j=0; j*2<=100; j++)            for(k=0; k<=100; k++)            {                if(i*5+j*2+k==100)                {                    cout<<"5 fen:"<<i<<" 2 fen:"<<j<<" 1 fen:"<<k<<endl;                    count++;                }            }    cout<<"共有閱換方法 "<<count<<" 種"<<endl;    return 0;}

 

 

(4)       在主函數中定義2個整型元素a,b,用引用作函數參數的方法,在函數void swap(int & x, int & y)中實現將資料交換存放,並在主函數中列印出來。

 

#include<iostream>using namespace std;void swap(int &x,int &y)//函數形參為引用{    int temp;    temp=x;    x=y;    y=temp;}int main(){    int a=5,b=10;    int &x=a,&y=b;//引用聲明是必須進行初始化    cout<<"a="<<a<<" b="<<b<<endl;    cout<<"After swap"<<endl;    swap(x,y);    cout<<"a="<<a<<" b="<<b<<endl;    return 0;}

 

(5)       假設我們班有50名同學,每個同學都報出自己的生日, 每個同學的生日都不相重的機率只有0.0296,如果有100個同學,不相重的機率為3.0725´10-7。相重複的機率如此之大與我們主觀想象不同。寫一個程式,輸入同學的人數n計算出其生日不重複的機率。然後在用彷真的方法, 利用隨機數產生每個同學的生日,計算出生日不重複的機率並與前面的結果進行比較。

    [學生的生日可以用隨機數產生,rand()產生0—32767之間的偽隨機數,因為此需要一個種子,種子不同產生的隨機數列不同,rand()產生的隨機數也不同,可以調用srand(longint *)函數設定種子,比如我們可以獲得電腦中的時間獲得隨機數種子, 以上函數需要包含標頭檔 stdlib.h] 

 

#include<iostream>#include<stdlib.h>//使用rand()所需標頭檔using namespace std;int Judge(int *a,int n)//判斷生日是否有重複的{    for(int i=0;i<n;i++)        for(int j=i+1;j<n;j++)        {            if(a[i]==a[j])                return 1;        }    return 0;}int main(){    int n;    cout<<"輸入同學人數"<<endl;    cin>>n;    int *birthday=new int[n];    long times=1000000;    double count=0;    for(int k=0;k<times;k++)    {        for(int i=0; i<n; i++)        {            birthday[i]=rand()%365+1;//隨機產生生日        }        count+=Judge(birthday,n);    }    cout<<"生日不重複的機率為:"<<1-(count/times)<<endl;}

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.