当前位置:网站首页>C语言初级—用一角,两角,五角和一元组成3.5元有多少种组合方法
C语言初级—用一角,两角,五角和一元组成3.5元有多少种组合方法
2022-08-02 14:03:00 【iccoke】
c语言实现用一角,两角,五角和一元组成3.5元有多少种组合方法
基本思想
列出这一个问题的所有可能性,并用判断语句得到符合要求的结果并计数
具体代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int choice(int num) {
int count = 0;
for (int a=0;a<=num/1;a++)
{
for ( int b=0;b<=num/2;b++)
{
for (int c = 0; c <= num / 5;c++) {
for (int d = 0; d <= num / 10;d++) {
if (a*1+b*2+c*5+d*10==num)
{
count++;
}
}
}
}
}
return count;
}
int main() {
int num=35;
int result=choice(num);
printf("%d", result);
return 0;
}结果经测试有140种
如果想进行任意金额的组合,可以对主函数体进行改动
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int choice(int num) {
int count = 0;
for (int a=0;a<=num/1;a++)
{
for ( int b=0;b<=num/2;b++)
{
for (int c = 0; c <= num / 5;c++) {
for (int d = 0; d <= num / 10;d++) {
if (a*1+b*2+c*5+d*10==num)
{
count++;
}
}
}
}
}
return count;
}
int main() {
int num;
scanf("%d", &num);
int result=choice(num);
printf("%d", result);
return 0;
}只需要将35改成从键盘接收的一个数就可以实现任意金额的组合
同时注意,如果在vs2016往后版本上运用scanf函数是,系统会提示不安全
因此我们一般用scanf-s函数或者在头文件第一行加上#define _CRT_SECURE_NO_WARNINGS
但是在c语言以及大部分语言的环境下scanf-s会出现搬运上的错误,可能会出现在不同的编译器上产生的结果不同或者不能正常运行。
因此尽量采用在头文件第一行加#define _CRT_SECURE_NO_WARNINGS的方法
思考
在所给出的代码中将要求的3.5以35输入,可以看出是将3.5元当成35角,那么为什么不可以直接用3.5元进行测试,首先,所给出的代码段中如果输入3.5元进行测试,会发生数据的泄露,如果进行更改,将输入数据改成double类型,表面上解决了不能直接输入元的问题。但是在实际操作时,int类型与double类型产生的结果不尽相同。按照要求,若在此情况下进行的测试,int类型对应140种结果,而double类型对应只有86种结果。
为什么会出现如此大的偏差,实际上,这就和double类型的特性有关,double对应双精度的类型,所以如果从键盘中输入3.5实际说不准确的,因此会产生偏差,在double输入时,正确应该输入3.50000.....。但是因为没有精度要求,所以要输入几个0我们我无从得知。从这个题目我们可以看到在使用double 类型以及关于double类型的转换时,都要关注精度对结果的影响。
边栏推荐
猜你喜欢

【c】大学生在校学习c语言常见代码

chapter6可视化(不想看版)

Linux:CentOS 7 安装MySQL5.7

redis分布式锁和看门狗的实现

瑞吉外卖笔记——第05讲Redis入门
![[ROS] The difference between roscd and cd](/img/a8/a1347568170821e8f186091b93e52a.png)
[ROS] The difference between roscd and cd

What's wrong with running yolov5 (1) p, r, map are all 0

【c】小游戏---扫雷雏形

The most complete ever!A collection of 47 common terms of "digital transformation", read it in seconds~

How does Apache, the world's largest open source foundation, work?
随机推荐
ToF相机从Camera2 API中获取DEPTH16格式深度图
Tornado框架路由系统介绍及(IOloop.current().start())启动源码分析
Flask-RESTful请求响应与SQLAlchemy基础
网页设计(新手入门)[通俗易懂]
drf serializer - Serializer
static关键字3种作用,简单粗暴对比,好理解
Unit 7 ORM table relationships and operations
[ROS](04)package.xml详解
YOLOv7使用云GPU训练自己的数据集
我的第一篇博客
第十单元 前后连调
Unit 14 Viewsets and Routing
Linux:CentOS 7 安装MySQL5.7
8581 线性链表逆置
关于密码加密的一点思路
Raj delivery notes - separation 第08 speak, speaking, reading and writing
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十一章)
How to solve mysql service cannot start 1069
(ROS) (03) CMakeLists. TXT, rounding
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration