当前位置:网站首页>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类型的转换时,都要关注精度对结果的影响。
边栏推荐
- 8580 合并链表
- 海明校验码纠错设计原理
- jwt(json web token)
- [ROS] Compiling packages packages encounters slow progress or stuck, use swap
- Programming Specifications - LiteOS
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十四章)
- paddleocr window10初体验
- The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
- 鼠标右键菜单栏太长如何减少
- EasyExcel 的使用
猜你喜欢
随机推荐
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十一章)
Flask项目的完整创建 七牛云与容联云
Creating seven NiuYun Flask project complete and let cloud
php开源的客服系统_在线客服源码php
What's wrong with running yolov5 (1) p, r, map are all 0
[ROS] (02) Create & compile ROS package Package
The most complete ever!A collection of 47 common terms of "digital transformation", read it in seconds~
static关键字3种作用,简单粗暴对比,好理解
Building and getting started with the Flask framework
Flask framework in-depth two
二级指针,数组指针,指针数组和函数指针
8581 Linear linked list inversion
Flask框架深入二
Verilog学习 系列
第四单元 路由层
网络剪枝(1)
【c】小游戏---五子棋之井字棋雏形
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘c
Linux: CentOS 7 install MySQL5.7
Camera Hal(Hal3)层修改Preview流