c++输出相应进制的数值,不同进制进行运算scanf prinf读取小技巧

本文详细介绍了C++中使用cincout进行不同进制(十六进制、八进制、十进制)的数值输出方法,以及如何通过scanf和printf控制数值的读入与输出域宽。通过例题展示了如何在程序中实际应用这些技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cin cout进制用法

cout<<hex<<i<<endl; //输出十六进制数(这输出字母的时候输出的是小写字母)

cout<<oct<<i<<endl; //输出八进制数

cout<<dec<<i<<endl; //输出十进制数

// 输出16进制, setbase(int)可以设置8等。
cout << setbase(16) << i << endl;
**

printf("%#o %#X",i,i);输出带前导的八进制和十六进制

printf("%o %X",i,i);输出不带前导的八进制和十六进制

cout.setf(ios::hex,ios::basefield);//设置十六进制显示数值

cout.setf(ios::showbase|ios::uppercase);//设置0x头和大写

例题一

点击进入原题
在这里插入图片描述

#include<iostream>
using namespace std;
int main() {
    long long a,b;
    cin>>hex>>a;//以十六进制读入
    cin>>oct>>b;//以八进制读入
    cout << dec << a+b << endl;//输出十进制的值
    return 0;
}

例题二

点击进入原题
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int i=1234;
cout.setf(ios::showbase|ios::uppercase);//设置0x头和大写
   cout<<oct<<i<<" ";
    cout<<hex<<i<<endl;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int i=1234;
    printf("%#o %#X",i,i);//加#是为了输出前导0和0X
    return 0;
}

scanf printf指定读入读出域宽

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;
通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

例题

例题
在这里插入图片描述
主要关注他的输入输出方式

#include <bits/stdc++.h>
#define pi acos(-1)
#pragma GCC optimize(2)
#define endl '\n'
#define jz cout.setf(ios::showcase|ios::uppercase);//进制前缀
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
typedef long long ll;
using namespace std;
{
    IOS
   int a,b,c;
    scanf("%4d%2d%2d",&a,&b,&c);
    printf("year=%d\nmonth=%02d\ndate=%02d\n",a,b,c);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值