用C语言写出掷骰子的小程序
本文采用Visual Studio 2019编译器完成
第一步:先创建一个头文件“decroll.h”
#pragma once
extern int roll_count;
int roll_n_dice(int dice, int sides);
第二步:在源文件中添加一个新项目“多次掷骰子模拟程序.c”
#include<stdio.h>
#include<stdlib.h>
#include"diceroll.h"
int main(void)
{
int dice, roll,sides,status;
srand((unsigned int)time(0));
printf("请输入每个骰子的面数(输入0结束).\n");
while (scanf_s("%d", &sides) == 1 && sides > 0)
{
printf("你有几个骰子?\n");
if ((status = scanf_s("%d", &dice)) != 1)
{
if (status == EOF)
break;
else
{
printf("请输入一个整数,请再输入一次.\n");
while (getchar() != '\n')
continue;
printf("请输入每个骰子的面数(输入0结束).\n");
continue;
}
}
roll = roll_n_dice(dice, sides);
printf("你用%d个%d面的骰子掷出了%d.\n", dice,sides,roll);
printf("\n");
printf("请输入每个骰子的面数(输入0结束).\n");
}
printf("\n");
printf("此次模拟程序使用了%d次骰子\n", roll_count);
printf("\n");
printf("祝你好运!\n");
printf("\n");
system("pause");
return 0;
}
第三步:在源文件下继续添加一个新项目“掷骰子.c”
#include<stdio.h>
#include<stdlib.h>
#include"diceroll.h"
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;
if (sides < 2)
{
printf("最少需要2面.\n");
return -2;
}
if (dice < 1)
{
printf("最少需要一个骰子.\n");
return -1;
}
for (d = 0; d < dice; d++)
total += rollem(sides);
return total;
}