iT邦幫忙

2022 iThome 鐵人賽

DAY 30
1
Software Development

C語言與C++語言系列 第 30

C語言與C++語言第三十天

  • 分享至 

  • xImage
  •  

C語言畫數字統計的長條圖

讓使用者輸入10個1到100間的整數後,畫出以10分為該區間的長條圖,我們可以用C語言來表達,下程式碼

#include <stdio.h>
int main()
{
    int i,j,n,b[10]={0};
    for(i=1;i<=10;i++){
        scanf("%d", &n);
        b[(n-1)/10]++;
    }
    for(i=1;i<=10;i++){
        printf("%3d", i*10);
        for(j=1;j<=b[i-1];j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

上面的程式碼中我們首先宣告四個變數i j n b[10],我們讓使用者輸入10個整數介於1到100之間以10為界線,介於1到10之間數有幾個就印出幾個*星星,b[10]={0}讓其中10個元素初始值設為0,for迴圈i從1開始,i跑10次,i++就是i+1,讓鍵盤輸入n,b[n-1]/10就是讓1到10對應到哪個區間的數在除10就知道對應的編號,例如1到10 n-1 1-1就變成0到9區間的值了在除以10就對應到編號0就知道要印出幾個*星星了,下圖可以說明

1-10   0-9    0
11-20  10-19  1
21-30  20-29  2
31-40  30-39  3
41-50  40-49  4
51-60  50-59  5
61-70  60-69  6
71-80  70-79  7
81-90  80-89  8
91-100 90-100 9

接著繼續介紹程式,第二個for迴圈也是從1跑到10,printf的%3d因為我們C語言有個特殊能力就是格式化我們%3d就會空出3格不夠的就會自動補上就能對齊了,接著我們將i編號乘以10就能顯示出數字,我們第三個for迴圈j從1開始印,j<=b[i-1]為甚麼b[i-1]呢因為我們要的是他計數器的編號,我們就能印出*星星,最後並且換行就能印出我們輸入10個1到100之間的整數我們畫出該以10為該區間的長條圖了

C++語言物件導向

 #ifndef COMMISSION_H
 #define COMMISSION_H
 #include <string> 
 using std::string;
 
 class CommissionEmployee
 {
  public:
  CommissionEmployee( const string &, const string &, const string &,
  double = 0.0, double = 0.0 );

  void setFirstName( const string & ); 
  string getFirstName() const; 

  void setLastName( const string & ); 
  string getLastName() const; 

  void setSocialSecurityNumber( const string & );
  string getSocialSecurityNumber() const; 

  void setGrossSales( double ); 
  double getGrossSales() const; 
  void setCommissionRate( double ); 
  double getCommissionRate() const; 

  double earnings() const; 
  void print() const; 
  private:
  string firstName;
  string lastName;
  string socialSecurityNumber;
  double grossSales;
  double commissionRate; 
}; 
#endif 

上面的程式碼中我們從衍生別物件呼叫基本類別的函示,基本類別指標、衍生類別指標指向基本類別物件、衍生類別物件的三種方法,前面兩種方法比較直接,利用基本類別的指標指向基本類別物件並呼叫基本類別功能,而衍生類別的指標則用於指向衍生類別物件,Commission的類別定義中,我們先宣告他的public公有的有什麼,把他的建構子設好setFirstName名setLatName姓...等等,私有的private設好,最後記得;和#endif才表示把類別class定義結束
這邊非常謝謝IT邦幫忙舉辦這次30天的活動讓我們這30天過的相當充實,不斷的複習舊的與新的C C++,也達到當初設定的目標了解C語言和C++語言的差別,以及讓C++學習到物件導向的目標,雖然C語言沒有物件導向但我覺的他也些概念很像物件導向的概念,30天說長不長說短不短,謝謝IT邦幫忙也謝謝自己達成了挑戰!


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

尚未有邦友留言

立即登入留言