PTA 7-2 发奖金
分数 10
作者 李祥
单位 湖北经济学院
某企业发放奖金,请你编写程序,帮助出纳员用最少的纸币发放奖金。其中奖金精确到元。
注:纸币面额为 100 元、50 元、20 元、10 元、5 元、2 元和 1 元。
输入格式
金额 (以元为单位,小于 10000 的整数)
输出格式
按钞票面额由大到小的顺序输出各种钞票的张数(参见输出样例)
输入样例
5382
输出样例
100元: 53张
50元: 1张
20元: 1张
10元: 1张
5元: 0张
2元: 1张
1元: 0张
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
#include <stdio.h>
int main()
{
int bonus; //定义奖金 bonus 为整型变量
int hundred, fifty, twenty, ten, five, two, one;
//定义整型变量hundred、fifty、twenty、ten、five、two和one分别为纸币面额 100 元、50 元、20 元、10 元、5 元、2 元和 1 元的数量
scanf( "%d", &bonus ); //输入奖金 bonus
if( bonus < 10000 )
//判断奖金是否小于 10000 ,如果小于 10000 则执行如下语句
{
hundred = bonus /100; //求解纸币面额 100 元的数量
fifty = ( bonus - hundred * 100 ) / 50; //求解纸币面额 50 元的数量
twenty = ( bonus - hundred * 100 - fifty * 50) / 20; //求解纸币面额 20 元的数量
ten = ( bonus - hundred * 100 - fifty * 50 - twenty * 20 ) / 10; //求解纸币面额 10 元的数量
five = ( bonus - hundred * 100 - fifty * 50 - twenty * 20 - ten * 10 ) / 5; //求解纸币面额 5 元的数量
two = ( bonus - hundred * 100 - fifty * 50 - twenty * 20 - ten * 10 - five * 5 ) / 2; //求解纸币面额 2 元的数量
one = bonus - hundred * 100 - fifty * 50 - twenty * 20 - ten * 10 - five * 5 - two * 2; //求解纸币面额 1 元的数量
printf("100元: %2d张\n 50元: %d张\n 20元: %d张\n 10元: %d张\n 5元: %d张\n 2元: %d张\n 1元: %d张\n", hundred , fifty , twenty , ten , five, two, one );
//输出纸币面额 100 元、50 元、20 元、10 元、5 元、2 元和 1 元的数量,注意成对的双引号里面的格式输出语句一定要按照输出样例设置相应的换行和空格
}
}
解题思路
- 根据题目要求,判断金额小于10000
- 利用整除(/)、求余(%)等运算,分别计算出不同面额张数
- 根据题目要求格式进行输出