大佬们帮忙看看是哪里有问题吧(显示柱状图)感激不尽!
											描述根据输入的数字和符号生成相应的柱状图显示。
输入
每个输入包含一个测试用例,第一个整数m(1<=m<=20),表示随后有m组数据,每组数据由一个数字n(-15<=n<=15)和一个字符组成,每组数据之间用空格分隔。数字代表柱状图的高度,字母代表该柱使用的画图符号。如果数字后没有字母,默认该柱的画图符号使用加号’+’。
输出
每个柱之间用1个空格间隔,图的空白处用空格填充。用减号’-’表示x轴。正数柱状向上,负数柱状向下。
样例
输入
6 1a 3 4b 2 -2 1
输出
b
+ b
+ b +
a + b + +
-----------
+
+
 程序代码:
程序代码:#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int m,i;
    scanf("%d",&m);//输入一个整数 
    char histogram[21][31];//声明一个名为柱状图的字符型数组 
    char str[20];//声明存入字母的数组 
    int num[20];//声明存入数字的数组 
    if(1<=m<=20){
        for(i=0;i<m;i++){//将数据存入数组中 
            scanf("%d",&num[i]);
            scanf("%c",&str[i]);
            }
        int shang,xia;//shang表示x轴上方的行数,xia表示x轴下方的行数 
        shang=0;
        xia=0;
        for(i=0;i<m;i++){
        
            if(num[i]>0&&shang<num[i]){
                shang=num[i];//找出上方应该有的行数 
            }
            else if(num[i]<=0&&xia>num[i]){
                xia=num[i];//找出下方应该有的行数 
            }
         }
        
        int hang,lie;
        hang=shang-xia+1;//总的行数 
        lie=m;//总的列数 
        int j;
        for(j=0;j<lie;j++){//一列一列的看,先对列进行循环 
            if(num[j]>0){//讨论在数字大于零时的情况 
                for(i=0;i<hang;i++){//再对行进行循环 
                    if(i<shang-num[j]){//x轴上方为空格的情况 
                        histogram[i][j]=' ';
                    }
                    else if(i>=shang-num[j]&&i<shang){ 
                        if(str[j]==' '||str[j]=='\n'){//数字后不带字母的情况
                            histogram[i][j]='+';
                        }
                        else//数字后带字母的情况 
                            histogram[i][j]=str[j];
                    }
                    else if(i==shang)//x轴 
                        histogram[i][j]='-';
                    else//在x轴下方为空格的情况 
                        histogram[i][j]=' ';
                }
                
            }
            else if(num[j]>=0) {//讨论数字小于等于零时的情况 
                for(i=0;i<hang;i++){
                    if(i<shang){//因数字小于零,在x轴上方都是空格 
                        histogram[i][j]=' ';
                    }
                    else if(i==shang)//x轴 
                        histogram[i][j]='-';
                    else if(i>shang&&i<=shang-num[j]){
                        if(str[j]==' '||str[j]=='\n'){//数字后无字母 
                            histogram[i][j]='+';
                        }
                        else//数字后有字母 
                            histogram[i][j]=str[j];
                    }
                    else//在这列中的其他行是空格 
                        histogram[i][j]=' ';
                }
            }
        }
        for(i=0;i<shang;i++){
             if(i==shang){
                 for(j=0;j<lie;j++)
                     {
                     if(j==lie-1)
                       {
                       printf("%c",histogram[i][j]);}
                    else
                       {
                       printf("%c-",histogram[i][j]);}
                    }
        }
             else
                {
                 for(j=0;j<lie;j++)
                    {
                      printf("%c ",histogram[i][j]);}
                }
            printf("\n");
        }
    }
    return 0;
    
         
    
}我的运行结果如下:
6 1a 3 4b 2 -2 1
b
+ b
+ b +
a + b + ?+
麻烦帮我看看到底是哪里出了错,已经想了很久了,可是运行结果就是不对



 
											





 
	    

 
	
 
											



