进制转换
1 #include <stdio.h> 2 3 void convertHex(char* s,int data) 4 { 5 static int i = 0; 6 if(data != 0) 7 { 8 convertHex(s,data/16); 9 *(s+i++) = "0123456789ABCDEF"[data%16]; 10 } 11 } 12 13 int main() 14 { 15 static char s[100]; 16 int data; 17 if(scanf("%d", &data)) 18 { 19 convertHex(s,data); 20 puts(s); 21 } 22 else 23 fprintf(stderr,"input error"); 24 25 return 0; 26 }
1 #include <stdio.h> 2 3 void convertHex(char* s,int data) 4 { 5 static int count = 0; 6 static int index = 0; 7 8 if(data != 0) 9 { 10 count++; 11 convertHex(s+1,data/16); 12 count--; 13 *(s-count + index++) = "0123456789ABCDEF"[data%16]; 14 } 15 else 16 *s = '\0'; 17 } 18 19 int main() 20 { 21 char str[100]="hello world"; 22 int data; 23 if(scanf("%d", &data)) 24 { 25 convertHex(str,data); 26 puts(str); 27 } 28 else 29 fprintf(stderr,"input error"); 30 for(int i = 0;i<10;i++) 31 printf("%d ",str[i]); 32 return 0; 33 }
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,k=0,num,sum=0,n,m,d; 5 char str[2000],str1[2000]; 6 printf("输入要转换的数: \n"); 7 scanf("%s",str);//输入要转换的数,并存储在字符串数组中 8 printf("输入这个数本身的进制数: \n"); 9 scanf("%d",&n); 10 printf("要求转换成的进制数: \n"); 11 scanf("%d",&m); 12 for(i=0;str[i]!='\0';i++) 13 { 14 if(str[i]>='0'&&str[i]<='9')//将每一个数找出 15 num=str[i]-'0'; 16 else 17 num=str[i]-'a'+10; 18 sum=sum*n+num; 19 } 20 while(sum) 21 { 22 d=sum%m; 23 str1[k++]="0123456789abcdef"[d];/*这里其实还有一种方法就是判断余数与10的大小关系,如果余数大于等于十将这个数字加上87(若字母为大写就加55)转化为对应的字母,若为数字就按此方发存入数组。*/ 24 sum/=m; 25 } 26 for(i=k-1;i>=0;i--) 27 { 28 if(str1[i]>='0'&&str1[i]<='9') 29 printf("%d",str1[i]-'0'); 30 else 31 printf("%d",str1[i]-'a'+10); 32 } 33 return 0; 34 }
C++
#include <iostream> using namespace std; void convertHex(string& s,string::size_type data) { if(data != 0) { convertHex(s,data/16); s = s + "0123456789ABCDEF"[data%16]; } } int main() { string result; string::size_type data; while(cin >> data) { convertHex(result,data); } cout << result << endl; return 0; }
------------------------------------------------------------------------------------------------------
坚持每天进步一点点,一年将是一大步
-------------------------------------------------------------------------------------------------------

浙公网安备 33010602011771号