c - 如何根据输入制作垂直图?

标签 c

输入

1 1 3 1

输出

  # 
  # 
####

输入

0 3 0 4 5 

输出

    #
   ##
 # ##
 # ##
 # ##

这是我目前的代码..

#include <stdio.h>
int main (void){
    int height[80],length=0,max=0;
    while ((scanf("%d",&height[length++])) != EOF && length <=79) {
        if (height[length-1] > max) {
            max=height[length-1];
        }
    }
}

输入的值不得超过 80 个。 我不确定如何从这里添加更多代码。

最佳答案

像这样:

length -= 1;
for(;max>=0;--max){
    for(int i = 0; i < length; ++i){
        putchar(height[i] > max ? '#' : ' ');
    }
    putchar('\n');
}

还有 while ((scanf("%d",&height[length++])) != EOF && length <=79){是错误的。
这是因为在height[79] 之后while-body 将不会被执行。已阅读。
所以,比如修改如下。

#include <stdio.h>

#define DATA_MAX_LEN 80

int main (void){
    int height[DATA_MAX_LEN], length = 0, max = 0;
    for(int len = 0, h; len < DATA_MAX_LEN && scanf("%d", &h) == 1; ++len){
        height[length++] = h;
        if (height[length-1] > max){
            max=height[length-1];
        }
    }
    while(max--){
        for(int i = 0; i < length; ++i){
            putchar(height[i] > max ? '#' : ' ');
        }
        putchar('\n');
    }
}

关于c - 如何根据输入制作垂直图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44426000/

相关文章:

c - PostgreSQL 数组结构

c - 如何在 C 中使用参数打印文本文件中的字符?

c - 反向抛光转换器

c - 在 clang 上启用 Sanitizers

c++ - 检查输出顺序是否正确

c++ - 是否有 C/C++ 函数可以安全地处理被零除?

c++ - 检测标准输入是终端还是管道?

代码永远在 C 中运行——我做错了什么?

c - C语言打印一行长度的程序

c - GCC 如何自动知道包含 glib 库?