c语言可以编译数字雨吗,可以运行,但出不来结果,想要做数字雨

回复 2楼 lin5161678大佬,那这样呢?新人学校刚学没几周,但有这个任务

#include

#include

#include

#include

#define M 40//行

#define N 100//列

#define TIME 40//刷新的速度,这里是停顿的时间

#define midu 8//密度

void Pos(int x, int y);//设置光标位置,决定要在什么位置输出

char output[M*N+M+1];//行*列+M个换行+1个结束符

void Create(char rain[M][N]);

void Updata(char rain[M][N]);

void Print(char rain[M][N]);

int main(void)

{

char rain[M][N];

//int changdu;

srand((unsigned)time(NULL));//初始化随机的一个种子

system("color 0A");//设置背景颜色

//while(1){

//{

//changdu=rand()%(M/4);

Create(rain);//用于最开始的创建

while(1)

{

Sleep(TIME);//每次要刷新的速度,之前定义了,

//            因为每次都要生成新的数组,中间存在间隔

Updata(rain);//用于每一行向下一行移动

}

//}

return 0;

}

void Create(char rain[M][N])

{

int changdu;

int i,j,t;

for(i = 0;i < M;++i)

{

for(j = 0;j < N;++j)

{

if(rand()%10 < midu)

rain[i][j] = ' ';

else

rain[i][j] = rand()%10 + '0';//生成第一滴雨

changdu=int(rand()%(M/4));

if(i>changdu)

{

for(t=1;t<=changdu;t++)

{

rain[i-t][j]= rand()%10 + '0';

}

}

else

{

for(t=1;t<=i;t++)

{

rain[i-t][j]= rand()%10 + '0';

}

}

}

}

}

void Updata(char rain[M][N])

{

int i,j,t;

int changdu;

for(i = M-2;i >= 0;--i)

{

for(j = 0;j < N;++j)

{

rain[i+1][j] = rain[i][j];//把上面的一行写到下一行

}

}

for(j = 0;j < N;++j)

{

if(rand()%10 < midu)

rain[i][j] = ' ';

else

rain[i][j] = rand()%10 + '0';//生成第一滴雨

changdu=int(rand()%(M/4));

if(i>changdu)

{

for(t=1;t<=changdu;t++)

{

rain[i-t][j]= rand()%10 + '0';

}

}

else

{

for(t=1;t<=i;t++)

{

rain[i-t][j]= rand()%10 + '0';

}

}

}

Pos(0,0);

Print(rain);

}

void Print(char rain[M][N])

{

int i,j;

int t = 0;

for(i = 0;i < M;++i)

{

for(j = 0;j < N;++j)

{

output[t++] = rain[i][j];

//putchar(info[i][j]);

}

output[t++] = '\n';

//putchar('\n');

}

output[t] = '\0';

printf("%s",output);

}

void Pos(int x,int y)

{

COORD pos;

HANDLE hOutput;

pos.X = x;

pos.Y = y;

hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hOutput,pos);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值