⒈把随机数除以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
}
#include<stdio.h>#include<stdlib.h>
#include<time.h>
int main(void)
{
int ai[3] //甲的三个骰子的点数
int bi[3] //乙的三个骰子的点数
int i
srand((unsigned)time(NULL)) //播时间种子,产生随机数
for (i = 0 i < 3 i++)
{
ai[i] = rand() % 6 + 1 //随机产生1-6的点数
bi[i] = rand() % 6 + 1
}
printf("甲的点数:")
for (i = 0 i<3 i++)
{
printf("%d ", ai[i])
}
printf("\n乙的点数:")
for (i = 0 i<3 i++)
{
printf("%d ", bi[i])
}
if (ai[0] + ai[1] + ai[2]>bi[0] + bi[1] + bi[2])
{
printf("\n\n甲获胜.\n")
}
else{
printf("\n\n乙获胜.\n")
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)