首先编写判断一个五位数和一个四位数9个数字是否相同
利用标记数组的方法判断
若是不相同返回1,相同返回0

int panbie(int x, int y){ int i, m, n; int a[10] = { 0 };//定义标记数组 for (i = 0; i <= 4; i++) { n= x % 10; a[n]++;//数组标记 x = x/ 10;// } for (i = 0; i <= 3; i++) { n = y % 10; a[n]++;//数组标记 y = y/ 10; } for (i = 0; i <= 9;i++) if (a[i] >= 2) return 0; return 1;}

主函数利用循环遍历所有五位数和四位数

for (wu = 10000; wu < 100000;wu++) for (si = 1000; si < 10000; si++)

遍历时找出符合题目条件的五位数和四位数

if (wu == (2 * si)) { i = panbie(wu, si);//调用判断函数 if (i == 1) printf("%d=2*%d\n", wu, si); }

满足条件后输出即可
完整源代码如下

#include<stdio.h>#include<stdlib.h>#include<math.h>int panbie(int x, int y){ int i, m, n; int a[10] = { 0 }; for (i = 0; i <= 4; i++) { n= x % 10; a[n]++; x = x/ 10;// } for (i = 0; i <= 3; i++) { n = y % 10; a[n]++; y = y/ 10; } for (i = 0; i <= 9;i++) if (a[i] >= 2) return 0; return 1;}int main(){ int wu, si,i; for (wu = 10000; wu < 100000;wu++) for (si = 1000; si < 10000; si++) { if (wu == (2 * si)) { i = panbie(wu, si); //printf("%d\n", i); if (i == 1) printf("%d=2*%d\n", wu, si); } } system("pause"); return 0;}

运行结果

10476=2*523810478=2*523910728=2*536410764=2*538210784=2*539210872=2*543610972=2*548612708=2*635412870=2*643512970=2*648513458=2*672913584=2*679213704=2*685213854=2*692714538=2*726914586=2*729314658=2*732915384=2*769215846=2*792315864=2*793216470=2*823516704=2*835217046=2*852317064=2*853217092=2*854617290=2*864517304=2*865218470=2*923518534=2*926718546=2*927318654=2*932718704=2*9352请按任意键继续. . .