有一道挺难的ANSI C的问题,各位哥哥帮帮我吧~

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:13:39
问题

这个选项包括建立一个函数,最多可以输入10个integer,然后显示一个水平的或者垂直的直方图。下面的例子是一个垂直的直方图。水平的需要逆时针翻转90度。

输入的数字超过10的,只能显示10个"*",然后在末尾显示输入的数字(例如下面的例子,输入数字20).直方图的长度必须限制在输入数字的个数上。

例如:

输入数字:20 5 2
方向(H 垂直, V水平): H

-0----5----10
-+----+----+
-|**********20
-|*****
3|**

(用ANSI C(C89), gcc编译器,UNIX环境)
P.S:如果输入V翻转90度以后就变成:
2
0
1+*
0|*
-|*
-|*
-|*
5+**
-|**
-|**
-|***
-|***
0+---
3

谢谢各位哥哥了,我就这些分了全给你~
翻转后的画的不对,大家就不要理了,反正就是上面那个垂直的逆时针翻转90度,而且20也要写成:
2
0

对了,取数用fgets()

终于做完了..........竖直方图有些复杂,我是在WINDOWS下做的,不过用的是ANSI C语法...
#include <stdio.h>
#include <string.h>

/*定义全局变量用于保存10个整数*/
int GV_number[10];

/*声明函数*/
/*功能:显示主菜单
返回值:选择的数据*/
int show_menu(void);
/*接收输入10个数并保存的函数*/
void input_number(void);
/*根据10个数画水平直方图的函数*/
void draw_V(void);
/*根据10个数画垂直直方图的函数*/
void draw_H(void);

int main(void)
{
int choice=-1;

/*初始化10个数都为0*/
memset(GV_number,0x0,sizeof(GV_number));

while( choice != 4 )
{
/*显示菜单并返回选择项*/
choice=show_menu();
/*根据选择项来做相应的处理*/
switch(choice)
{
/*输入10个数*/
case 1:
{
input_number();
break;
}
/*画水平直方图*/
case 2:
{
draw_V();
break;
}
/*画垂直直方图*/
case 3:
{
draw_H();
break;
}
default:
{
/*其它情况不