C++知识精讲7——scanf函数基本用法及实战运用(外加一点点比赛经验,非常实用)

本文我们来讲C++知识精讲的第7篇,scanf函数基本用法及实战运用,此专栏会讲许多,各种各样的类型,如果喜欢此专栏请订阅持续关注,感谢大家的支持。接下来,进入今天的知识精讲。 

scanf函数用来干什么?

scanf是格式化输入,我觉得可以理解为cin的加强版

scanf使用的头文件 

#include<bits/stdc++.h>
#include<iostream>

scanf的用法

scanf("输入控制符",&输入参数),输入的参数就是变量,&这个符号是一个位运算,意思为取该变量的地址。这里给大家整理一下位运算(题外话):

位运算符作用运算规则
&位与两个位都为1时,结果才为1。
|位或两个位都为0时,结果才为0。
^异或两个位相同为0,相异为1。
~取反0变1,1变0。
<<左移各二进位全部左移若干位,高位丢弃,低位补0。
>>右移

各二进位全部右移若干位,对无符号数,高位补0,有符号数,右移补1。

控制符就是这个变量的类型了,这里也给大家整理一下:

控制符说明
%d输入一个十进制整数
%i输入一个整数,可以是十进制或 带前缀0的八进制整数 或 带前缀0x的十六进制整数
%o以八进制形式输入一个整数(带不带前缀都行)
%x以十六进制 (带不带前缀都行)
%u输入一个无符号十进制整数
%c输入一个字符
%s输入一个字符串
%f输入单精度实数,小数或指数形式输入
%lf输入双精度实数
%p输入一个指针(地址)

scanf与cin的区别 

前面说了,个人感觉scanf是cin的加强版,加强在哪里呢

1.时间问题:cin的编译时间是scanf的3倍左右。

2.转义字符:cin会把\n不当作换行,反之scanf可以

但是,cin也有好处,就是方便,这里分享一个比赛经验,比赛时一般题用cin即可,更快。

实战带入知识点(附带比赛小经验,非常值得一看):

实战导入:

读取一个带有两个小数位的浮点数,这代表货币价值。

在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的数量尽可能少。

钞票的面值是 100,50,20,10,5,2100,50,20,10,5,2。

硬币的面值是 1,0.50,0.25,0.10,0.05和 0.01。

输入格式

输入一个浮点数 N。

输出格式

参照输出样例,输出每种面值的钞票和硬币的需求数量。

数据范围

0≤N≤1000000.00

输入

576.73

输出

NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
1 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
0 moeda(s) de R$ 0.25
2 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
3 moeda(s) de R$ 0.01

 算法分析:

既然要钞票和硬币数量尽量的少,那么就要从面值大的入手,才可以解决掉大面值。以此类推,输出取余即可

实战经验:

这里不要用小数去求的得数,要把输入的小数输入,并且转行成整数,也就是*100,把100.00元都转换成10000元去计算,一定要注意

代码实现:

#include<iostream>
using namespace std;
int main(){
    double a;
    int n;
    scanf("%lf",&a);//运用scanf,控制符为lf。
    n=a*100;
    printf("NOTAS:\n");
    printf("%d nota(s) de R$ 100.00\n",n/10000);n%=10000;//这里要把算后的数进行取余。
    printf("%d nota(s) de R$ 50.00\n",n/5000);n%=5000;
    printf("%d nota(s) de R$ 20.00\n",n/2000);n%=2000;
    printf("%d nota(s) de R$ 10.00\n",n/1000);n%=1000;
    printf("%d nota(s) de R$ 5.00\n",n/500);n%=500;
    printf("%d nota(s) de R$ 2.00\n",n/200);n%=200;
    printf("MOEDAS:\n");
    printf("%d moeda(s) de R$ 1.00\n",n/100);n%=100;
    printf("%d moeda(s) de R$ 0.50\n",n/50);n%=50;
    printf("%d moeda(s) de R$ 0.25\n",n/25);n%=25;
    printf("%d moeda(s) de R$ 0.10\n",n/10);n%=10;
    printf("%d moeda(s) de R$ 0.05\n",n/5);n%=5;
    printf("%d moeda(s) de R$ 0.01\n",n/1);n%=1;
    return 0;
}

输出结果:

NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
1 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
0 moeda(s) de R$ 0.25
2 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
3 moeda(s) de R$ 0.01

小结:

这就是scanf函数使用方法以及实战经验,把知识点带入实战,如有疑问,请在评论区留言,作者看到后,会一一回复的。

  • 22
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
C++中,没有直接的scanf()函数scanf()函数是C语言中用于格式化输入的函数。在C++中,我们通常使用cin来进行输入操作。cin是C++中的标准输入流对象,可以用于从键盘读取用户输入的数据。与scanf()函数相比,cin更加安全和易于使用,因为它会自动处理输入错误和类型转换。所以在C++中,我们通常使用cin来替代scanf()函数进行输入操作。 #### 引用[.reference_title] - *1* [C++知识精讲7——scanf函数基本用法实战运用外加一点点比赛经验,非常实用)](https://blog.csdn.net/djfihhfs/article/details/126328224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [scanf函数特定格式输入操作](https://blog.csdn.net/m0_65129892/article/details/127516550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [devc++scanf无报错的出错点 —— &的遗漏](https://blog.csdn.net/qq_42748120/article/details/83305316)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.LAL.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值