当前位置:网站首页>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类型的转换时,都要关注精度对结果的影响。
边栏推荐
- Swagger 的使用
- [ROS] Compiling packages packages encounters slow progress or stuck, use swap
- [ROS](06)ROS通信 —— 话题(Topic)通信
- Chapter6 visualization (don't want to see the version)
- 初识c语言指针
- drf源码分析与全局捕获异常
- 8576 顺序线性表的基本操作
- MobileNet ShuffleNet & yolov5 replace backbone
- Raj delivery notes - separation 第08 speak, speaking, reading and writing
- Flask框架的搭建及入门
猜你喜欢
yolov5改进(一) 添加注意力集中机制
Building and getting started with the Flask framework
[ROS] The difference between roscd and cd
[ROS] The software package of the industrial computer does not compile
Linux:CentOS 7 安装MySQL5.7
c语言三子棋详解!!! (电脑智能下棋)(附上完整代码)
深度学习框架pytorch快速开发与实战chapter3
paddleocr window10初体验
[ROS] (06) ROS Communication - Topic Communication
window10下半自动标注
随机推荐
Go语言初始
网络剪枝(1)
重新学习编程day1 【初始c语言】【c语言编写出计算两个数之和的代码】
我的第一篇博客
第四单元 路由层
Swagger 的使用
[ROS](04)package.xml详解
第十一单元 序列化器
Flask项目的完整创建 七牛云与容联云
Hands-on OCR (1)
Flask框架的搭建及入门
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘c
Flask contexts, blueprints and Flask-RESTful
jwt(json web token)
Unit 3 view layer
Flask-SQLAlchemy
Unit 7 ORM table relationships and operations
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十四章)
C语言sizeof和strlen的区别
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration