zoukankan      html  css  js  c++  java
  • 基础练习 十六进制转八进制(模拟)

    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

      【注意
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

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

    ac代码

    #include<stdio.h>
    #include<string.h>
    
    char a[100005];
    
    int change(int x, int y)
    {
        int temp = 0;
        
        for(int i = x; i <= y; i++)
        {
            if(a[i] > '9')
            {
                temp = temp*16 + a[i] - 'A' + 10;
            }
            else
            {
                temp = temp*16 + a[i] - '0';
            }
        }
        
        return temp;
    }
    
    int main()
    {
        int n;
        
        scanf("%d", &n);
        
        while(n--)
        {
            scanf("%s", a);
        
            int len = strlen(a);
            bool flag = true;
            int num = 0;
            
            if(len % 3 == 1)                //为什么是对3取模? 
            {
                printf("%o", change(0, 0));
                flag = false;
                num = 1;
            }
            
            else if(len % 3 == 2)
            {
                printf("%o", change(0, 1));
                flag = false;
                num = 2;
            }
    
            for(int i = num; i < len; i = i+3)
            {
                if(flag)
                {
                    flag = false;
                    printf("%o", change(i, i+2));
                }
                else
                    printf("%04o", change(i, i+2));        //这个地方为什么要补0? 
            }
            
            printf("
    ");
        }
        
        return 0;
    } 

    有两个地方还是不明白,望大神解答。

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    2020春Contest
    HDU Count the string (KMP)
    P1757 通天之分组背包
    L1-050 倒数第N个字符串
    3月份目标
    Division UVa725
    数三角
    luogu P2051 [AHOI2009]中国象棋 dp 状态压缩+容斥
    Codeforces Round #654 (Div. 2) E
    Codeforces Round #654 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/h-hkai/p/8401838.html
Copyright © 2011-2022 走看看