【C/C++】對於編寫程式的思維,一個感悟

2020-08-08 20:37:12

編寫程式:1到 100 的所有整數中出現多少次數位9

首先,我想着可以考慮通過字串查詢匹配,強制型別轉換來做,然而沒有成功,可能是因爲現在還是初級水平的原因吧。然後去萬能的百度上看了一下,換了種思路寫:

int i = 0;
 for (i=0; i < 100; i++)
 {
 	 if ((i % 10 == 9) || ((i / 10) == 9))
  	 printf("%d  ",i);
 }

這是正確的程式。這段程式碼沒有單純的讓計算機去執行一個機械的比對操作,它是通過題目中的數學邏輯來確定演算法思路。
終於理解爲什麼程式設計師都愛掉頭髮了,確實程式設計中有一些機械重複的搬磚工作,但當要解決一個問題時,需要運用到數學知識,演算法,問題本身的個性化特點等方方面面大膽千方百計的去解決它。
這個過程不是粗暴的機械動作,而是需要細心觀察,邏輯思考,消耗大量的腦力,使得程式攜帶着自己的思維,解法。
用C++解決該問題的程式碼:

#include<iostream>
using namespace std;
class OprateNum
{
public:
void InitNum()
{
  	for (int i = 0; i < 101; i++)
 	 {
  		 num[i] = i;
  	}
}
void Display()
{
  for (auto ele : num)
  {
   	cout << ele << ' ';
  }
  cout << endl;
}
void find9()
{
  for (auto ele : num)
  {
  	 if ((ele % 10 == 9) || ((ele / 10) == 9))
    	cout << ele << ' ';
  }
  cout << endl;
}
private:
 	int num[101];
};
void main()
{
 	OprateNum Num;
	Num.InitNum();
	Num.Display();
 	Num.find9();
}