课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565
【项目4-多文件程序组织】
按《C++程序设计题解与上机指导》P226第15.4节的提示,建立一个包含多个文件的项目,将第12周“项目4-回文、素数”中所做工作用多文件组织起来。其中,main()函数保存在一个文件中,所有自定义函数保存到另外一个文件中,运行程序并得到正确的结果,体会在实际的工程项目中(有很多的函数)这样组织程序的好处。
参考解答
(1)在一个文件中存放main()函数
//main.cpp
#include <iostream>
using namespace std;
//自定义函数的原型(即函数声明),函数定义在另一个文件中
bool isPrime(int n); //n是素数,返回true,否则返回false
bool isPalindrome(int n); //n是回文数,返回true,否则返回false
int reverseNum(int n); //返回n的逆序数
//main()函数单独定义,main()函数是程序执行的入口,其实它只起调用自定义函数的作用
//开发系统时,就是在生产自定义函数,用自定义函数实现功能
//main()函数也经常用作(或称作为)测试入口
int main()
{
int m;
cout<<"(1)输出10000以内的所有素数"<<endl;
for(m=2;m<10000;++m)
{
if(isPrime(m))
cout<<m<<'\t';
}
cout<<endl<<endl;
cout<<"(2)输出10000以内的所有回文数"<<endl;
for(m=2;m<10000;++m)
{
if(isPalindrome(m))
cout<<m<<'\t';
}
cout<<endl<<endl;
cout<<"(3)输出10000以内的所有回文素数"<<endl;
for(m=2;m<10000;++m)
{
if(isPalindrome(m)&&isPrime(m))
cout<<m<<'\t';
}
cout<<endl<<endl;
cout<<"(4)求10000以内的所有可逆素数"<<endl;
for(m=2;m<10000;++m)
{
if(isPrime(m)&&isPrime(reverseNum(m)))
cout<<m<<'\t';
}
return 0;
}
(2)在另一个文件中存放其他自定义函数,这是我们的“产品”
//functions.cpp
#include<cmath> //在这一个文件中用到cmath中的函数sqrt,所以#include<cmath>在此
bool isPrime(int n)
{
bool prime=true;
int k=int(sqrt(n));
for(int i=2;i<=k;i++)
{
if(n%i==0)
{
prime=false;
break;
}
}
return prime;
}
bool isPalindrome(int n)
{
bool palindrome=false; //先默认不是回文数
int m,k;
m=n;
k=0;//k用于求出n的反序数
while(m>0)
{
k=k*10+m%10;
m=m/10;
}
if(k==n)
palindrome=true;
return palindrome;
}
int reverseNum(int n)
{
int k;
k=0;//k用于求出n的反序数
while(n>0)
{
k=k*10+n%10;
n=n/10;
}
return k;
}