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

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565【项目4-多文件程序组织】  按《C++程序设计题解与上机指导》P226第15.4节的提示,建立一个包含多个文件的项目,将第12周“项目4-回文、素数”中所做工作用多文件组织起来。其中,main()函数保存在一个文件中,所有自定义函数保存到另外一个文件中,运行程序并得

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





目录
相关文章
|
2月前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
48 5
|
2月前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
WK
|
4月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
190 1
|
5月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
1102 3
|
5月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
56 0
Linux c/c++文件的基本操作
|
6月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
6月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
104 3
|
5月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
109 0
|
5月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
141 0
|
6月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
75 0