模拟算法思路
在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); }