这是一个实习作业,帮帮忙,谢谢!
一个奇异的三位数(穷举算法)功能要求:
一个三位自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。
#include<stdio.h> #include<string.h> void fun(int a,char b[],int n) { int i; for (i=0;a;i++) { b[i]=(char)(a%n+48); a/=n; } b[i]='\0'; } int main () { char b[20]; char c[20]; int i; for (i=100;i<1000;i++) { fun(i,b,7); fun(i,c,9); if (b[2]==c[0]&&b[1]==c[1]&&b[0]==c[2]&&strlen(b)==3&&strlen(c)==3) { printf("原三位数:%d\n",i); printf("七进制:%s\n",c); //因为用函数所求的进制值的位数是反过来的,故由函数赋值所得的七进制和九进制位置互换后就是实际的七进制和九进制~ printf("九进制:%s\n",b); } } return 0; }
[此贴子已经被作者于2016-11-30 13:40编辑过]
[此贴子已经被作者于2016-11-30 16:04编辑过]
#include <stdio.h> int main( void ) { for( unsigned abc=0; abc<6*7*6; ++abc ) { unsigned a = abc/42 + 1; unsigned b = abc/6%7; unsigned c = abc%6 + 1; if( a*49 + b*7 + c == c*81 + b*9 + a ) { printf( "十进制: %u\n", a*49+b*7+c ); printf( "七进制: %u%u%u\n", a,b,c ); printf( "九进制: %u%u%u\n", c,b,a ); } } return 0; }