设计C++程序 查找满足特定条件的三位数

来源:百度知道 编辑:UC知道 时间:2024/08/22 09:16:56
1. 目的
通过查找满足特定条件的三位数,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,并对Windows平台下的控制台进行深入的了解。
2. 基本要求
(1) 要求用C++语言编程,在Visual C++环境下调试完成;
(2) 要求划分功能模块,各个功能分别使用函数来完成;
(3) 源代码程序要求必要的注释。
三、设计方法和基本原理
1. 课题功能描述
设计一个能够查找满足特定条件三位数的程序,要求实现的功能包括:找所有满足特定条件的三位数,然后输出
2. 问题详细描述
特定条件:一个三位数的平方是一个六位数字,那么这个三位数和它的平方共有9个数字。要满足这9个数字恰好是1到9,没有重复。
要求编写多个函数分别实现上述功能,而后在main函数中进行调用。
3. 问题的解决方案:
根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。
可以利用穷举法,三位数字的范围就是100到999,对每个数字进行判断。
四、主要技术问题的描述
本程序无特殊的需要说明的技术问题。
五、创新要求
在基本要求达到后,进行创新设计:
1. 使用多文件,即主函数和各个函数分别存放在不同的.cpp文件中,在头文件中进行函数原型声明;
2. 把满足条件进行扩展,例如求一个5位的16进制数,它的平方是个10位的16进制数,恰好包括0x1到0xF这15个数字。此问题的一般性描述为:对于一个3N+1进制数来说,有一个N位的3N+1进制数和它的平方(一个2N位的3N+1进制数),由1到3N组成。
我希望除了有源程序 还有注明解释 简单明了即可 分数会增加得
只能用cin cout

#include <iostream.h>

void main()
{
long buffer[10];
for (long k=100; k<=999; k++)
{
long n = k;
long n2 = k*k;

for (long i=0; i<10; i++)
buffer[i]=0;
while(n>0)
{
buffer[n%10] ++;
n/=10;
}
while(n2>0)
{
buffer[n2%10] ++;
n2/=10;
}

bool okflag = true;
for (i=1; i<10; i++)
{
if (buffer[i]!=1)
{
okflag = false;
break;
}
}
if (okflag)
{
cout << k << " | " << k*k << endl;
}
}
}

执行结果:
567 | 321489
854 | 729316
Press any key to continue

16进制,32位的long 已经不够用了,
所以用了 __int64 是 64位整数。
输出也分2段输出。

void main()
{
long buffer[16];
for (long k=0x10000; k<=0xFFFFF; k++)
{
__int64 n = k;
__int64 n2