首页 > 编程语言 >C++-练习-46

C++-练习-46

时间:2024-09-29 13:22:34浏览次数:11  
标签:cout 号码 46 double 练习 unsigned C++ choices result

题目:

许多州的彩票发行机构都使用如下所示程序的简单彩票的变体。在这些玩法中,玩家从一组被称为域号码的号码中选择几个。列如,可以从域号码1~47中选择5个号码;还可以从第二个区间(如1~27)选择一个号码(称为特选号码)。要赢得头奖,必须正确猜中所有的号码。中头奖的几率是选择所有域号码的几率与选择特选号码几率的乘积。例如,在这个例子中,中头奖的几率是从47个号码中正确选择5个号码的几率域从27个号码中正确选择1个号码的几率的乘积。请修改一下程序,以计算中得这种彩票头奖的几率。

#include <iostream>

long double probability(unsigned numbers, unsigned picks);

int main()

{

using namespace std;

double total, choices;

cout << "输入彩票上的选择总数和允许的选择数: ";

while ((cin >> total >> choices) && choices <= total)

{

cout << "您有 " << probability(total, choices) << " 胜算" << endl;

cout << "请输入下一个数字(输入q退出): ";

}

cout << "bye" << endl;

return 0;

}

long double probability(unsigned numbers, unsigned picks)

{

long double result = 1.0;

long double n;

unsigned p;

for (n = numbers, p = picks; p > 0; n--, p--)

{

result = result * n / p;

}

return result;

}

源代码:

#include <iostream>

long double probability(unsigned numbers, unsigned picks);


int main()
{
	using namespace std;

	double total_one, choices_one,total_two,choices_two=1;
	cout << "输入彩票上的选择总数和允许的选择数(第一区间): ";

	while ((cin >> total_one >> choices_one) && choices_one <= total_one)
	{
		cout << "输入彩票上的选择总数(第二区间): ";
		if (!(cin >> total_two))
			break;
		cout << "您获得头奖有 " << probability(total_one, choices_one) * probability(total_two, choices_two) << " 胜算" << endl;
		cout << "输入彩票上的选择总数和允许的选择数(第一区间): ";
	}
	cout << "bye" << endl;
	return 0;

}

long double probability(unsigned numbers, unsigned picks)
{
	long double result = 1.0;
	long double n;
	unsigned p;

	for (n = numbers, p = picks; p > 0; n--, p--)
	{
		result = result * n / p;
	}
	return result;
}

演示效果:


如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

标签:cout,号码,46,double,练习,unsigned,C++,choices,result
From: https://blog.csdn.net/little_startoo/article/details/142449183

相关文章

  • C++ 静态顺序表和动态顺序表
    对比静态顺序表与动态顺序表特性静态顺序表动态顺序表大小固定动态内存管理简单复杂随机访问快速快速插入/删除效率较低较低(需移动元素)扩展能力不可扩展可扩展C++静态顺序表概述定义:静态顺序表是一种线性表的实现方式,采用一段连续的内存空间存储数据元素,具有固定的大小。在......
  • 南沙C++信奥老师解一本通题 1221:分成互质组
    ​ 【题目描述】给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?【输入】第一行是一个正整数n。1≤n≤10。第二行是n个不大于10000的正整数。【输出】一个正整数,即最少需要的组数。【输入样例】6142033117143175【输出样例】3......
  • C++:模板初级
    一.泛型编程。1.1如何实现一个交换函数呢?voidSwap(int&left,int&right){ inttemp=left; left=right; right=temp;}voidSwap(double&left,double&right){ doubletemp=left; left=right; right=temp;}voidSwap(char&left,......
  • C++ 学习,标准库
    C++标准库是C++语言的重要组成部分,它提供了一系列的类、函数和模板,使得开发者能够更加高效地进行编程。C++标准库包括一组头文件,头文件提供了各种功能和工具,涵盖了输入输出、容器、算法、多线程、正则表达式等。C++标准库可以分为两部分:标准函数库: 由通用的、独立的、......
  • 【C++掌中宝】用最少的话让你全方位理解内联函数
    文章目录引言1.什么是内联函数2.工作原理3.内联函数的编程风格4.使用限制5.内联函数与宏的比较6.优缺点7.何时使用内联函数8.补充9.总结结语引言在C++编程中,函数的调用开销是程序运行效率的一个重要影响因素。为了解决频繁调用函数时的性能问题,C++提供了内......
  • 【C++标准模版库】map和set的介绍及使用
    map和set一.序列式容器和关联式容器二.set系列的使用1.set和multiset参考文档2.set类的介绍3.set的构造和迭代器4.set的增删查5.insert和迭代器遍历使用6.find和erase的使用7.erase迭代器失效问题8.lower_bound与upper_bound9.multiset和set的差异10.set解决:leetcode例题......
  • Springboot综合练习
        Springboot综合练习,使用三层架构,结合Mybatis操作数据库,接收前端发送的请求,并进行对应的逻辑处理,对数据库增删改查。    pojoDeptpackagecom.wzb.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;impo......
  • C/C++语言基础--C++面向对象之继承、继承限制、多继承、拷贝继承等知识讲解
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言通过前面几节课,我们学习了抽象、封装相关的概念,接下来我们将讲解继承;C语言后面也会继续更新知识点,如内联汇编;本人现在正在写一个C语言的图书管理系统,1000多行代码,包含之前所学的所有知识点,包括链表和顺序表等数据......
  • 【C++系列】C++的历史与发展
    欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:⭐️全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.⭐️AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。⭐️大数据平台建设指南:全面讲解从数据采集到......
  • 学习C++ 必看的书,你看过几本了?
    我会陆续把这些书的电子版放到我的资源中,需要的朋友可以下载,都是免积分的。C++PrimerC++沉思录EffectiveSTLeffectivec++STL源码剖析EssentialC++ExceptionalC++InsidetheC++ObjectModelModernC++DesignMoreEffectiveC++MoreExceptionalC++TheC+......