C语言啊 这点不懂,请教啊555

来源:百度知道 编辑:UC知道 时间:2024/06/08 06:57:48
#include<stdio.h>
void main()
{
long money;
int m100,m50,m20,m10,m5,m2,m1;
printf("input RMB number:\n");
scanf("%ld",&money);
m100=money/100;
m50=money%100/50;
m20=money%100%50/20;
m10=money%100%50%20/10;
m5=money%100%50%20%10/5;
m2=money%100%50%20%10%5/2;
m1=money%100%50%20%10%5%2/1;
printf("%ld -> ",money);
if(m100>=1) printf("%d 100$ ",m100);
if(m50>=1) printf("%d 50$ ",m50);
if(m20>=1) printf("%d 20$ ",m20);
if(m10>=1) printf("%d 10$ ",m10);
if(m5>=1) printf("%d 5$ ",m5);
if(m2>=1) printf("%d 2$ ",m2);
if(m1>=1) printf("%d 1$ ",m1);
printf("\n");
getch();
}

各位~我这段有一点看不懂`请教下~!
谢拉`1

m100=money/100;
m50

% 求余数 / 求整数
所以
m100=money/100;
这些钱里最多能有多少张100块的
m50=money%100/50;
剩下的钱最多能有多少张50的
m20=money%100%50/20;
剩下的最多有多少20的
m10=money%100%50%20/10;
剩下的最多有多少10块的
m5=money%100%50%20%10/5;
有多少5块的
m2=money%100%50%20%10%5/2;
有多少2块的
m1=money%100%50%20%10%5%2/1
有多少1块的

% 在这里是取模运算(求余数)
/ 在这里是整除运算(因为参加运算的操作数都是整形值)

你这个程序好像是求人民币和美元的换算吧.
不过又有点不对.
你输入168RMB,得出结果是168->1 100$ 1 50$ 1 10$ 1 5$ 1 1$

假设money = 189

m100=money/100; //等于1
m50=money%100/50; //等于89/50=1
m20=money%100%50/20; //=89%50/20=
m10=money%100%50%20/10; //=89%50%20/10 = 39%20/10=19/10=1
m5=money%100%50%20%10/5; //=89%50%20%10/5 = 39%20%10/5=19%10/5=9/5=1

m2=money%100%50%20%10%5/2;//=89%50%20%10%5/2 = 39%20%10%5/2=19%10%5/2=9%5/2=4/2 = 2

m1=money%100%50%20%10%5%2/1 ;//=89%50%20%10%5%2/1 = 39%20%10%5%2/1=19%10%5%2/1=9%5%2/1=4%2/1 = 0/1 = 0

就是说189可以分为1个100+1