1. 程式人生 > >hdu 6297(常用的輸出格式總結)

hdu 6297(常用的輸出格式總結)

fix sin stat 題目 頭文件 指數 ans 基數 wrong

題目鏈接:https://cn.vjudge.net/problem/HDU-6297

題目介紹:一道關於輸出格式規範問題

wrong answer代碼:

技術分享圖片
#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
using namespace std;
int main()
{
    int T;
    cin>>T;
    int rank;
    string str;
    int prob;
    
string Tstr; while(T--) { int n=0; cin>>rank>>str>>prob>>Tstr; if(Tstr[0]==R) cin>>n; printf("%3d|",rank); int mylen=str.length(); cout<<str; for(int i=mylen;i<=15;i++) cout
<<" "; printf("|%d|[",prob); if(Tstr[0]==R) { for(int i=1;i<=n;i++) cout<<"X"; for(int i=n;i<=10;i++) cout<<" "; cout<<"]"<<endl; } else { int length=Tstr.length();
for(int i=1;i<=4;i++) cout<<" "; if(Tstr[0]==F&&Tstr[1]==B) { length=3; cout<<"AC*"; } else cout<<Tstr; for(int i=length+4;i<=10;i++) cout<<" "; cout<<"]"<<endl; } } return 0; }
View Code

錯誤點:

1.識別Tstr字符串是否為“Running"時,只以首字母標記(Tstr[0]==‘R‘),導致識別資料不足,可以識別“RTE"與”Running",識別混亂,所以改成(Tstr==”Running")

2.與輸出樣式相比,末尾多輸出了一個空格

ac代碼:

技術分享圖片
#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
using namespace std;
int main()
{
    int T;
    cin>>T;
    int rank;
    string str;
    int prob;
    string Tstr;
    while(T--)
    {
        int n=0;
        cin>>rank>>str>>prob>>Tstr;
        if(Tstr=="Running")
        cin>>n;
        printf("%3d|",rank);
        int mylen=str.length();
        cout<<str;
        for(int i=mylen;i<=15;i++)
        cout<<" ";
        printf("|%d|[",prob);
        if(Tstr=="Running")
        {
        for(int i=1;i<=n;i++)
        cout<<"X";
        for(int i=n;i<10;i++)
        cout<<" ";
        cout<<"]"<<endl;
        } 
        else
        {
        int length=Tstr.length();
        for(int i=1;i<=4;i++)
        cout<<" ";
        if(Tstr[0]==F&&Tstr[1]==B)
        {
        length=3;
        cout<<"AC*";
        }
        else
        cout<<Tstr;
        for(int i=length+4;i<10;i++)
        cout<<" ";
        cout<<"]"<<endl;
        }
     } 
     return 0;
 } 
View Code

接下來,我們來學習一下常用的輸出格式:

頭文件:#include<iomanip>

以下是一些常用的:

dec 置基數為10 相當於"%d"
hex 置基數為16 相當於"%X"
oct 置基數為8 相當於"%o"
setfill(c) 設填充字符為c
setprecision(n)   設顯示小數精度為n位
setw(n) 設域寬為n個字符
setioflags(ios::fixed)   固定的浮點顯示
setioflags(ios::scientific) 指數表示
setiosflags(ios::left) 左對齊
setiosflags(ios::right) 右對齊
setiosflags(ios::skipws 忽略前導空白
setiosflags(ios::uppercase) 16進制數大寫輸出
setiosflags(ios::lowercase) 16進制小寫輸出
setiosflags(ios::showpoint) 強制顯示小數點
setiosflags(ios::showpos)   強制顯示符號

代碼舉例:

 19|qqqqq_University|1001|[XXX       ]
125|quailty_U_2     |1002|[    WA    ]
  4|quailty_U_3     |1003|[    TLE   ]

比如上面的那道題,需要用到輸出時每個數據是 右對齊3 左對齊16 4 10

像第一個數據需要右對齊:cout<<right<<setw(3)<<Rank<<"|";

第二個數據需要左對齊:cout<<left<<setw(16)<<name<<"|";

第三個數據左對齊:cout<<left<<setw(4)<<pro<<"|[";

第四個需要分類:

針對下面兩個的類型:輸出字符串,但字符串是居中的(我們可以這樣處理:先輸出四個空字符,然後對字符串進行左對齊:cout<<" "<<setw(6)<<status<<"]"<<endl;

hdu 6297(常用的輸出格式總結)