文章
8
粉丝
140
获赞
20
访问
26.1k
两个坑点,两处细节:
1、当心大数:数据定义的太小,导致转换的10进制数ans内存不够,存放不下;
2、输入输出须省题仔细:输入大写;输出小写。
(1)数字转换成字符时,需要在字符数组中加上'0'或'A'/'a',实质是在字符基础上加对应的ASCII码值,存入数组;
(2)数字转成n进制时,存放的数组要逆序输出;
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[105];
int m,n,x;
scanf("%d%d%s",&m,&n,a);
long long ans=0,t=strlen(a);//这里尤其注意,如果ans不是long long定义的话,很可能在m进制的x输入下,int定义会存放不下;
for(int i=0;i<t;i++){
if(a[i]<='9'&&a[i]>='0') ans=ans*m+(a[i]-'0');
else ans=ans*m+(a[i]-'A')+10;
}//ans是十进制数:
// printf("%d",ans);
char b[105];
int p=0,w;
while(ans>0){
&nb...
登录后发布评论
暂无评论,来抢沙发