课程首页地址: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; }