📄 1_1.cpp
字号:
/*题目:
求这样的两位数据:五位数=2*四位数,9个数字各不相同。
*/
#include<iostream>
using namespace std;
const int NINE=9;
int sj[NINE];//全局的,记录这九个不同的数字
void deal_mn(int a,int b)
{
int i,j,e,h;
for(i=0;i<4;i++)//将n值存入前数组前4位
{
e=10;
h=1;
for(j=1;j<i+1;j++)
{
e*=10;
h*=10;
}
sj[i]=(b%e)/h;
}
for(i=4;i<NINE;i++)//将m值存入前数组后5位
{
e=10;
h=1;
for(j=1;j<i-3;j++)
{
e*=10;
h*=10;
}
sj[i]=(a%e)/h;
}
}
bool deal_sj()
{
int i,j;
for(i=0;i<NINE;i++)
for(j=i+1;j<NINE;j++)
{
if(sj[i]==sj[j])//前面的数据和其后面的每一个数据都比较判断
return false;
}
return true;
}
void main()
{
int m,n;//m表示五位数,n表示四位数;且m,n为所求
int k=0;//计数器
/*现在需要确定m,n的取值范围:
10234<m<19752,5117<n<9876(根据题意得到的);
为什么要将m,n的范围确定下来?
是为了减少循环次数。
*/
for(n=5120;n<9876;n++)
{
m=2*n;//满足两倍关系处理m,n
/*现在需要将m,n所组成的9个数放进数组sj[9]中,
可以用一个函数来处理*/
deal_mn(m,n);//数组中放入了9个数字
/*现在判断9个数字是否各不相同,
可以用一个bool函数处理*/
if(deal_sj())
{
cout<<"这两个数据分别为:"<<m<<"和"<<n<<endl;
k++;
}
}
if(k==0)
cout<<"不存在这样的两个数据!\n";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -