输入
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/