|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main(){
double a[]={100.00,50.00,20.00,10.00,5.00,2.00};
int c[]={100,50,20,10,5,2};
double N;
cin>>N;
int b;
b = (int)N;
printf("NOTAS:\n");
for(int i=0;i<6;i++){
printf("%d nota(s) de R$ %.2f\n",b/c[i],a[i]);
b=fmod(b,a[i]);
}
double d[]={1.00,0.50,0.25,0.10,0.05,0.01};
printf("MOEDAS:\n");
for(int y=0;y<6;y++){
N=fmod(N,a[y]);
}
for(int j=0;j<6;j++){
int g=(int)(N/d[j]);
printf("%d moeda(s) de R$ %.2f\n",g,d[j]);
N=fmod(N,d[j]);
}
return 0;
}
上面是题目的代码,然后输入一个数字例如463.01, 正确答案中0.01时应该输出数目为1的,但是我这个结果却为0,想知道为什么呢
然后我想问问double类型可以只输出个位数且不四舍五入吗,谢谢
- #include <iostream>
- #include <stdlib.h>
- #include <math.h>
- using namespace std;
- int main(){
-
- double a[]={100.00,50.00,20.00,10.00,5.00,2.00};
- int c[]={100,50,20,10,5,2};
- double N;
-
- cin>>N;
- int b;
- b = (int)N;
- printf("NOTAS:\n");
- for(int i=0;i<6;i++){
- printf("%d nota(s) de R$ %.2f\n",b/c[i],a[i]);
- b=fmod(b,a[i]);
- }
-
- double d[]={1.00,0.50,0.25,0.10,0.05,0.01};
- printf("MOEDAS:\n");
- for(int y=0;y<6;y++){
- N=fmod(N,a[y]);
- }
-
-
- for(int j=0;j<6;j++){
- int g=(int)(N/d[j] + 0.00001); // 加上一个小的容忍值
-
- printf("%d moeda(s) de R$ %.2f\n",g,d[j]);
- N=fmod(N,d[j]);
- }
-
- return 0;
- }
复制代码
|
|