本次测试1~5题

这是一份编程测试题,包括找零钱问题、素数判定、大数相减、判断星期几和数字抽出等题目。要求解决找零精确到分、判定素数、计算大数相减、判断星期几的输入以及根据特定规则找出在报数游戏中第m个退出的人的编号。
摘要由CSDN通过智能技术生成

本次测试1~5题

(共100分)
注意:打开相关源程序后,只能在//********与//=======之间编写程序,若修改其它部分可能得0分。

1. 找零钱问题:ChangeNote.cpp(本题20分) 【题目描述】 人民币中10圆以下的零钞由5圆、1圆、5角、1角、5分和1分组成。对于给定的需要找零的零钱数额m,编写程序,给出使用零钞(纸币和硬币)数目最少的找零方案。例如,对于零钱m=6.78圆,最佳的找零方案是5圆1张、1圆1个、5角1个、1角2个、5分1个和1分3个。

要求:(1)找零精确到‘分’,不足1分的零钱四舍五入;(2)只输出找零数目非0的零钞信息。
【输入】
输入文件ChangeNote.in中包含1个float类型的浮点数,表示零钱的数额m。
【输出】
输出文件ChangeNote.out为最佳找零方案,如输入输出样例所示。
【输入输出样例1】
ChangeNote.in ChangeNote.out
6.78 伍圆: 1
壹圆: 1
伍角: 1
壹角: 2
伍分: 1
壹分: 3
【输入输出样例2】
ChangeNote.in ChangeNote.out
32.236 伍圆: 6
壹圆: 2
壹角: 2
壹分: 4
【限制】
m>0。

#include <stdio.h>

char lingchao[10][10] = {
   {
   "伍圆"}, {
   "壹圆"}, {
   "伍角"}, {
   "壹角"}, {
   "伍分"}, {
   "壹分"}}; //零钞名称

int sc[6]= {
   500, 100, 50, 10, 5, 1}; // 6种零钞的面值,单位是分

int num[6]= {
   0}; // 存储找零最优方案,即6种零钞的数目

int main() {
   
	float m; //m-零钱数额
	int mint; //mint-存放当前零钱面值总额
	int i; //i-循环变量

    printf("请输入的需要给付的零钱的金额(m): ");
    
	FILE *fp;
	if((fp=fopen("ChangeNote.in", "r")) != NULL ) {
   
		fclose(fp);  //存在的话,要先把之前打开的文件关掉
		freopen("ChangeNote.in", "r", stdin);
		freopen("ChangeNote.out", "w", stdout);
	}
	
	scanf("%f", &m);	// 输入零钱数额,单位是元
	
	//************************************************
	//(1)将零钱转化为 "整分"
	mint = int(m*100 + 0.5);

	//(2)使用贪心策略, 寻找找零方案。A.币值最大的5元要几个? B.币值次大的1元要几个?C.币值第3大的5角要几个?...
	for(i=0; i<6; i++) {
   
		//(2.1)币值第i大的零钞票要几个?
		num[i] = mint/sc[i];

		//(2.2)还未给付的零钞的数目(扣除已经给付的)
		mint -= sc[i]*num[i];
	}
	
	//(3)打印输出找零方案信息
	for(i=0; i<6; i++) {
   
		if(num[i] != 0) {
   
			printf("%s: %d\n", lingchao[i], num[i]);
		}
	}
	//=================================================
	return 0;
}

#include <stdio.h>

int sc[6]= {
   500, 100, 50, 10, 5, 1};	// 6种零钞的面值,单位是分
int num[6]= {
   0};	// 存储找零最优方案,即6种零钞的数目

int main() {
   
	float m; //m-零钱数额
	int mint; //mint-存放当前零钱面值总额
	int i; //i-循环变量

	FILE *fp;
	if((fp=fopen("ChangeNote.in", "r")) != NULL ) {
   
		fclose(fp);  //存在的话,要先把之前打开的文件关掉
		freopen("ChangeNote.in", "r", stdin);
		freopen("ChangeNote.out", "w", stdout);
	}
	scanf("%f", &m);	// 输入零钱数额,单位是元
	//************************************************
	//(1)将零钱转化为 "整分"
	mint = int(m*100 + 0.5);

	//(2)使用贪心策略, 寻找找零方案。A.币值最大的5元要几个? B.币值次大的1元要几个?C.币值第3大的5角要几个?...
	for(i=0; i<6; i++) {
   
		//(2.1)币值第i大的零钞票要几个?
		num[i] = mint/sc[i];

		//(2.2)还未给付的零钞的数目(扣除已经给付的)
		mint -= sc[i]*num[i];
	}
	
	//(3)打印输出找零方案信息
	for(i=0; i<6; i++) {
   
		if(num[i] != 0) {
   
			switch(i) {
   
				case 0:
					printf("伍圆: %d\n", num[0]);
					break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值