您的位置:首页 > 编程语言 > C语言/C++

C++第13周项目4——多文件组织回文、素数

2012-11-23 05:51 330 查看
课程首页地址:/article/1353502.html

【项目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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: