| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2993 人关注过本帖, 1 人收藏
标题:c++进制问题
只看楼主 加入收藏
a1602388940
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-3-9
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:21 
c++进制问题
编写程序:输入2个字符,分别在'1'-'9'和'A'-'F'之间,把这两个字符看作1个二位16进制整数的2个数位。输出这个数的10进制形式和16进制形式。运行程序,观察输入的字符和输出的16进制是否一致。
搜索更多相关主题的帖子: 输入 进制 输出 c++ 字符 
2020-03-09 11:08
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
十六进制不是必须要加0x的吗?

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-09 14:09
a1602388940
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-3-9
收藏
得分:0 
回复 2楼 叶纤
是的啊 这题该怎么操作呢
2020-03-09 14:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:15 
程序代码:
#include <iostream>
#include <iomanip>
#include <optional>
using namespace std;

std::optional<unsigned> h2u( char ch )
{
    if( ch < '0' )
        return {};
    if( ch <= '9' )
        return ch-'0';
    if( ch < 'A' )
        return {};
    if( ch <= 'F' )
        return ch-'A'+10;
    return {};
}

int main( void )
{
    char a,b;
    if( !(cin>>a>>b) )
        return 1;

    auto vh = h2u(a);
    auto vl = h2u(b);
    if( !vh.has_value() || !vl.has_value() )
        return 2;

    auto value = vh.value()*16 + vl.value();
    cout << value << '\t'
         << setfill('0') << setw(2) << setiosflags(ios::uppercase) << hex << value << endl;
}
收到的鲜花
  • 叶纤2020-03-10 05:46 送鲜花  1朵   附言:强,每次看您的代码,都会有灵感
  • return_02020-03-10 13:38 送鲜花  1朵   附言:虽然看不懂,但代码挺美观的
2020-03-09 16:51
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
转二进制:
程序代码:
#include<iostream>
using namespace std;
int main(){
    int i=0,n,a[100];
    cin>>n;
    while(n!=0){
        a[i]=n%2;
        i++;
        n/=2;
    }
    for(int j=i-1;j>=0;j--){
        cout<<a[j];
    } 
    return 0;
}

2020-03-09 19:12
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
十六进制:
程序代码:
#include<iostream>
using namespace std;
int main(){
    int i=0,n,m=16,a[100];
    cin>>n;
    while(n!=0){
        a[i]=n%m;
        n/=m;
        i++;

    }
    for(int j=i-1;j>=0;j--){
        if(a[j]>=10)
            cout<<(char)(a[j]-10+'A');
        else
            cout<<a[j];
    } 
    return 0;
}

2020-03-09 19:17
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
回复 6楼 return_0
给你个眼神自己体会呀,如果这一题只是简单的进制转换用hex和bitset就可以了,关键是要输入的是字符字符呀,哥哥,

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-09 19:44
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
收藏
得分:0 
???

2020-03-09 19:48
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
scanf %x 输入
printf %d %x 输出
就可以了

https://zh.
2020-03-09 23:22
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:5 
程序代码:
这个问题想的我头都快要炸了

#include<iostream>
#include<string>
#include<bitset>
using namespace std;
int main()
//两个字符,输出10进制16进制
//字符转十进制-55,
//一位数字输出ch,一位字符输出10进制-55
//数字加字符=2+,数字变2进制,左移4位字符变2进制加数字2进制
//转换10进制(不可行)
//
{string a;cin>>a;int count{};int tem{};
int shi[2];int fg{};int i{};int bin1{};

 for(i=0;a[i];++i)
    { if(a[i]>='0'&&a[i]<='9')
    {++count;}
     else if(a[i]>='A' && a[i]<='Z')
     {++tem;}
     }
     fg=count+tem;//输入字符数字和字母的位数
     //cout<<fg;
    if((fg==1)&&(a[0]>='0'&&a[0]<='9'))
     {cout<<a[0];cout<<endl;cout<<"十六进制"<<a;//一位且是数字打印字符
     }
     else if((fg==1)&&(a[0]>='A' && a[0]<='Z'))
    { cout<<static_cast<int>(a[0])-55;
    cout<<endl;
      cout<<"十六进制"<<a;//一位且是字母打印字字母二进制
    }
     else
       {//2位的情况
           
           if(tem==1){int x= static_cast<int>(a[0])-48;     
     int y= static_cast<int>(a[1])-55;
     
    cout<<x*16+y;
     
      cout<<endl;//字母有一个,第一个减48减55数字字母变10进制,推导出十六进制总是a【0】*16+a[1]
      cout<<"十六进制"<<a;}
      if(tem==2)
      //字母2位的情况同上
      {int x= static_cast<int>(a[0])-55;     
     int y= static_cast<int>(a[1])-55;
          cout<<x*16+y;
      cout<<endl;
      cout<<"十六进制"<<a;}
      }
      

 }



把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-10 05:40
快速回复:c++进制问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026016 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved