本文主要是介绍C语言-将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路:
首先分析题目,设第一个数为m,则第二个数为2m,第三个数为3m;
定义一个大小为9的int型全局数组,将各个数的各位依次输入数组,每次进入一个元素,就与前面的数组元素进行比对,若相同,则说明此时的m不满足条件。下界为123,上界为333,循环寻找。
#include<stdio.h>int array[9]; //存储三个三位数各个位的全局数组
int OK(int m,int *array);
int main()
{int m;int count=1;for(m=123;m<333;m++){if(OK(m,array)&&OK(2*m,array+3)&&OK(3*m,array+6)) //第二个数从array[3]开始存,第三个数从array[6]开始存。{printf("#%d:%d %d %d\n",count,m,2*m,3*m);count++;}}return 0;
}int OK(int number,int *curPtr) // 判断number这个数中各个位上的数字在之前是否出现过,curPtr是指向该数字开始存储的位置
{int *i,*j;for(i=curPtr;i<curPtr+3;i++){*i=number%10; number/=10;if((*i)==0)return 0; //判断输入的数字是否为0,为0则必不满足,返回0for(j=array;j<i;j++){if((*i)==(*j))return 0; //只要输入的数字和前面某一个数字相同,则不满足}}return 1;
}
这篇关于C语言-将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!