hdu 4054 模拟 练习十六进制输出

http://acm.hdu.edu.cn/showproblem.php?pid=4054

貌似一般区域赛都会有一道水题

这道题PE了一次  因为输出每个数其实是两个位 如果用空格补齐的话  应该用两个空格 我用了一个空格,,,

学到:

1、%x  十六进制输出  可以输出整型,字符型等等

2、%02x  保证两位 而且会输出先导0的两位

//#pragma comment(linker, "/STACK:102400000,102400000")
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <iostream>
#include <iomanip>
#include <cmath>
#include <map>
#include <set>
#include <queue>
using namespace std;

#define ls(rt) rt*2
#define rs(rt) rt*2+1
#define ll long long
#define ull unsigned long long
#define rep(i,s,e) for(int i=s;i<e;i++)
#define repe(i,s,e) for(int i=s;i<=e;i++)
#define CL(a,b) memset(a,b,sizeof(a))
#define IN(s) freopen(s,"r",stdin)
#define OUT(s) freopen(s,"w",stdout)
const ll ll_INF = ((ull)(-1))>>1;
const double EPS = 1e-8;
const double pi = acos(-1.0);
const int INF = 100000000;

const int MAXN = 4096 +200;
char s[MAXN];
int len;

char ch(char x)
{
    if(x>='a' && x<='z')return x-32;
    if(x>='A' && x<='Z')return x+32;
    return x;
}

void solve()
{
    int cnt;
    for(int i=0;i<len;i+=16)
    {
        if(i%16 == 0)
            printf("%04x:",i);
        cnt=0;
        for(int j=i;j<len && j<16+i;j+=2)
        {
            printf(" %02x",s[j]);
            if(j+1>=len)printf("  ");
            else printf("%02x",s[j+1]);
            cnt+=2;
        }
        //putchar(' ');
        int cc=0;
        while(cnt<16)
        {
            //printf("%d%d%d%d%d",cc,cc,cc,cc,cc);
            printf("     ");
            cnt+=2;
        }
        putchar(' ');//putchar('|');
        for(int j=i;j<len && j<16+i;j++)
            putchar(ch(s[j]));
        putchar('\n');
    }
}

int main()
{
    //IN("hdu4054.txt");
    while(gets(s))
    {
        len=strlen(s);
        solve();
    }
    return 0;
}
时间: 2024-12-15 13:29:00

hdu 4054 模拟 练习十六进制输出的相关文章

HDU 4054 Hexadecimal View 模拟

戳这里:HDU 4054 //复习一下 cin.getline() 的用法 1 #include "bits/stdc++.h" 2 using namespace std; 3 char str[5000]; 4 5 char Change(char c) 6 { 7 if('A' <= c && c <= 'Z') { 8 return c + 32; 9 } 10 if('a' <= c && c <= 'z') { 11

HDU 4930 模拟

Fighting the Landlords Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 266    Accepted Submission(s): 87 Problem Description Fighting the Landlords is a card game which has been a heat for yea

HDU 4054 - Hexadecimal View

先上一枚水题,模拟. /* ID:esxgx1 LANG:C++ PROG:hdu4054 */ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int main(void) { #ifndef ONLINE_JUDGE freopen("in.txt", "r", st

C语言中以十六进制输出字符型变量会出现&#39;ffffff&quot;的问题

最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: C代码   char buf[10] = {0}; buf[0] = 0xbf; printf("%2x\n\n\n", buf[0]);            /*在终端将会显示成:ffffffbf*/ buf[1] = 0x7f; printf("%2x\n\n\n", bu

hdu 2016 数据的交换输出

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2016 题目大意:把最小的和第一个交换并输出.注意格式哦! 1 #include <stdio.h> 2 int main () 3 { 4 int n,a[110],i,j,t,min; 5 while (scanf("%d",&n)!=EOF) 6 { 7 if (n==0) 8 break; 9 for (i=0; i<n; i++) 10 { 11 scan

C++分别以十进制和十六进制输出一个指针的地址

输出一个地址,cout默认以十六进制输出,可以用long(p)以十进制的方式输出.

基于tcp/ip以太网通信实现0-5v,4-20ma模拟量AI采集以及模拟量AO输出控制-综科智控

ZKA-XXX-ETH 使 用 说 明 书 [ ]绝密 [ ]NDA [X]公开 版本历史 版本 修订日期 修订人 修订内容 1.0 2014-10-13 综科智控 1.0初版正式发布 1.1 2014-12-07 综科智控 填图 1.2 2015-03-01 综科智控 更新配置 1.3 2015-08-13 综科智控 修正组网图 1.4 2015-09-28 综科智控 增加ZKA型号 1.5 2016-05-22 综科智控 增加附件 1.6 2016-11-01 综科智控 修改组网图 1.7

HDU 5071 模拟

考察英语的题 - -# 按条件模拟,一遍就行了,每个聊天对象有其价值U,数组模拟队列过程即可,若存在Top标记,则和Top标记的人聊天,否则和队列的第一个人聊天 mark记录队尾,top记录Top操作,data[i].p记录U,data[i].x记录chat数,data[i].y记录该人是否被删除 Add U:在 队尾插入价值为U的人,需要特判U人已经存在 Close U::在整个队列中查找价值为U的人,将其删除,需要特判该人不存在 Chat x:当前聊天页面的人chat+=x,特判当前队列没有

hdu 5055(模拟)

Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1481    Accepted Submission(s): 552 Problem Description Recently, Bob has been thinking about a math problem.There are N Digi