强撸出来的
#include
#include
#include
typedef struct data
{
int* array;
int count;
}DATA;
int* getLimit(int* a,int count);
void drawBar(int* a,int count);
DATA getData();
int main()
{
DATA data = getData();
drawBar(data.array,data.count);
system("pause");
return 0;
}
int* getLimit(int* a,int count)
{
static int limit[2]={0};
for(int i=0;i
{
limit[1] = limit[1]>a[i] ? limit[1] : a[i];
limit[0] = limit[0]
}
return limit;
}
void drawBar(int* a,int count)
{
int* pLimit = getLimit(a,count);
int min = pLimit[0]-1;
int max = pLimit[1];
printf("\n输入数据为:");
for(int i=0;i
printf("% d ",a[i]);
puts("");
puts("");
puts("^");
for(int i=max;i>min;i--)
{
char* p[count];
if(i==0)
{
printf("+");
for(int j=0;j<6*count;j++)
printf("-");
puts(">");
}
else
{
if(i>0)
{
for(int j=0;j
{
if(a[j]>=i)
p[j]="####";
else
p[j]=" ";
}
}
else
{
for(int j=0;j
{
if(a[j]>=0 || (a[j]<0 && a[j]>i))
p[j]=" ";
else
p[j]="####";
}
}
printf("|");
for(int j=0;j
{
printf(" %s",p[j]);
}
puts("");
}
}
puts("");
}
DATA getData()
{
DATA data;
int a[100]={0};//默认接受100次输入
int count = 0;
char flag = 0;
while(1)
{
puts("请输入数字:");
scanf("%d",&a[count]);
count++;
if(count>99)
break;
puts("是否继续输入(y/n):");
fflush(stdin);
flag = tolower(getchar());
if(flag=='n')
break;
}
data.array = a;
data.count = count;
return data;
}