为了感谢大家喔再发一贴 问题还一样希望高手们用最简单的程序解答,我真的是个大菜鸟,我们的课程就学了C++的一半而且我不是计算机专业的!希望大家再次支持

wwbsb 2009-06-17 07:39:08
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组成。

请高手们用最简单易懂的程序编写 ,我真的很笨!
...全文
106 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiejhzwrgcky 2009-06-18
  • 打赏
  • 举报
回复
UP
短腿的兔子 2009-06-18
  • 打赏
  • 举报
回复
#include<iostream>
#include<stdio.h>
#include<set>
using namespace std;

int main()
{
int flag=0;
int i=100;

set<int> s;

for(i=100;i!=1000;++i)
{

s.insert((i/100));
s.insert((i%100/10));
s.insert((i%10));
s.insert(((i*i)/100000));
s.insert(((i*i)%100000/10000));
s.insert(((i*i)%10000/1000));
s.insert(((i*i)%1000/100));
s.insert(((i*i)%100/10));
s.insert(((i*i)%10));



if(s.count(1)&&s.count(2)&&s.count(3)&&s.count(4)&&s.count(5)&&s.count(6)&&s.count(7)&&s.count(8)&&s.count(9)&&!s.count(0))
flag=1;
else
{
flag=0;

}
if(flag==1)


{
cout<<i<<" "<<i*i<<endl;

}
s.erase(s.begin(),s.end());

}

system ("pause");
return 0;
}




简单点的程序
Wolf0403 2009-06-18
  • 打赏
  • 举报
回复
where's your thinking
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hikaliv 的回复:]
我是学通信工程的……
[/Quote]
我是学无线通信的
字云逸 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wwbsb 的回复:]
你的建议对我很有帮助 我的确也认真学了C语言 但你真的想象不到我们学的东西有多可怜 我们学的东西实在是太少了 这道题对于我们所学的东西来说能力相当于让一个初中生去考大学4级,但话说回来基础的东西我还是有的只不过我们真的学的太少了#include <iostream>
using namespace std;
int CheckNumber(int number);
int CheckNumber(int number)
{ int A[10]={0,1,2,3,4,5,6,7,8,9};
int d_number=number…
[/Quote]

看了一下,错误在于CheckNumber()里的for循环,i的作用域只在for里,把i声明在函数内而不声明在for里程序就能运行并得到正确的答案.当然我这是在C-Free里编译的,用的是MinGW (old)编译器.

引用24楼的注释:

#include <iostream>

using namespace std; //导入名称空间std,因为下面要使用到std中cout对象,也可以使用using std::cout; 或者在使用cout的地方加前缀,即std::cout;

int CheckNumber(int number); // 这是函数的原型,number为传入函数的参数,返回一个int数据

int CheckNumber(int number) // 以下是函数的具体定义
{
int A[10]={0,1,2,3,4,5,6,7,8,9}; // 定义个int的数组,共有10个元素,并将其值初始化为0-9
int d_number = number * number; // 计算参数的平方
int b;
int i;

do
{
b = number % 10; // 求10的余数,即得到number的个位数的值
number = number / 10; //去掉number的个位数:除以10并去掉可能的小数位(因为number是int类型,所以如果没有被10尽除,小数位将在自动类型转换时丢弃)
if ( A[b] != 0) // 检查个位数的值对应数组中的数字,如果不是0表示未出现过
A[b]=0; // 将其置0,表示已经出现了这个数字
else
return 0; // 如果是0,表示已经出现了这个数字,重复!肯定不满足条件,退出函数,返回0
} while (number != 0); // number=0退出循环,即number的每个位数都处理完毕了

do //原理和上面的循环一样,检查的数组是其平方值即d_number的各个位数
{
b = d_number % 10;
d_number = d_number / 10;
if (A[b] != 0)
A[b] = 0;
else
return 0;
} while (d_number != 0);

for (i = 1; i < 10; ++i) // 这个循环检查数组中所有的值是否0,如果都是0,则退出循环时i=10,即遍历了所有10个数
{
if (A[i] != 0)
break; // 如果不是0,则退出循环
}
if (i < 10) //如果遍历了10个数,即表示满足条件
return 0; // 不满足条件,退出函数,返回0
else
return 1; // 满足条件,退出函数,返回1
}

int main()
{
cout << "满足条件的数字为:" << endl;
for(int i=100; i < 1000; i++) // 循环,检查100-999的所有数字
{
if(CheckNumber(i)) //调用函数检查当前数字i
cout << i << endl; //满足条件则显示该数字
}
cout << "输出完毕!" << endl;
//getchar(); // 等待一个按键,相当于暂停一下,以便查看结果
return 0;
}
SimonYeung 2009-06-17
  • 打赏
  • 举报
回复
jf
光宇广贞 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 v2sun 的回复:]
引用 9 楼 hikaliv 的回复:
我是学通信工程的……


