1. 程式人生 > >[洛谷P1598]垂直柱狀圖

[洛谷P1598]垂直柱狀圖

tdi etc inline 空字符 -i 在哪裏 getchar() 輸出 size

準備一個二維\(char\)數組\(o\),用來預填寫好要輸出的字符,最後一並輸出

輸出前判斷一下每行最後一個非空字符在哪裏

具體看代碼

Code

#include <cstdio>
#include <cstring>
char ch,o[500][60];
int i,j,r,cnt[30]/*標字母出現次數*/,max;
int main()
{
    for (ch=getchar(); ch!=-1; ch=getchar()) // ch==-1代表讀到了輸入的末尾
    if (ch >= ‘A‘ && ch <= ‘Z‘) // 如果讀到的是一個大寫字母
    {
        i = ch-‘A‘;
        ++cnt[i]; // 統計每個字母出現了多少次
        if (cnt[i] > max) max = cnt[i]; // 更新表格的最大高度
    }
    memset(o, ‘ ‘, sizeof(o)); // 把數組o中的元素全置為空格
    for (i=0; i<26; ++i) //預狀填輸出數組
    {
        o[0][i*2] = ‘A‘+i;
        for (j=1; j<=cnt[i]; ++j) o[j][i*2] = ‘*‘;
    }
    for (i=max; i>=0; --i) //輸出數組
    {
        for (r=50; o[i][r]==‘ ‘; --r); //求第i行最後一個非空字符在哪裏
        for (j=0; j<=r; ++j) printf("%c", o[i][j]);
        printf("\n");
    }
}

[洛谷P1598]垂直柱狀圖