潜修亮剑一

作者: 逍遥_9353 | 来源:发表于2018-05-31 14:08 被阅读36次

    /*基础练习 十六进制转八进制 

    时间限制:1.0s  内存限制:512.0MB

    提交此题  锦囊1  锦囊2

    问题描述

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

    输入格式

      输入的第一行为一个正整数n (1<=n<=10)。

      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式

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

      【注意】

      输入的十六进制数不会有前导0,比如012A。

      输出的八进制数也不能有前导0。

    样例输入

      2

      39

      123ABC

    样例输出

      71

      4435274

      【提示】

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

    */

    …………………………………………………

    #include <iostream> 

    #include <string> 

    using namespace std; 

     

    int main() 

        int n; 

        cin>>n; 

        for(int i=0;i<n;i++) 

        { 

            string a,b;

            cin>>a; 

            b="";//初始化 

            for(int i=0;i<a.length();i++)

            { 

            //十六进制转二进制

                switch(a[i]) 

                { 

                    case '0':b+="0000";break; 

                    case '1':b+="0001";break; 

                    case '2':b+="0010";break; 

                    case '3':b+="0011";break; 

                    case '4':b+="0100";break; 

                    case '5':b+="0101";break; 

                    case '6':b+="0110";break; 

                    case '7':b+="0111";break; 

                    case '8':b+="1000";break; 

                    case '9':b+="1001";break; 

                    case 'A':b+="1010";break; 

                    case 'B':b+="1011";break; 

                    case 'C':b+="1100";break; 

                    case 'D':b+="1101";break; 

                    case 'E':b+="1110";break; 

                    case 'F':b+="1111";break; 

                    default:break; 

                } 

            } 

            //计算转变成二进制的长度及添加'0',凑足3的倍数

            int len=b.length(); 

            if(len%3==1)

                b="00"+b; 

            else if(len%3==2) 

                b="0"+b;

    //二进制转八进制 

            int flag=0; 

            for(int i=0;i<=b.length()-3;i+=3) 

            { 

                int num=4*(b[i]-'0')+2*(b[i+1]-'0')+(b[i+2]-'0'); 

                if(num) 

                    flag=1;

                if(flag) 

                    cout<<num; 

            } 

            cout<<endl; 

        } 

        return 0; 

    }

    …………………………………………………

    /*  基础练习 时间转换 

    时间限制:1.0s  内存限制:512.0MB

    提交此题  锦囊1  锦囊2

    问题描述

      给定一个以秒为单位的时间t,要求用“<H>:<M>:<S>”的格式来表示这个时间。<H>表示时间,<M>表示分钟,而<S>表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。

    输入格式

      输入只有一行,是一个整数t(0<=t<=86399)。

    输出格式

      输出只有一行,是以“<H>:<M>:<S>”的格式所表示的时间,不包括引号。

    样例输入

    0

    样例输出

    0:0:0

    样例输入

    5436

    样例输出

    1:30:36

    */

    …………………………………………………

    #include<iostream>

    using namespace std;

    int main()

    {

    int t;

    cin>>t;

    int h,m,s;

    h=t/3600;

    m=t/60%60;

    s=t%60;

    cout<<h<<":"<<m<<":"<<s<<endl;

    return 0;

    }

    …………………………………………………

    潜修亮剑一 潜修亮剑一

    相关文章

      网友评论

        本文标题:潜修亮剑一

        本文链接:https://www.haomeiwen.com/subject/tqyqsftx.html