求助C语言,从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要

#include<stdio.h>
int main()
{
float num,a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=(int)num/100;
b=(int)(num-a*100)/50.0;
c=(int)(num-a*100-b*50)/10.0;
d=(int)(num-a*100-b*50-c*10)/5.0;
e=(int)(num-a*100-b*50-c*10-d*5)/2.0;
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1.0;
g=(int)(num-a*100-b*50-c*10-d*5-e*2-f*1)/0.5;
h=(int)(num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)/0.1;
i=(int)(num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)/0.05;
j=(int)(num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)/0.01;
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}

a,b,c,d,e,f,g,h,i,j应为整型变量;角分处理做了点更改;
改后程序如下:
#include<stdio.h>
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=(int)num/100;
b=(int)(num-a*100)/50;
c=(int)(num-a*100-b*50)/10;
d=(int)(num-a*100-b*50-c*10)/5;
e=(int)(num-a*100-b*50-c*10-d*5)/2;
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1;
g=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-18
a,b,c,d,e,f,g,h,i,j应为整型变量;角分处理做了点更改;
改后程序如下:
#include<stdio.h>
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=(int)num/100;
b=(int)(num-a*100)/50;
c=(int)(num-a*100-b*50)/10;
d=(int)(num-a*100-b*50-c*10)/5;
e=(int)(num-a*100-b*50-c*10-d*5)/2;
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1;
g=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}
第2个回答  2012-10-17
  a=(int)num/100;

  类型转化符() 优先级大于双目运算符 / ;
  如 num = 345.78
  (int)num 为345,
  因为a 为 float 所以 a = 345/100 = 3.45
  只需修改一下 变量声明即可:
  float num;
  int a,b,c,d,e,f,g,h,i,j;
第3个回答  2017-08-09
#include<stdio.h>
int main()
{
float num;
int a,b,c,d,e,f,g,h,i,j;
printf("请输入一个金额如345.78\n");
scanf("%f",&num);
a=num/100;
b=(num-a*100)/50;
c=(num-a*100-b*50)/10;
d=(num-a*100-b*50-c*10)/5;
e=(num-a*100-b*50-c*10-d*5)/2;
f=(num-a*100-b*50-c*10-d*5-e*2)/1;
g=((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5;
h=((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10);
i=((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5;
j=((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100);
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j);
return 0;
}
第4个回答  2012-10-21
大家的办法都很好啊,就是稍微局限与所给的数字了,要是里面放个循环来用程序处理这个未知的数据就更完美了
相似回答