首页 > 解决方案 > 如何在 C 中打印水平和垂直直方图?

问题描述

我已经开始学习 C 编程语言。如何打印水平和垂直直方图?

标签: c

解决方案


只因为我今晚很无聊:

#include <stdio.h>

int main(void) {
    char str[1024];
    int count[26] = {};
    
    fgets( str, sizeof str, stdin );
    for(int i=0; str[i]; ++i)
    {
        count[tolower(str[i])-'a'] += !!isalpha(str[i]);
    }
    
    for(int i=0; i<sizeof count / sizeof *count; ++i)
    {
        printf("%c: %.*s\n", i+'a', count[i], "*************************************************");
    }
    
    return 0;
}

示例运行:

输入:

这位游泳运动员在周三的 1,500 米自由泳比赛中创造了新的世界纪录,在印第安纳波利斯举行的 2018 年 TYR Pro 游泳系列赛中获得第一名。根据 NBC 体育频道的尼克·扎卡迪 (Nick Zaccardi) 的说法,她的成绩为 15:20.48,比她在 2015 年创下的纪录高出 5 秒。

输出:

Success #stdin #stdout 0s 4456KB
a: *************
b: **
c: **********
d: *********
e: ******************************
f: *****
g: *
h: ********
i: *****************
j: 
k: **
l: ****
m: *****
n: ************
o: ***********
p: *******
q: 
r: *******************
s: ******************
t: *****************
u: *
v: **
w: *******
x: 
y: ***
z: *

输出显示字母e是最常见的,而字母jqx根本没有出现在示例文本中。


推荐阅读