咕噜咕噜哈里  

今天的题好像有些难了,但是学到了新的知识,进制转换,虽然还搞得不太明白。

二进制转八进制:1.取一合三法 2,添0补0

补上今天的题(一定不能把cout<<endl;关起来这样会影响换行)

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int n;
 6 int i;
 7 string b1,b2;
 8 
 9 int main()
10 {
11     cout<<"请输入n的值:"<<endl;
12     cin>>n;
13     for(i=0;i<n;i++)
14     {
15         cin>>b1;
16         b2="";
17     for(int j=0;j<b1.length();j++)
18         {
19             switch(b1[j])
20             {
21             case'0':
22                 b2+="0000";break;
23             case'1':
24                 b2+="0001";break;
25             case'2':
26                 b2+="0010";break;
27             case'3':
28                 b2+="0011";break;
29             case'4':
30                 b2+="0100";break;
31             case'5':
32                 b2+="0101";break;
33             case'6':
34                 b2+="0110";break;
35             case'7':
36                 b2+="0111";break;
37             case'8':
38                 b2+="1000";break;
39             case'9':
40                 b2+="1001";break;
41             case'A':
42                 b2+="1010";break;
43             case'B':
44                 b2+="1011";break;
45             case'C':
46                 b2+="1100";break;
47             case'D':
48                 b2+="1101";break;
49             case'E':
50                 b2+="1110";break;
51             case'F':
52                 b2+="1111";break;
53             default:break;
54             }
55         }
56    if(b2.length()%3==1)
57        b2="00"+b2;
58    if(b2.length ()%3==2)
59        b2="0"+b2;
60    int flag=0;
61    for(int g=0;g<b2.length()-2;g+=3)
62    {
63     int p=4*(b2[g]-'0')+2*(b2[g+1]-'0')+b2[g+2]-'0';
64     if(p)
65         flag=1;
66     if(flag)
67         cout<<p;
68    }
69       cout<<endl;
70         
71     }
72     return 0;
73 }

 题目:

十六进制转八进制
 
问题描述
给定 n 个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数 n (1<=n<=10)。
接下来 n 行,每行一个由 0~9、大写字母 A~F 组成的字符串,表示要转换的十六进制正
整数,每个十六进制数长度不超过 100000。
输出格式
输出 n 行,每行为输入对应的八进制正整数。
注意
输入的十六进制数不会有前导 0,比如 012A。
输出的八进制数也不能有前导 0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
posted on 2021-07-12 21:08  咕噜咕噜哈里  阅读(1357)  评论(0编辑  收藏  举报