文章

8

粉丝

140

获赞

20

访问

26.3k

头像
搭桥过程:M转换10进制,再转N进制;c++
P1422 清华大学/厦门大学机试题
发布于2023年3月7日 15:51
阅读数 3.3k

两个坑点,两处细节:

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...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发