通信工程的大几呀?
[/Quote]
刚毕业。
Sou2012 2009-06-17
  • 打赏
  • 举报
回复
帮顶!!!
wlwshang 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wwbsb 的回复:]
#include <iostream>
using namespace std;
int CheckNumber(int number);
int CheckNumber(int number)
{ int A[10]={0,1,2,3,4,5,6,7,8,9}; //这个算法太牛了!不服不行。
int d_number=number…
[/Quote]
lzh9955 2009-06-17
  • 打赏
  • 举报
回复
关注!
点墨 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hikaliv 的回复:]
我是学通信工程的……
[/Quote]
通信工程的大几呀?
pathuang68 2009-06-17
  • 打赏
  • 举报
回复
顶!
坚持就是幸福 2009-06-17
  • 打赏
  • 举报
回复
直接要代码,貌似不行的吧。
gleen 2009-06-17
  • 打赏
  • 举报
回复
顶楼上的
wwbsb 2009-06-17
  • 打赏
  • 举报
回复
要是能给再多分的话 我全给了大家
wwbsb 2009-06-17
  • 打赏
  • 举报
回复
567和854
wwbsb 2009-06-17
  • 打赏
  • 举报
回复
哥哥啊 我要是学计算机专业的话 我天天抱着10本计算机专业的书看也没问题 但我学的不是计算机啊 我主攻的是电磁电机电力运输电子芯片方面的啊 我哪有那么多时间去整C++我又不修双学位
lixing01 2009-06-17
  • 打赏
  • 举报
回复
/*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组成。 */

#include "stdafx.h" // VC编译器预编译必须的头文件,我的编译器是VC2003
#include <iostream>

using namespace std; //导入名称空间std,因为下面要使用到std中cout对象,也可以使用using std::cout; 或者在使用cout的地方加前缀,即std::cout;

int CheckNumber(int number); // 这是函数的原型,number为传入函数的参数,返回一个int数据

int CheckNumber(int number) // 以下是函数的具体定义
{
int A[10]={0,1,2,3,4,5,6,7,8,9}; // 定义个int的数组,共有10个元素,并将其值初始化为0-9
int d_number = number * number; // 计算参数的平方
int b;

do
{
b = number % 10; // 求10的余数,即得到number的个位数的值
number = number / 10; //去掉number的个位数:除以10并去掉可能的小数位(因为number是int类型,所以如果没有被10尽除,小数位将在自动类型转换时丢弃)
if ( A[b] != 0) // 检查个位数的值对应数组中的数字,如果不是0表示未出现过
A[b]=0; // 将其置0,表示已经出现了这个数字
else
return(0); // 如果是0,表示已经出现了这个数字,重复!肯定不满足条件,退出函数,返回0
} while (number != 0); // number=0退出循环,即number的每个位数都处理完毕了

do //原理和上面的循环一样,检查的数组是其平方值即d_number的各个位数
{
b = d_number % 10;
d_number = d_number / 10;
if (A[b] != 0)
A[b] = 0;
else
return(0);
} while (d_number != 0);

for (int i = 1; i < 10; i++) // 这个循环检查数组中所有的值是否0,如果都是0,则退出循环时i=10,即遍历了所有10个数
{
if (A[i] != 0)
break; // 如果不是0,则退出循环
}
if (i < 10) // 如果遍历了10个数,即表示满足条件
return(0); // 不满足条件,退出函数,返回0
else
return(1); // 满足条件,退出函数,返回1
}

