每到月底,公司就要给员工发工资。每个员工的工资都是由(100,50,20,10,5,2,1) 7种面值的钞票组成的。为了发工资的简便,公司会尽量给员工发较大面值的钞票,例如某个员工的工资为1260,那么公司会给员工12张100元的、1张50元的、1张10的钞票。你的任务是,告诉你某员工的工资,你来计算如何给员工发工资。
输入与输出要求:首先输入一个正整数n(可以用int存储),代表某位员工的工资。输出给该员工发的钞票面值与数量。
程序运行效果:
Sample 1:
1201↙
100:12
1:1
Sample 2:
2352↙
100:23
50:1
2:1
最正常的思路
#include<stdio.h>
int main()
{
int k[7]={100,50,20,10,5,2,1};
int print[7]={0};
int n;
scanf("%d",&n);
int t;
for(int i=0;i<7&&n>0;i++)
{
int cnt=0;
while(n>=k[i])
{
n=n-k[i];
cnt++;
}
print[i]=cnt;
}
for(int i=0;i<7;i++)
{
if(print[i]!=0)
{
printf("%d: %d\n",k[i],print[i]);
}
}
return 0;
}
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int money[7]={100,50,20,10,5,2,1};
int number[7]={0,};
number[0]=n/100;
n%=100;
number[1]=n/50;
n%=50;
number[2]=n/20;
n%=20;
number[3]=n/10;
n%=10;
number[4]=n/5;
n%=5;
number[5]=n/2;
n%=2;
number[6]=n/1;
n%=1;
for(int i=0;i<7;i++)
{
if(number[i]!=0)
{
printf("%d:%d\n",money[i],number[i]);
}
}
return 0;
}
一种新的思考
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int money[7]={100,50,20,10,5,2,1};
int cnt[7]={0};
for(int i=0;i<7;i++)
{
while(n%money[i]!=n&&money[i]!=1)
{
n-=money[i];
cnt[i]++;
}
while(money[i]==1&&n!=0)
{
n=n-1;
cnt[i]++;
}
}
for(int i=0;i<7;i++)
{
if(cnt[i]!=0)
{
printf("%d:%d\n",money[i],cnt[i]);
}
}
return 0;
}