/*
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
double N;
int s100,s50,s20,s10,s5,s2,s1,s_50,s_25,s_10,s_05,s_01;
scanf("%lf",&N);
s100 = N/100; N = N - s100*100;
s50 = N/50; N = N - s50*50;
s20 = N/20; N = N - s20*20;
s10 = N/10; N = N - s10*10;
s5 = N/5; N = N - s5*5;
s2 = N/2; N = N - s2*2;
s1 = N/1.0; N = N - s1*1.0;
s_50 = N/0.5; N = N - s_50*0.50;
s_25 = N/0.25;N = N - s_25*0.25;
s_10 = N/0.10;N = N - s_10*0.1;
s_05 = N/0.05;N = N - s_05*0.05;
s_01 = N/0.01;
cout<<"NOTAS:"<<endl;
printf("%d nota(s) de R$ 100.00\n",s100);
printf("%d nota(s) de R$ 50.00\n",s50);
printf("%d nota(s) de R$ 20.00\n",s20);
printf("%d nota(s) de R$ 10.00\n",s10);
printf("%d nota(s) de R$ 5.00\n",s5);
printf("%d nota(s) de R$ 2.00\n",s2);
cout<<"MOEDAS:"<<endl;
printf("%d moeda(s) de R$ 1.00\n",s1);
printf("%d moeda(s) de R$ 0.50\n",s_50);
printf("%d moeda(s) de R$ 0.25\n",s_25);
printf("%d moeda(s) de R$ 0.10\n",s_10);
printf("%d moeda(s) de R$ 0.05\n",s_05);
printf("%d moeda(s) de R$ 0.01\n",s_01);
return 0;
}
*/上面浮点数不对
//用浮点数存在精度问题,建议转换成整数后用整数来做
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
double m; //不能使用float类型,使用float类型最后有可能不准确,使用double精度高
//避免使用float,这里使用float就会报错
cin >> m;
int n =m*100;
printf("NOTAS:\n");
printf("%d nota(s) de R$ 100.00\n",n/10000);n = n%10000;
printf("%d nota(s) de R$ 50.00\n",n/5000);n = n%5000;
printf("%d nota(s) de R$ 20.00\n",n/2000);n = n%2000;
printf("%d nota(s) de R$ 10.00\n",n/1000);n = n%1000;
printf("%d nota(s) de R$ 5.00\n",n/500);n = n%500;
printf("%d nota(s) de R$ 2.00\n",n/200);n = n%200;
printf("MOEDAS:\n");
printf("%d moeda(s) de R$ 1.00\n",n /100);n = n%100;
printf("%d moeda(s) de R$ 0.50\n",n /50); n = n%50;
printf("%d moeda(s) de R$ 0.25\n",n /25); n = n%25;
printf("%d moeda(s) de R$ 0.10\n",n /10); n = n%10;
printf("%d moeda(s) de R$ 0.05\n",n / 5); n = n%5;
printf("%d moeda(s) de R$ 0.01\n",n / 1); n = n%1;
//printf("%d moeda(s) de R$ 100.00\n",n/10000);n = n%10000;
return 0;
}
这里确实比较坑,这道题提交了好多遍,才通过。使用经验就是:从这道题之后,我尽量避免使用float,多使用double