模拟算法

模拟算法思路

在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);
}

猜你喜欢

转载自blog.csdn.net/qq_41398448/article/details/80380666