#includestdio.h
创新互联公司-专业网站定制、快速模板网站建设、高性价比青岛网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式青岛网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖青岛地区。费用合理售后完善,十载实体公司更值得信赖。
#includestdlib.h
#includetime.h
int roll_count=0;
int roll_n_dice(int dice,int sides);
int main(void)
{
int dice,roll;
int sides;
srand((unsigned int)time(0));定义随机函数的种子为当前系统时间
printf("Enter the number of sides per die.0 to stop.\n");
while(scanf("%d",sides)==1sides0) 如果sides有输入且大于0,循环急需
{
printf("How many dice?\n");
scanf("%d",dice); 输入dice的值
roll=roll_n_dice(dice,sides); 将dinc与sides的值传入函数roll_n_dice中,roll为接收量
printf("You have rolled a %d using %d %d-sided dice.\n",
roll,dice,sides); 打印着三个值
printf("How many sides? Enter 0 to stop.\n");
}键入0停止
printf("The rollem() function was called %d times.\n",
roll_count);打印roll_count的值
printf("GOOD FORTUNE TO YOU!\n");
getch();
}
static int rollem(int sides)
{
int roll;
roll=rand()%sides+1; 随机函数
++roll_count;
return roll; 返回roll的值
}
int roll_n_dice(int dice,int sides)
{
int d;
int total=0;
if(sides2)如果输入的sides小于2
{
printf("Need at least 2 sides.\n");sides最少需要2
return -2;返回-2
}
if(dice1)如果dice小于1
{
printf("Need at least 1 die.\n");
return -1;
}
for(d=0;ddice;d++)
total+=rollem(sides);调用rollem这个随机函数
return total;
不能srand是定义随机函数的种子值,也就是起始值,如果不定义的话随机函数运行不了,不过现在的vc好像已经默认定义种子是当前时间了
C和C++对函数的命名规则不同(C++需要支持函数重载,因此函数名必须包含参数类型),因此C++不能直接使用C的函数。而有些编译器只是按文件的后缀名区分C源文件和C++源文件,遇到在C++中调用C函数时就会报错……简单的解决方法就是把pe12-7.cpp的文件名改成pe12-7.c或diceroll.c的文件名改成diceroll.cpp
一.rand()函数产生0到32767范围内的整数。 二.有且仅有5种规则立方体的所有面的形状和大小都相同(四、六、八、十二、二十面)。 三.算法:
⒈把随机数除以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)==1sides0)
{
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(sides2)
{
printf("至少两个面!!!\n");
return -2;
}
if(dice1)
{
printf("至少一个骰子!!!\n");
return -1;
}
for(d=0;ddice;d++) total+=rollem(sides);
return total;
}