• 数制转换 1207 1216


    题目描述:

    求任意两个不同进制非负整数的转换(2 进制 ~ 16 进制),所给整数在 long 所能表达的范围之内。

    不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

    输入描述:

    每组输入占一行,包含用空格分开的三个整数 a, n, b

    a 表示其后的 n 是 a 进制整数

    b 表示欲将 a 进制整数 n 转换成 b 进制整数。

    a, b是十进制整数,2 <= a, b <= 16。

    输出描述:

    每组输入输出一行,为转换后的 b 进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

    样例输入:

    8 376 12

    15 Aab3 7

    样例输出:

    192

    210306

    先转换为10进制,再转换为其他

     1 #include<iostream>
     2 using namespace std;
     3 int main(){
     4     int a,b;
     5     string n;
     6     while(cin>>a>>n>>b){
     7         int len,i,m;
     8         len=n.length();
     9         int nn[len];
    10         int s=0,c=1,k=0;
    11         char ns[50];
    12         for(i=len-1;i>=0;i--){
    13             if(n[i]>='0'&&n[i]<='9'){
    14                 nn[i]=n[i]-'0';
    15             }
    16             else if(n[i]>='a'&&n[i]<='z'){
    17                 nn[i]=n[i]-'a'+10;
    18             }
    19             else if(n[i]>='A'&&n[i]<='Z'){
    20                 nn[i]=n[i]-'A'+10;
    21             }
    22             s=s+nn[i]*c;
    23             c=c*a;
    24             //cout<<nn[i]<<endl;
    25         }
    26         //cout<<s<<endl;
    27         do{
    28             m=s%b;
    29             if(m<10){
    30                 m=m+'0';
    31             }
    32             else{
    33                 m=m-10+'A';
    34             }
    35             ns[k++]=m;
    36             s=s/b;
    37         }while(s!=0);
    38         for(i=k-1;i>=0;i--){
    39             cout<<ns[i];
    40         }
    41         cout<<endl;
    42     }
    43     return 0;
    44 } 
    zq

    题目描述:

    输入一个数 n(n < 10),接下来有 n 行,每行给出一个十进制数 m,将 m 由十进制转换成 17 进制(超过 9 的数分别用大写字母 A - G 表示)并输出。数据范围:m < 30000。

    输入描述:

    第一行为一个数 n,接下来为 n 行,每行一个十进制数。

    输出描述:

    输出 n 行,每行一个 17 进制数。

    样例输入:

    2

    16

    17

    样例输出:

    G

    10

     1 #include<iostream>
     2 using namespace std;
     3 int main(){
     4     int n,i,s,k,j;
     5     char p;
     6     cin>>n;
     7     int m[n];
     8     char c[50];
     9     for(i=0;i<n;i++){
    10         cin>>m[i];
    11     }
    12     for(i=0;i<n;i++){
    13         k=0;
    14         do{
    15             s=m[i]%17;
    16             if(s<10){
    17                 //cout<<s;
    18                 s=s+'0';
    19                 c[k++]=s;
    20             }
    21             else{
    22                 p=s-10+'A';
    23                 //cout<<p;
    24                 c[k++]=p;
    25             }
    26             m[i]=m[i]/17;
    27         }while(m[i]!=0); 
    28         for(j=k-1;j>=0;j--){
    29             cout<<c[j];
    30         }
    31         cout<<endl;
    32     }
    33     return 0;
    34 } 
    例子
    转载请标明出处
  • 相关阅读:
    实体机可以ping通虚拟机,虚拟机ping不通实体机
    实体机可以ping通虚拟机,虚拟机ping不通实体机
    eclipse快捷键
    eclipse快捷键
    利用信号捕捉函数回收子进程
    进程间通信_信号
    进程间通信_管道
    创建子进程
    系统编程入门
    JPG库移植与使用
  • 原文地址:https://www.cnblogs.com/zq-dmhy/p/11099479.html
Copyright © 2020-2023  润新知