一个四位数的9倍仍然是四位数,但是数字次序相反,编程求此四位数

来源:互联网 发布:c语言else语句格式 编辑:程序博客网 时间:2024/05/17 02:37
#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */#define NUM 4enum abcd{D,A,C,B};enum Y_N{NO,YES};void choice(enum abcd);void mydisplay(const int []);enum Y_N isrational(int,const int[],enum abcd); int main(void) {choice(D);return 0;}void choice(enum abcd choicing){static int choiced[NUM];int i;if(choicing>B){printf("找到符合要求的数:");mydisplay(choiced);return;}for(i=0;i<=9;i++){if(isrational(i,choiced,choicing)==YES){choiced[choicing]=i;choiced[choicing]=i;choice(choicing+1); }}return;}void mydisplay(const int choiced[]){printf("%d%d%d%d",choiced[A],choiced[B],choiced[C],choiced[D]);printf("\n");}enum Y_N isrational(int i,const int choiced[],enum abcd choicing){switch(choicing){case D:return (i!=0)?YES:NO;case A:return (i!=0&&(choiced[D]*9)%10==i   &&i*9<=9)?YES:NO;case C:return YES;case B:return (choiced[D]*9+choiced[C]*90+i*900+choiced[A]*9000==             choiced[A]+i*10+choiced[C]*100+choiced[D]*1000)?YES:NO;}}

0 0
原创粉丝点击