int main()
{
cout << "满足条件的数字为:" << endl;
for(int i=100; i < 1000; i++) // 循环,检查100-999的所有数字
{
if CheckNumber(i)) //调用函数检查当前数字i
cout << i << endl; //满足条件则显示该数字
}
cout << "输出完毕!" << endl;
getchar(); // 等待一个按键,相当于暂停一下,以便查看结果
return(0);
}


//以上的程序放在一个文件中的,多文件如下组织:



//==========================================================================================================文件1
//定义头文件名称为myheadfile.h,并将头文件放到工作目录下
int CheckNumber(int number); // 文件内容只有一个语句,即函数原型

//==========================================================================================================文件2
#include "stdafx.h" // VC编译器预编译必须的头文件,我的编译器是VC2003
#include "myheadfile.h" // 把自己的头文件包含进来,因为这个案例很简单,函数定义中没有使用const常量或其他函数,所以这儿不包含也没有关系

//定义函数的定义文件func.cpp,即确定函数的具体代码,完成该cpp文件后需要加入到项目中以便链接产生最终执行程序
int CheckNumber(int number) // 以下是函数的具体定义
{
int A[10]={0,1,2,3,4,5,6,7,8,9}; // 定义个int的数组,共有10个元素,并将其值初始化为0-9
int d_number = number * number; // 计算参数的平方
int b;

do
{
b = number % 10; // 求10的余数,即得到number的个位数的值
number = number / 10; //去掉number的个位数:除以10并去掉可能的小数位(因为number是int类型,所以如果没有被10尽除,小数位将在自动类型转换时丢弃)
if ( A[b] != 0) // 检查个位数的值对应数组中的数字,如果不是0表示未出现过
A[b]=0; // 将其置0,表示已经出现了这个数字
else
return(0); // 如果是0,表示已经出现了这个数字,重复!肯定不满足条件,退出函数,返回0
} while (number != 0); // number=0退出循环,即number的每个位数都处理完毕了

do //原理和上面的循环一样,检查的数组是其平方值即d_number的各个位数
{
b = d_number % 10;
d_number = d_number / 10;
if (A[b] != 0)
A[b] = 0;
else
return(0);
} while (d_number != 0);

for (int i = 1; i < 10; i++) // 这个循环检查数组中所有的值是否0,如果都是0,则退出循环时i=10,即遍历了所有10个数
{
if (A[i] != 0)
break; // 如果不是0,则退出循环
}
if (i < 10) // 如果遍历了10个数,即表示满足条件
return(0); // 不满足条件,退出函数,返回0
else
return(1); // 满足条件,退出函数,返回1
}

//==========================================================================================================文件3
//创建项目,main函数文件
#include "stdafx.h" // VC编译器预编译必须的头文件,我的编译器是VC2003
#include <iostream>
#include "myheadfile.h" // 把自己的头文件包含进来

using namespace std; //导入名称空间std,因为下面要使用到std中cout对象,也可以使用using std::cout; 或者在使用cout的地方加前缀,即std::cout;

int main()
{
cout << "满足条件的数字为:" << endl;
for(int i=100; i < 1000; i++) // 循环,检查100-999的所有数字
{
if CheckNumber(i)) //调用函数检查当前数字i
cout << i << endl; //满足条件则显示该数字
}
cout << "输出完毕!" << endl;
getchar(); // 等待一个按键,相当于暂停一下,以便查看结果
return(0);
}
lixing01 2009-06-17
  • 打赏
  • 举报
回复
我也是正在自学c++,c++ primer plus看了一半,这个题目都是很基本的内容,自己找本书仔细看一下,是可以完成的,用心用时间就可以
  • 打赏
  • 举报
回复
写了一个。但是没有搜索到合适的数,是我代码不对,还是你的题目本身就没有合适的解,你能给个符合条件的数让我看看吗?


