C语言求这样的两个数据:5位数=2*4位数,9个数字各不相同
首先编写判断一个五位数和一个四位数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请按任意键继续. . .
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。