急需啊…………各位大哥帮帮忙
先将一个4位数,将千位和十位构成一个两位数S,将百位和个位构成一个新数T.(注意:这里不考虑构成的新数S和T十位为0的情况。如:1001构成新数10和01,但是T不是一个满足条件的数据。所以不考虑)如果构成的新数S是T的5倍,则将该数存放在数组中,如6102,构成新数S位60,T为12,S=5*T。则6102满足条件,存放在数组中,最后输出满足条件的所有数!
看看是不是满足你的要求:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
//检查该数是否符合条件
bool CheckData(int num)
{
//存储四位数的个位,十位,百位,千位
int A,B,C,D;
//将四位数每一位都拆开
D = num/1000;
C = (num%1000)/100;
B = ((num%1000)%100)/10;
A = num-D*1000-C*100-B*10;
if(C == 0)
return false;
//构造新的两位数
int S = D*10 + B;
int T = C*10 + A;
//满足条件则存储
if((S/T == 5) && (S%T == 0))
return true;
return false;
}
int main()
{
//存储满足条件的四位数
//开辟一段存储空间
int *save = new int[100];
int n = 0;
int i;
for(i=1000;i<10000;i++){
bool r = CheckData(i);
if(r){
save[n] = i;
n++;
}
}
for(i=0;i<n;i++)
printf("%d\n",save[i]);
return 0;
}