iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
自我挑戰組

C語言與C++語言自學系列 第 26

C語言與C++語言自學第二十六天

  • 分享至 

  • xImage
  •  

C語言兩顆骰子點數和出現次數統計的練習

模擬擲10000次公正的骰子,每次擲2顆,統計各種點數和出現的次數,下程式碼

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    srand(time(0));
    int counter[11]={0};
    int i;
    for(int i=0;i<=10000;i++)
    {
        int dice1=rand()%6+1;
        int dice2=rand()%6+1;
        int sum=dice1+dice2;
        counter[sum-2]++;
    }
    for(i=2;i<=12;i++)
    {
        printf("%d: %d\n", i, counter[i-2]);
    }
    return 0;
}

上面的程式碼中我們要使用陣列來儲存兩個骰子輸入的值,main函示中我們先輸入srand(time(0))我們讓程式產生隨機亂數,接著我們宣告一個counter[11]={0}這個counter裡面有12的元素,因為counter是從0 1 2...開始算的因為我們兩個骰子所以最大值是12也就是counter[11],然後我們讓12個元素每個值先都等於0,for迴圈裡讓他從1開始跑,骰10000次所以i小於等於10000,接著一直加1就是i++,接著繼續宣告兩的變數dice1和dice2套用擲骰子的公式,最後counter[sum-2]為什麽要減2呢,因為兩的最小的骰子值加起來是2,最後我們在用一個for迴圈跑12次printf印出骰子點數和出現次數,就是我們要的結果了

C++語言物件導向多載二元算子

二元運算子可以多載成具有一個參數的非static成員函示,或具有兩個參數的非成員函示其中一個參數必須是屬於該類別的物件或指向該類別物件的參考,非成員函式為了效能原因,通常將其宣告為類別的夥伴函式,下程式碼

#ifndef Phonenumber_H
#define Phonenumber_H

#include <iostream>
#include <string>

class PhoneNumber
{
    friend std::ostream &operator<<(std::ostream &, const PhoneNumber &);
    friend std::istream &operator<<(std::istream &, PhoneNumber &);

    private:
    std::string areaCode;
    std::string exchange;
    std::string line;
};
#endif

上面的程式碼我們使用串流插入運算子<<串流擷取運算子>>,來處理基礎資料型態的輸出和輸入,C++類別函式庫將這些運算子多載,使其可以處理每一種基礎資料型態,包括指標和char*字串,就是我們要輸出東西的類別了


上一篇
C語言與C++語言自學第二十五天
下一篇
C語言與C++語言自學第二十七天
系列文
C語言與C++語言自學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言