C 如何根据输入制作垂直图形?

C 如何根据输入制作垂直图形?,c,C,输入 输出 1 1 3 1 0 3 0 4 5 输入 输出 1 1 3 1 0 3 0 4 5 这是我目前掌握的代码 # ## # ## # ## # ## #包括 内部主(空){ 整数高度[80],长度=0,最大值=0; while((scanf(“%d”,&height[length++])!=EOF&&length max){ 最大值=高度[长度-1]; } } } 输入的值不能超过80个。 我不能完全确定如何从这里添加更多代码。查找存储在arr[]中的

输入

输出

1 1 3 1
0 3 0 4 5 
输入

输出

1 1 3 1
0 3 0 4 5 
这是我目前掌握的代码

    #
   ##
 # ##
 # ##
 # ##
#包括
内部主(空){
整数高度[80],长度=0,最大值=0;
while((scanf(“%d”,&height[length++])!=EOF&&length max){
最大值=高度[长度-1];
}
}
}
输入的值不能超过80个。
我不能完全确定如何从这里添加更多代码。

查找存储在
arr[]
中的所有输入的最大高度。现在有一个外部循环,它从最大高度
hm
迭代到1。外循环的每次迭代,检查内循环的所有值,并检查
arr[i]>=j
。如果是,请打印一个
#
,否则请打印一个空格

#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];
        }
    }
}
int-arr[80];
int n;
cin>>n;
int hm=-1;
对于(int i=0;i>arr[i];
hm=最大值(hm,arr[i]);
}
对于(int i=hm;i>0;i--){
对于(int j=0;j=i)

无法找到存储在
arr[]
中的所有输入的最大高度。现在有一个外循环,从最大高度
hm
迭代到1。每次外循环迭代,都要检查内循环的所有值,并检查
arr[i]>=j
。如果是,则打印一个
,否则打印一个空格

#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];
        }
    }
}
int-arr[80];
int n;
cin>>n;
int hm=-1;
对于(int i=0;i>arr[i];
hm=最大值(hm,arr[i]);
}
对于(int i=hm;i>0;i--){
对于(int j=0;j=i)
不能像这样:

int arr[80];
int n;

cin>>n;

int hm = -1;
for(int i = 0; i < n; i++){
    cin>>arr[i];
    hm = max(hm, arr[i]);
}

for(int i = hm; i > 0; i--){
    for(int j = 0; j<n; j++){
        if(arr[j]>=i)
            cout<<"#";
        else cout<<" ";
    }
    cout<<'\n';
}
像这样:

int arr[80];
int n;

cin>>n;

int hm = -1;
for(int i = 0; i < n; i++){
    cin>>arr[i];
    hm = max(hm, arr[i]);
}

for(int i = hm; i > 0; i--){
    for(int j = 0; j<n; j++){
        if(arr[j]>=i)
            cout<<"#";
        else cout<<" ";
    }
    cout<<'\n';
}

这可能对你有用

#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');
    }
}

这可能对你有用

#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');
    }
}

我根据问题中的代码编写了这段代码。这将一个接一个地获取输入数字。它最多只能消耗80个数字

    #
   ##
 # ##
 # ##
 # ##
此代码首先创建一个
char
矩阵,该矩阵对应于:

5 3 0 4 5
然后将其转置以获得所需的图形:

#####  // 5 #'s in this row
  ###  // 3 #'s in this row
       // 0 #'s in this row
 ####  // 4 #'s in this row
#####  // 5 #'s in this row
如果您编译它并使用以下输入序列运行:
53045
您将获得以下输出序列

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

5//我根据问题中的代码编写了此代码。这将一个接一个地获取输入数字。它最多只能消耗80个数字

    #
   ##
 # ##
 # ##
 # ##
此代码首先创建一个
char
矩阵,该矩阵对应于:

5 3 0 4 5
然后将其转置以获得所需的图形:

#####  // 5 #'s in this row
  ###  // 3 #'s in this row
       // 0 #'s in this row
 ####  // 4 #'s in this row
#####  // 5 #'s in this row
如果您编译它并使用以下输入序列运行:
53045
您将获得以下输出序列

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

5//在图形纸上画出一次打印一行的方式可能会有帮助。在图形纸上画出一次打印一行的方式可能会有帮助。谢谢!但是有没有办法让这个程序一直运行到达到EOF?例如,我输入、获取输出、输入获取输出……等等?直到EOF?@stanleycho在达到EOF之前,你可以将每一行输入作为一个a。然后在循环中从字符串中获取数组的输入。@YunbinLiu不用担心,我得到了它。非常感谢!谢谢!但是有没有办法让这个程序一直运行到达到EOF?比如,我输入,得到输出,输入得到输出…等等?直到EOF?@stanleycho您可以将每行输入作为一个,直到达到EOF。然后在循环中从字符串中获取数组的输入。@yunbiniu不用担心,我得到了它。非常感谢!