100分悬赏简单C语言一题

2025-02-26 19:41:49
推荐回答(1个)
回答1:

#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 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 printf("+\n");

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

//画外框架
printf("+");
for(i=0;i printf("+\n");
free(area);//释放
}