编写程序: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();
}