PTA实验五:第4章分支结构-2

7-1 出租车计价  分数 20

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

输入样例1:

2.6 2

输出样例1:

10

输入样例2:

5.1 4

输出样例2:

14

输入样例3:

12.5 9

输出样例3:

34

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<stdio.h>
int main() {
	double input, sum;
	int wait = 0;
	scanf("%lf %d", &input, &wait);

	if (input <= 10)
		sum = input <= 3.0 ? 10.0 : (input-3.0) * 2 + 10;
	else
		sum = 10 + 14 + (input - 10.0) * 3;
    
	sum += wait / 5 * 2;
	printf("%.lf", sum);
		
	return 0;
}

7-2 meihb_CH03_四则运算  分数 20

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围​.

输入格式:

输入在一行中依次输入操作数1、运算符、操作数2。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:

当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出error operator!。

输入样例1:

在这里给出一组输入。例如:

-7/2

输出样例1:

在这里给出相应的输出。例如:

-3

输入样例2:

在这里给出一组输入。例如:

3&2

输出样例1:

在这里给出相应的输出。例如:

error operator!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<stdio.h>
int main() {
	char ch;
	int a, b;
	scanf("%d%c%d", &a, &ch, &b);
	switch (ch) {
	case'+':
		printf("%d", a+b);
		break;
	case'-':
		printf("%d", a-b);
		break;
	case'*':
		printf("%d", a*b);
		break;
	case'/':
		printf("%d", a/b);
		break;
	case'%':
		printf("%d", a%b);
		break;
	default:
		printf("error operator!");
	}

	return 0;
}

7-3 meihb_CH03_买水果  分数 20

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape

然后,用户可以输入编号1~4和购买的公斤数来买水果。当输入的编号不是1~4,则显示sorry,no this fruit!。

输入格式:

输入在一行中给出用户购买的水果编号和公斤数,中间以空格为分割。

输出格式:

首先在屏幕上显示菜单。然后对应用户的输入(即水果编号和购买总公斤数),在一行中按格式“money = 总价”输出总价,其中总价保留两位小数。

输入样例1:

在这里给出一组输入。例如:

1 2

输出样例1:

在这里给出相应的输出。例如:

[1] apple
[2] pear
[3] orange
[4] grape
money=6.00

输入样例2:

在这里给出一组输入。例如:

5 2

输出样例2:

在这里给出相应的输出。例如:

[1] apple
[2] pear
[3] orange
[4] grape
sorry,no this fruit!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<stdio.h>
#define APPLE 3.00
#define PEAR 2.50
#define ORANGE 4.10
#define GRAPE 10.20
int main() {
	int input, weight;
	double cost = 0;
	scanf("%d %d", &input, &weight);
	printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n");
	switch (input) {
	case 1:
		cost = weight * APPLE;
		break;
	case 2:
		cost = weight * PEAR;
		break;
	case 3:
		cost = weight * ORANGE;
		break;
	case 4:
		cost = weight * GRAPE;
		break;
	default:
		printf("sorry,no this fruit!");
	}
	if (cost > 0)
		printf("money=%.2lf", cost);
	return 0;
}

7-4 倒顺数字串  分数 20

输入正整数n,输出它的倒顺数字串。如n=6时,输出

1 2 3 4 5 6 5 4 3 2 1

输入格式:

输入一个正整数n,n的范围是[1,50]。

输出格式:

n的倒顺数字串,每两个数字之间只用一个空格隔开。

输入样例:

6

输出样例:

1 2 3 4 5 6 5 4 3 2 1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<stdio.h>
int main() {
	int n, i;
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		if (i == n) {
			printf("%d", n);
			continue;
		}
		printf("%d ", i);
	}
	for (i = n - 1; i >= 1; i--)
		printf("% d", i);

	return 0;
}

7-5 黑洞数  分数 20

黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。

任何一个各位数字不全相同的三位数,经有限次“重排求差”操作,总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数。)

例如,对三位数207:

  • 第1次重排求差得:720 - 27 = 693;
  • 第2次重排求差得:963 - 369 = 594;
  • 第3次重排求差得:954 - 459 = 495;

以后会停留在495这一黑洞数。如果三位数的3个数字全相同,一次转换后即为0。

任意输入一个三位数,编程给出重排求差的过程。

输入格式:

输入在一行中给出一个三位数。

输出格式:

按照以下格式输出重排求差的过程:

序号: 数字重排后的最大数 - 重排后的最小数 = 差值

序号从1开始,直到495出现在等号右边为止。

输入样例:

123

输出样例:

1: 321 - 123 = 198
2: 981 - 189 = 792
3: 972 - 279 = 693
4: 963 - 369 = 594
5: 954 - 459 = 495

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<stdio.h>
int main() {
	int max, min, middle;
	int sum1, sum2, n, i;
	int a, b, c;
	scanf("%d", &n);
	for (i = 1;;i++) {
		a = n / 100;
		b = n / 10 % 10;
		c = n % 10;
		max = a > b ? a : b;
		max = max > c ? max : c;
		min = a > b ? b : a;
		min = min > c ? c : min;
		if (a > b) {
			middle = a > c ? c : a;
			middle =  middle > b ? middle : b;
		}
		else {
			middle = b > c ? c : b;
			middle = middle > a ? middle : a;
		}
		sum1 = max * 100 + middle * 10 + min;
		sum2 = min * 100 + middle * 10 + max;
		n = sum1 - sum2;
		printf("%d: %d - %d = %d\n", i, sum1, sum2, n);
		if (n == 495)break;
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值