• 当前位置:首页>>C语言>>C语言编程实例>>掷骰子
  • 掷骰子
  • ㈠.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)==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=0;d<dice;d++)  total+=rollem(sides);
    return total;
    }

     

    [1]