int dec(int num,int *res)
{
int i=0;
while(num>0)
{
res[i++]=num%10;
num/=10;
}
return i;
}


int main ()
{
int i,j,num,i2,bit_map[10]={0};
int res[10]={0};
bool sign;
for(i=100;i<1000;++i)
{
sign=true;
i2=i*i;
i2=i2*1000+i;
num=dec(i2,res);
for(j=0;j<num;j++)
{
if(bit_map[res[j]]==0)
bit_map[res[j]]=1;
else
{
//cout<<i<<"*"<<i2<<endl;
sign=false;
break;
}
}
if(sign)
cout<<"num "<<i<<" and sum: "<<i2<<"are good"<<endl;
}
return 0;
}

加载更多回复(21)
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Altium Designer 18是一款功能丰富的电子设计自动化工具,其集成了电路原理图绘制、PCB布局规划、三维视图展示、电路仿真分析以及生产文件生成等多项核心功能,为电子工程师们提供了一个全面的硬件设计解决方案。该软件的官方中文指导材料系统地阐述了从项目初始阶段到最终完成的全过程操作方法。 在“AD18 官方中文指导材料”中,使用者可以掌握以下核心内容要点: 1. **系统配置与界面认知**:熟悉Altium Designer 18的工作平台,涵盖菜单选项、工具栏配置、工作区域安排,以及个性化工作界面的设定方法。 2. **项目创建流程**:掌握如何建立新的项目工程,包括工程参数配置、项目模板选取,以及项目文件的添加操作。 3. **电路图绘制技术**:学习电路原理图的绘制流程,包括元件库的维护管理、元件放置技巧、连接线路绘制、属性编辑操作,以及网络表的自动生成方法。 4. **元件库构建与管理**:了解如何建立自定义元件库,执行元件的导入与导出任务,以及利用Altium Designer自带的元件资源库。 5. **PCB布局设计方法**:掌握PCB设计的基本准则,如元件布局策略、布线技巧、层叠结构调整、布线规则优化,以及冲突检测与短路处理技术。 6. **设计规范与约束条件**:理解设定设计规范和电气约束条件的关键性,包括间距参数设定、焊盘尺寸规格、过孔尺寸要求等,以及运用规则检查进行设计验证的流程。 7. **三维模型整合应用**:学习如何将三维模型与PCB设计内容相结合,以实现更为直观的机械配合验证。 8. **电路性能仿真技术**:掌握使用Altium Des...
源码链接: https://pan.quark.cn/s/a4b39357ea24 ### 接口测试知识要点说明 #### 一、接口测试的定义及分类 1. **概念阐释**: - 接口测试作为软件测试的关键环节,主要对系统之间的交互点进行验证。 - 它旨在核实接口的正确性、稳定性和功能性,保障各个系统组件能够依照预期执行交互操作。 2. **实施情境**: - 适用于多系统联合开发的环境。 - 适用于包含多个子系统的复杂应用系统开发过程。 3. **适用范围**: - 为其他系统提供支持的底层基础架构系统。 - 负责协调中心服务的系统架构。 4. **分类标准**: - **模块接口测试**:通常作为单元测试的一部分,适用于独立构建的功能模块。 - **Web接口测试**: - **服务端接口测试**:针对客户端与服务器端之间的接口进行验证。 - **外部接口测试**:对第三方提供的接口进行测试,例如支付平台提供的授权登录接口。 5. **测试角度**: - **接口功能验证**:核实接口功能是否满足预期要求。 - **接口性能评估**:衡量接口的处理能力及响应时间。 - **接口稳定性考察**:检测接口在长时间运行中的表现情况。 - **接口安全检测**:确保接口能够抵御非法访问或数据篡改。 6. **测试手法**: - **参数细致测试**:深入测试接口的输入参数和输出结果。 - **场景模拟测试**:依据实际业务场景进行测试验证。 #### 二、接口测试的详细流程 1. **测试规划**: - 明确测试范围、目标及所需资源。 - 规划测试策略,选择适宜的工具和技术手段。 2. **测试用例设计**: - 依据需求文档和接口规格文档设计测试用例。 - 覆...

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