/*此程序用来实现发工资时如何准备足够的零钱的问题*/ /*2005-4-5 梁见斌*/ #include<stdio.h> #include<stdlib.h> int main(void) {/*ShuLiang_GeRen[13]用来存储各种数额的钞票的数量*/ int i, j, num=0, ShuLiang_GeRen[13]={0}, ShuLiang_ZongShu[13]={0}; float danwei[13]={100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01}; float money, sum=0; printf("\n输入第%d个人的工资(输入负数表示结束):", ++num); scanf("%f",&money); while(money >= 0)/*循环输入,直到输入负值*/ { for(j=0; j<13; j++)/*先把每个人的钞票数量弄好*/ ShuLiang_GeRen[j]=0; i=0; sum += money; while(i < 13 && money > 0) /*按先付大钞票,再付小钞票的顺序把每种钞票的数量存入数组*/ { ShuLiang_GeRen[i] = money/danwei[i]; money -= ShuLiang_GeRen[i]*danwei[i]; i++; } for(j=0; j<13; j++)/*把所有人的钞票数量加起来*/ ShuLiang_ZongShu[j] += ShuLiang_GeRen[j]; printf("\n输入第%d个人的工资(输入负数表示结束):", ++num); scanf("%f",&money); } printf("\n总共有%d个人,你一共需要准备%f元,其中", num, sum); for(i=0; i<13; i++) printf(" %d 张 %f 元的\n", ShuLiang_ZongShu[i], danwei[i]); system("pause"); return 0; }

评论