• 十八:十六进制转八进制


    问题:十六进制转八进制  
    问题描述

      给定n个十六进制正整数,输出它们对应的八进制数。
    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
    输出格式
      输出n行,每行为输入对应的八进制正整数。
      【注意】
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。
    样例输入
      2
      39
      123ABC
    样例输出
      71
      4435274
      【提示】

      先将十六进制数转换成某进制数,再由某进制数转换成八进制。

     1 #include<stdio.h>
     2 #include<string.h>
     3 int b[100000];
     4 int initial;
     5 int cun[1000];
     6 void fine(int cun[],int p){
     7     int i,j;
     8     for(i=p-1;i>=0;i--){
     9         while(cun[i]){
    10             for(j=i;j>=0;j--) printf("%d",cun[j]);
    11             return;
    12         }
    13     }
    14 }
    15 void eight(int b[]){
    16     int p=0,i;
    17     int sum,fun[]={1,2,4};
    18     for(i=0;i<initial;){
    19         sum=0;
    20         int k=0;
    21         while(i<initial){
    22             sum+=b[i]*fun[k++];
    23             i++;
    24             if(k==3) break;
    25         }
    26         cun[p++]=sum;
    27     }
    28     fine(cun,p);
    29 }
    30 void Two(int num){
    31     if(num==0){
    32         while(initial%4) b[initial++]=0;
    33         return;    
    34     } 
    35     b[initial++]=num%2;
    36     Two(num/2);
    37 
    38 }
    39 void SixTeen(char str[],int n){
    40     int num;
    41     if(n-1<0){
    42         return;
    43     }
    44         if(str[n-1]>='A') num=(str[n-1]-55);
    45         else num=(str[n-1]-48);
    46         Two(num);
    47     SixTeen(str,n-1);
    48 }
    49 int main(){
    50     char str[10][100000];
    51     int n,i,j;
    52     memset(b,-1,sizeof(b));
    53     scanf("%d",&n);
    54     for(i=0;i<n;i++){
    55         scanf("%s",str[i]);
    56     }
    57     for(j=0;j<n;j++){
    58         n=strlen(str[j]);
    59         initial=0;
    60         SixTeen(str[j],n);
    61         eight(b);
    62         printf("
    ");
    63     }
    64 
    65 }
  • 相关阅读:
    【Python】错误、调试和测试
    【c++ primer, 5e】函数指针
    【英语学习】【17/4/1】
    【c++ primer, 5e】函数匹配
    FIRST GAME.
    【Thinking in Java, 4e】访问权限控制
    【c++ primer, 5e】特殊用途语言特性
    Top-Down笔记 #01# 计算机网络概述
    NHibernate之映射文件配置说明
    Web Service 部署到IIS服务器
  • 原文地址:https://www.cnblogs.com/yuming226/p/8150863.html
Copyright © 2020-2023  润新知