又断更了几天,继续反思,下面继续学习。在所有的语言在学了几节课后最常见的问题就是水仙花数问题
题目1:水仙花数
输出所有的“水仙花数”,什么是水仙花数呢?所谓的水仙花数就是指一个3位数,其各个位数字的立方和等于该数本身。立方大家都知道吧,比如2的立方就是 2x2x2=8。例如:153就是一个水仙花数
#include <iostream>
using namespace std;
#define Apple_Price 5
int main()
{
int x = 100, sum = 0;
cout << "有以下水仙花数 = " << sum << endl;
for ( x = 100; x <= 999; ++x)
{
sum = (x / 100) ^ 3 + (x % 100 / 10) ^ 3 + (x % 10) ^ 3;
if (sum==x)
cout << x <<"/n" <<endl;
}
system("pause");
return 0;
}
第一遍码出上面的代码,但是只输出0
输出sum的值发现很小,全部都在0-15的范围,突然想到原因是C++不能用^表示次方,需要使用pow这个函数,并且要调用头文件#include<math.h>。
正确的程序如下图。
#include <iostream>
using namespace std;
#include<math.h>
int main()
{
int x = 100, sum = 0;
cout << "有以下水仙花数 = "<< endl;
for ( x = 100; x <= 999; ++x)
{
sum = pow(x / 100, 3) + pow((x % 100) / 10,3)+ pow((x % 10),3);
if (sum == x)
{
cout << x << endl;
}
}
system("pause");
return 0;
}
当然也有其他的思路,可以有不一样的设计方法。
题目2:打印星号图案
输出以下图案:
*
***
*****
*******
*****
***
*
比较简单一遍通过就不说了,直接上代码
#include <iostream>
using namespace std;
#include<math.h>
int main()
{
int x = 1, sum = 0,m=0;
for ( x = 1; x <= 7; ++x)
{
if (x <= 3)
{
m = x;
}
else
{
m = 7 - x;
}
for (int i = 1; i <= 2 * m - 1; ++i)
{
cout << "*";
}
cout << endl;
}
system("pause");
return 0;
}
程序结果