用C写的模拟掷骰子程序

本文介绍了一个使用C语言实现的掷骰子模拟程序。该程序由三个文件组成,包括一个主函数文件和两个辅助文件。它能模拟投掷任意面数的多个骰子,并统计总的投掷次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理自:《C Primer Plus》第五版

 

此程序包含三个文件:

  diceroll.cpp :包含两个函数 rollem(int)和roll_n_dice(int,int)

  diceroll.h :头文件

  manydice.cpp :主函数所在文件

 

diceroll.cpp文件:

 

//掷骰子的模拟程序
#include "diceroll.h"
#include<stdio.h>
#include<stdlib.h>  //为rand()函数提供类库

int roll_count = 0; //外部链接

//掷骰子
static int rollem(int sides)  //这个文件的私有函数
{
	int roll;

	roll = rand() % sides + 1;
	++roll_count;
	return roll;
}

int roll_n_dice(int dice,int sides)
{
	int d;
	int total = 0;
	int temp;
	if(sides < 2)   //边数少于2条
	{
		printf("Need at least 2 sides.\n");
		return -2;
	}
   if(dice < 1)  //骰子数少于一个
	{
		printf("Need at least 1 dice.\n");
		return -1;
	}
   printf("\n产生的骰子数:\n");
  for(d = 0; d < dice;d++)
  {
	  temp = rollem(sides);
	  total +=temp;
	  printf("  %d",temp);
  }
  putchar('\n');
  return total;

	
}

 

diceroll.h文件:

 

//diceroll.h
extern int roll_count;   //掷骰子数
int roll_n_dice(int dice,int sides);
 

manydice.c文件

 

 

//manydice.cpp -- 多次掷骰子的模拟程序
//与diceroll.cpp一起编译

#include<stdio.h>
#include<stdlib.h>   //为srand()函数提供原型
#include<time.h>    //为time()函数提供原型
#include "diceroll.h"  //为roll_n_dice()和roll_count 提供原型

int main(void)
{
	int dice,roll;
	int sides;     //骰子的边数

	srand((unsigned int)time(0));  //随机化种子
	printf("Enter the number of sides per dice,0 to stop.\n");
	while((scanf("%d",&sides) == 1) && sides > 0)   
	{
		printf("how many dice?\n");
		scanf("%d",&dice);    //骰子数
		roll = roll_n_dice(dice,sides);   //得到的总数
		printf("you have rolled a %d using %d %d-sided dice.\n",roll,dice,sides);
		printf("How many sides? enter 0 to stop.\n");
	}
   printf("the rollem() function was called %d times.\n",roll_count);
   printf("GOOD FUTUNE TO YOU !\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值