100分悬赏简单C语言一题

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:52:10
用户先指定一个平面,然后指定任意个星星后,随机排列即可(即乱数)

执行后要如下:

Input size of map (x,y) > 5 6 (平面的大小)
Input number of stars in the map > 8 (星的数)
+-----+
|*** |
|* * |
| |
| |
| * |
| * * |
+----- +

指定面积时不要使用数组,使用malloc函数。乱数用rand 函数。

就这些了,谢谢大家……

#include "stdio.h"
#include "time.h"
#include "stdlib.h"

void main()
{
int i,j,k,x,y,stars;
char *area;

printf("Input size of map (x,y) > ");
scanf("%d %d",&x,&y);
printf("Input number of stars in the map > ");
scanf("%d",&stars);
area=(char *) malloc(x*y);//分配
for(i=0;i<x*y;i++) area[i]=0;//初始化
if(stars>x*y) i=x*y;//面积不足以容纳星时以面积为准
else i=stars;
srand((unsigned)time(NULL));
while(i>0)//随机分配
{
j=rand()%x;
k=rand()%y;
if(!area[k*x+j])//星互不重合
{
area[k*x+j]=1;
i--;
}
}

//画外框架
printf("+");
for(i=0;i<x;i++) printf("-");
printf("+\n");

//画星的分布
for(i=0;i<y;i++)
{
printf("|");
for(j=0;j<x;j++)
{
if(area[i*x+j])