一個四位數的9倍仍然是四位數,但是數字次序相反,程式設計求此四位數
阿新 • • 發佈:2019-02-06
#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 4 enum 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; } }