当前位置:网站首页>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语言三子棋详解!!! (电脑智能下棋)(附上完整代码)

Creating seven NiuYun Flask project complete and let cloud

深度学习框架pytorch快速开发与实战chapter3

跑跑yolov5吧

The specific operation process of cloud GPU (Hengyuan cloud) training

第十五单元 分页、过滤

Implementation of redis distributed lock and watchdog

MobileNet ShuffleNet & yolov5替换backbone

How does Apache, the world's largest open source foundation, work?
创建ROS工作空间](/img/2a/11e5023ef6d052d98b4090d2eea017.png)
[ROS](01)创建ROS工作空间
随机推荐
Flask contexts, blueprints and Flask-RESTful
Linux:CentOS 7 安装MySQL5.7
chapter6可视化(不想看版)
[ROS](02)创建&编译ROS软件包Package
函数递归和动态内存初识
Unit 3 view layer
Creating seven NiuYun Flask project complete and let cloud
drf serializer - Serializer
Chapter6 visualization (don't want to see the version)
(ROS) (03) CMakeLists. TXT, rounding
我的第一篇博客
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
Unit 13 Mixing in View Base Classes
[ROS]roscd和cd的区别
A little thought about password encryption
[ROS] Introduction to common tools in ROS (to be continued)
What's wrong with running yolov5 (1) p, r, map are all 0
Paddle window10 environment using conda installation
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第七章)
8581 Linear linked list inversion