掷色子、骰子--链接、随机数

  12-4有个小问题,在puts("有多少个骰子");的输入判断中如果输入不是正数,会直接跳出,后续再行查看。

manysides.cpp主文件

#include "dicerolls.h" //提供roll_n_dice()原型,roll_count声明
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //为time()提供原型


int main(void)
{
	int dice, roll;
	int sides;
	int status;
	char ch;

	srand((unsigned int )time(0)); 
	 //为【 roll:面数统计】提供随机种子,0 ~ 32567

	puts("请输入面数,0去停止");
	while (scanf("%d", &sides) && sides > 0)
	{
		puts("有多少个骰子");
		if (( status = scanf("%d", &dice)) != 1)
		{
			if (status == EOF) //EOF为-1,个数不可能为负值
			{
				break;
				printf("验证--(status < 0)--\n");
			}
			else
			{
				//也可以这样⬇
				/*
				 while((ch = getchar()) != '\n')
				 {
					putchar(ch); //把错误选项输出到屏幕上而已
					puts("输入错误,请输入一个整数。");
				 }
				*/
				puts("你应该输入一个正整数。");
				puts("请再次输入。");
				while (getchar() != '\n')
				{
					//处理错误输入
					continue; 
				}

				puts("有多少面?0去停止");
				continue;
			}
		}

		roll = roll_n_dice(dice, sides);
		printf("一共面数= %d , 有%d个骰子, 输入的面数= %d\n", roll, dice, sides);
		puts("请再次输入,0去停止\n");
		puts("请输入面数,0去停止");
	}
	printf("一共使用了%d次rollem()函数\n", roll_count);

	return 0;
}

dicerools.cpp

#include "dicerolls.h"
#include <stdio.h>
#include <stdlib.h>


int roll_count = 0; 
//外部链接--【定义式声明】(与1.h中的第一行对应)

static int rollem(int sides) //文件私有,仅仅为roll_n_dice( )函数服务
{
	int roll;//面数统计

	roll = rand() % sides + 1;
	 //1 ~ 6的随机数
	
	printf("验证--rollem--\n");
	++roll_count; 
	//对rollem( )函数次数调用的计算

	return roll;
}

int roll_n_dice(int dice, int sides)
{
	int d;
	int total = 0;

	if (sides < 2) //骰子面数不会小于偶数
	{
		puts("需要至少两面才行。");
		printf("验证--(sides < 2)--\n");
		return -2;
	}
	if (dice < 1)
	{
		puts("需要至少一个骰子才行。");
		return -1;
	}

	for (d = 0; d < dice; d++) //计算投掷的骰子个数可能产生的面数总和
	{
		total += rollem(sides);
		 //manydices.cpp中输入sides,函数调用向函数实现中的形参进行值传递,返回roll值
		
		printf("验证--(total)--\n");
	}
	return total;

}

dicesidesrool.h文件

extern int roll_count; //--【引用式声明】

int roll_n_dice(int dice, int sides);//骰子个数   骰子面数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扳手的海角

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值