模拟算法思路
在C语言中,通常使用srand()和rand()函数生成随机函数。其中函数rand()用于初始化随机数发生器,然后使用函数rand()来生成随机数。如果要使用上述两个函数,则需要在源程序头部包含time.h,stdlib.h文件
在程序设计过程中,可使用随机函数来模拟自然界中发生的不课预测的情况。在解题时,需仔细分析题目给出的规则,要尽可能地考虑所有可能出现的情况,这是解模拟问题的关键点之一。
猜数游戏
用计算机实现一个随机1~100之间的数字,然后由用户来猜这个数,根据用户猜测的数的大小分别给出不同的提示。
算法分析:
(1)先通过rand()随机生成一个1~100的数字。
(2)通过循环让用户逐个输入要猜测的整数,根据输入的数据和随机数字进行比较。
(3)将比较的结果输出
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void main()
{
int n,m=0;
int i=0;
srand(time(NULL));
n=rand()%100+1;
do{
printf("输入所猜数字:");
scanf("%d",&m);
i++;
if(m>n){
printf("错误!所猜数太大了!\n");
}
else if(m<n){
printf("错误!所猜数太小了!\n");
}
}while(m!=n);
printf("答对了!\n");
printf("共猜测了%d次",i);
if(i<=5){
printf("你太聪明了,这么快就猜出来了!");
}
else if(i>5){
printf("还需改进方法,以便更快猜出来!");
}
getchar();
}
掷骰子游戏
要求根据用户输入骰子数量和参赛人数,然后由计算机随机生成每一粒骰子的数量,再累加得到每一个选手的总点数。
算法分析:
(1)定义一个随机函数play,根据骰子数量随机生成骰子的点数。
(2)设置一个死循环,可以重复操作。
(3)处理每个选手,调用函数play来模拟掷骰子游戏的。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void paly(int n)
{
int i,m=0,t=0;
for(i=0;i<n;i++){
t=rand()%6+1;
m+=t;
printf("\t第%d粒:%d;\n",i+1,t);
}
printf("\t总点数为:%d\n",m);
}
void main()
{
int c; //参赛人数
int n; //骰子数量
int i;
do{
srand(time(NULL));
printf("设置骰子数量(输入0退出):");
scanf("%d",&n);
if(n==0) break; //至少输入一个骰子
printf("\n输入本轮参赛人数(输入0退出):");
scanf("%d",&c);
if(c==0) break;
for(i=0;i<c;i++){
printf("\n第%d位选手掷出的骰子为:\n",i+1);
paly(n);
}
printf("\n");
}while(1);
}