#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int n=0;
extern int beten(char *arr,int yuanjinzhi);
extern int chartodigit(char c);
void tentotarget(int a,int houjinzhi,char*result);
char digittochar(int num);
int demical;//用于计算十进制的时候用
//int count=0;//用于在转换为十进制的时候计数用 //用局部变量
int main(){
char arr[11];
char result[32];
int yuanjinzhi=0;
int houjinzhi=0;
scanf("%d",&yuanjinzhi);
scanf("%d",&houjinzhi);
scanf("%s",arr);
//
int decimal = beten(arr,yuanjinzhi);//两步最重要的将数组中的数变成十进制
tentotarget(decimal, houjinzhi, result);//将十进制变成目标进制并且倒序输出
printf("%s\n", result);
//
//测试点1 ok;
// printf("%s",arr);
//测试点2 ok;
//char c='a';
//n=chartodigit(c);
// printf("%c",c);
// printf("%d",n);
//测试点3 ok;
//将一个数字变成对应的字符
//int n=11;
//printf("%c",digittochar(n));
//测试点4 ; ok
//将任意进制的数转换成十进制的数
// o=0;
//o=beten(arr,yuanjinzhi);
//printf("%d",o);
//测试点5; 不知道ok不ok
//测试能否将十进制数转成目标进制并且将字符串输出
//int a=0;
//scanf("%d",&a);
//char result[100];
//tentotarget(a,houjinzhi,result);
return 0;
}
//自己写会了,才是真的会了
//需要几个函数
//函数一
//将输入的一个一个的一个一个的字符串变成数字
//
int chartodigit(char c){
//关键//
if(c>='0'&&c<='9')
return (c-'0');
else if(c>='a'&&c<='f')
return (c-'a'+10);
else
return -1;
}
//接下来进行将一个数字变成对应的字符
char digittochar(int num){
if(num>=0&&num<=9)
return (num+'0');
else if(num>=10&&num<=15)
{
return ('a'+num-10);
}
else
return -1;
}
//接下来实现将任意进制的数变成十进制的数
//int beten(char* arr,int a)
//{
//int len=strlen(arr);
//
//
//
// for (int i = 0; i < len; i++) {
// int digit = chartodigit(arr[i]);
// demical += digit * pow(a, len - 1 - i);
// }
//
// return demical;
//
//}
//先想清楚有几步
//1你需要字符串的长度
//2需要一个变量来加和
//3需要通过循环将每一行个字符变成可以计算的数字
int beten(char*arr,int yuanjinzhi){
demical=0;
int l=strlen(arr);
for(int i=0;i<l;i++){
int digit=chartodigit(arr[i]);
demical+=digit*pow(yuanjinzhi,l-i-1);
}
return demical;
}
//接下来实现将十进制的数变成任意进制的
//思考
void tentotarget(int a,int houjinzhi,char*result){
int i=0;
while(a!=0){
int re=0;
re=a%houjinzhi;
result[i]=digittochar(re);
a=a/houjinzhi;
i++ ;
//大概是能自己写出来
//基本思想是取余收入
//取整判断是否继续
}
result[i]='\0';
//i要自增
//最后要是零
//反转字符串
char temp;
int left=0;
int right=i-1;
while(left<=right)
{
temp=result[left];
result[left]=result[right];
result[right]=temp;
left++;
right--;
//基本思想
//你好好的想好好记
}
// printf("%s",result);
}
就是你写函数时候变量 也要标清楚
需要哪些变量提前列出来懂