⒈把随机数除以6(面数)取余数,余数在0到5间的整数;
⒉余数加一,得1到6的整数;
⒊因为骰子有不同的面闹租数,因此把第一步的面数用变量sides代替。四.源程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> int main(void)
{
int rollem(int)
int roll_n_dice(int,int) int dice,roll,sides/*骰数个数,总点数,一个骰子的面数*/srand((unsigned int)time(0))
printf("输入骰子的面数(输入0退出):")
while(scanf("%d",&sides)==1&&sides>0)
{
printf("输入骰子的个数:")
scanf("%d",&dice)
roll=roll_n_dice(dice,sides)
printf("使用%d个%d面骰子掷%d点。",dice,sides,roll)
printf("\n输入骰子的面数(输入0退出):")
}
return 0
}int rollem(int sides)
{
int roll roll=rand()%sides+1
return roll
}int roll_n_dice(int dice,int sides)
{
int d
int total=0 if(sides<2)
{
printf("至少两个面!!!\n")
return -2
}
if(dice<1)
{
printf("至少一个骰子!!!\n")
return -1
}
for(d=0d<diced++) total+=rollem(sides)
return total
}
具体 *** 作步骤:1)在VC++中建立一个工程;
2)在程序开始的注释行禅纤旁中写上你自己的信息;
3)生成1-6之间的一个随机数,为了使随机数更随机,可以使用随机数初始化函数srand()
模拟掷骰子的程序段参考如下:
printf("\n请掷骰子(按Enter键)")
getchar()
srand((unsigned)time(NULL))
num1=rand()%6+1
printf("\n您掷的骰子点数是%d\n",num1)
为了使上面一段程序能够正常编译连接,在程序开始应该包含下面的头文件:
#include"stdlib.h"
#include"time.h"
4)在程序编译正确后,要求在程序运行时提示您按ENTER键(模拟掷骰子).
在你按ENTER键后,生竖枯成第一个随机数,并进行显示;
之后提示你第二次掷骰子(按ENTER键),在你按ENTER键后,生成第二个随机数,并进行显示。
可以利用getchar()函数等待按下ENTER。注意在需要时使用函数fflush(stdin)清除键盘缓冲贺橡区。
5)使用ifelse转移控制语句判断两次生成的随机数的大小,分别根据不同情况输出下面的语句之一:
"\nPlayer1的点数大,Player1胜出!\n"
"\nPlayer2的点数大,Player2胜出!\n"
"\nPlayer1和Player2点数一样大,平局!\n"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)