C++的基本程序结构我们已经学得差不多了。
今天我们要运用先前学习的结构来解决一些问题。
1. 水仙花数问题
要求:设计一个程序,输出所有的水仙花数。所谓水仙花数是一个3位数,其各位数字的立方等于该数本身。例如:153=1^3+5^3+3^3;
提示:使用for,while等来进行枚举(即从000到999)
使用if来进行筛选水仙花数。
参考答案结尾公布。
2. 判断一个数是否是素数(质数)。
提示:使用for,while等来进行枚举它的公因子数
(如输入一个数为i,枚举公因子数= 2到根号(i) )
使用if来进行判断。
这个对初学者理解起来比较难,不过只要认真思考就能搞定的。
参考答案结尾公布。
参考答案:
1. 水仙花数问题
#include<iostream>
#include<math.h>
using namespace std;
void main(void)
{
int i,j,k,l,sl,a[1000];
sl=0;//注意一定要赋值为0,否则sl的初始值是-83………会出错。
for(i=0;i<=9;i++)//用i模拟百位数
{
for(j=0;j<=9;j++)//用j模拟十位数
{
for(k=0;k<=9;k++)//用k模拟个位数
{
l = pow(i,3) +pow(j,3)+pow(k,3) ; //pow(x,3)代x^3
if (l==i*100+j*10+k)
{
sl++;//水仙花数+1
a[sl]=l;//用整数数组把水仙花数存起来
}
}
}
}
cout <<"一个有 "<<sl<<" 个水仙花数"<<endl;
for(i=1;i<=sl;i++) cout<<a[i]<<endl;
}
2. 判断一个数是否是素数。
#include<iostream.h>
#include<math.h>
void main(void)
{
int shu,i;
cout<<"请输入一个数,输出该数是否素数"<<endl;
cin>>shu;
for (i=2;i<=floor(sqrt(shu));i++)//sqrt()开平方函数,floor()是取实数的整数位。
{
if (shu%i == 0)
{
cout<<"这个数不是素数"<<endl;
return;//直接退出程序。
}
}
cout<<"这个数是素数"<<endl;
}