/*========================================================================
求特殊自然数
总时间限制:
1000ms
内存限制:
65536kB
描述
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示.
输入为1时,输出此自然数的十进制表达式;输入为2时,输出此自然数的七进制表达式;输入为3时,输出此自然数的九进制表达式。
输入
输入为1,2,3中的一个数。
输出
输出一行。
输出为十进制或七进制或九进制数
样例输入
1
样例输出
(特殊题目,不显示样例输出)
==========================================================================*/
1 #include<stdio.h>
2 #include<string.h>
3 void MyItoa(int value,char a[],int r);//把十进制非负整数value转成r进制数的字符串存储到a[]数组
//itoa函数不是标准C的函数,所以这里自己实现了一个比较简单的子函数。
4 int main()
5 {
6 int i,a;
7 char str7[10],str9[10],temp;
8 for(i=57;i<=728;i++)
9 {
10 MyItoa(i,str7,7);
11 MyItoa(i,str9,9);
12 if(strlen(str7)==3&&strlen(str9)==3)
13 {
14 temp=str7[0];
15 str7[0]=str7[2];
16 str7[2]=temp;
17 if(strcmp(str7,str9)==0)
18 break;
19 }
20 }
21 scanf("%d",&a);
22 if(a==1) printf("%d\n",i);
23 else if(a==2)
24 {
25 MyItoa(i,str7,7);
26 printf("%s\n",str7);
27 }
28 else printf("%s\n",str9);
29 return 0;
30 }
31 void MyItoa(int value,char a[],int r)//把十进制非负整数value转成r进制数的字符串存储到a[]数组
32 {//r的范围是2~10
33 int i=0,len;
34 char t;
35 while(value>0)
36 {
37 a[i]=value%r+'0';
38 value=value/r;
39 i++;
40 }
41 a[i]='\0';
42 len=i;
43 for(i=0;i<len/2;i++)
44 {
45 t=a[i];
46 a[i]=a[len-1-i];
47 a[len-1-i]=t;
48 }
49 }