当前位置: 首页 > news >正文

浙江大学PTA程序设计C语言基础编程练习题6-10

在这里插入图片描述
🌏个人博客主页:意疏-CSDN博客
在这里插入图片描述

希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~

阅读指南:

  • 开篇说明
    • 题目六、混合类型数据格式化输入
    • 题目七、12-24小时制
    • 题目八、超速判断
    • 题目九、用天平找小球
    • 题目十、计算工资


开篇说明

本文继续介绍浙江大学PTA平台的经典代码,第6至第10题。

题目六、混合类型数据格式化输入

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

输入格式:

输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

输出格式:

在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

输入样例:

2.12 88 c 4.7

输出样例:

c 88 2.12 4.70

我们首先来看思路:

  1. 数据类型定义:需定义浮点数(float)存储两个浮点输入,整数(int)存储整数输入,字符(char)存储字符输入。
  2. 输入读取:使用scanf按顺序读取四个数据,格式控制符为%f %d %c %f(注意空格分隔,字符无需额外处理空格)。
  3. 输出格式控制:按“字符、整数、浮点数1、浮点数2”的顺序输出,其中两个浮点数需用%.2f保留两位小数。
  • 这是示例代码:
#include <stdio.h>
int main() {float f1, f2;int i;char c;scanf("%f %d %c %f", &f1, &i, &c, &f2);printf("%c %d %.2f %.2f\n", c, i, f1, f2);return 0;
}

这是最终结果:程序正确读取输入并按指定格式输出,浮点数保留两位小数,符合样例预期。
在这里插入图片描述

题目七、12-24小时制

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:

输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

输出格式:

在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。

输入样例:

21:11

输出样例:

9:11 PM

我们首先来看思路:

  1. 时间拆分:使用scanf("%d:%d", &hour, &minute)读取24小时制的小时和分钟(直接处理冒号)。
  2. 12小时制转换规则
    • 若小时为0(凌晨):转换为12,标记为AM。
    • 若小时在1-11(上午):保持原小时,标记为AM。
    • 若小时为12(中午):保持12,标记为PM。
    • 若小时在13-23(下午):转换为“小时-12”,标记为PM。
  3. 输出格式:按“转换后的小时:分钟 AM/PM”格式输出,小时和分钟保持输入时的无前置零格式。
  • 这是示例代码:
#include <stdio.h>
int main() {int hour, minute;scanf("%d:%d", &hour, &minute);int h12;char *period;if (hour == 0) {h12 = 12;period = "AM";} else if (hour < 12) {h12 = hour;period = "AM";} else if (hour == 12) {h12 = 12;period = "PM";} else {h12 = hour - 12;period = "PM";}printf("%d:%d %s\n", h12, minute, period);return 0;
}

这个代码居然之后14分?我们再来看看
在这里插入图片描述
其实hour == 0时h12 = 12 这肯定是错的,因为将h12设置为12,会导致输出12:xx AM,例如输入0:0时,代码会输出12:0 AM,而正确输出应该是0:0 AM。
正确代码:

#include <stdio.h>
int main() {int hour, minute;scanf("%d:%d", &hour, &minute);int h12;char *period;if (hour == 0) {h12 = 0;  // 0点应转换为0,而非12period = "AM";} else if (hour < 12) {h12 = hour;period = "AM";} else if (hour == 12) {h12 = 12;period = "PM";} else {h12 = hour - 12;period = "PM";}printf("%d:%d %s\n", h12, minute, period);return 0;
}

在这里插入图片描述

这是最终结果:这次果然满分了,程序正确转换24小时制到12小时制,并正确标记AM/PM。

题目八、超速判断

模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:

输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。

输出格式:

在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK。

输入样例1:

40

输出样例1:

Speed: 40 - OK

输入样例2:

75

输出样例2:

Speed: 75 - Speeding

我们首先来看思路:

  1. 输入读取:读取一个非负整数表示车速。
  2. 判断逻辑:若车速>60,则结果为“Speeding”;否则为“OK”。
  3. 输出格式:按“Speed: V - S”格式输出,其中V为输入的车速,S为判断结果。
  • 这是示例代码:
#include <stdio.h>
int main() {int speed;scanf("%d", &speed);if (speed > 60) {printf("Speed: %d - Speeding\n", speed);} else {printf("Speed: %d - OK\n", speed);}return 0;
}

在这里插入图片描述

这是最终结果:程序正确判断车速是否超速,并按指定格式输出结果,符合两个样例的预期。

题目九、用天平找小球

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。

输入格式:

输入在一行中给出3个正整数,顺序对应球A、B、C的重量。

输出格式:

在一行中输出唯一的那个不一样的球。

输入样例:

1 1 2

输出样例:

C

我们首先来看思路:

  1. 比较逻辑:三个球中只有一个不同,因此通过两两比较即可确定:
    • 若A与B重量相等,则不同的球是C。
    • 若A与C重量相等,则不同的球是B。
    • 若B与C重量相等,则不同的球是A。
  2. 输出结果:根据比较结果输出对应的球(A、B或C)。
  • 这是示例代码:
#include <stdio.h>
int main() {int a, b, c;scanf("%d %d %d", &a, &b, &c);if (a == b) {printf("C\n");} else if (a == c) {printf("B\n");} else {printf("A\n");}return 0;
}

在这里插入图片描述

这是最终结果:程序通过简单的两两比较,准确找出重量不同的球,符合样例及所有可能情况。

题目十、计算工资

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入格式:

输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。

输出格式:

在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:

5 40

输出样例1:

2000.00

输入样例2:

3 50

输出样例2:

1650.00

我们首先来看思路:

  1. 确定时薪:根据入职年数判断职工类型:
    • 入职年数≥5→老职工,时薪50元。
    • 入职年数<5→新职工,时薪30元。
  2. 计算工作报酬
    • 若周工作时间≤40小时:工资=工作时间×时薪。
    • 若周工作时间>40小时:工资=40×时薪 +(工作时间-40)×时薪×1.5。
  3. 输出格式:用%.2f保留两位小数输出周薪。
  • 这是示例代码:
#include <stdio.h>
int main() {int years, hours;scanf("%d %d", &years, &hours);float rate;// 确定时薪if (years >= 5) {rate = 50.0;} else {rate = 30.0;}// 计算周薪float salary;if (hours <= 40) {salary = hours * rate;} else {salary = 40 * rate + (hours - 40) * rate * 1.5;}printf("%.2f\n", salary);return 0;
}

在这里插入图片描述

这是最终结果:程序正确区分新老职工,按工作时间计算工资,并精确到两位小数,符合两个样例的预期(如样例2:3年→30元/时,50小时→40×30 +10×30×1.5=1200+450=1650.00)。
在这里插入图片描述


意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
logo 我是意疏 下次见!

http://www.dtcms.com/a/317256.html

相关文章:

  • Python爬虫实战:研究Photon工具,构建企业信息收集系统
  • 【Java】HashMap的key可以为null吗?如何存储的?
  • 线性代数中矩阵的基本运算运算
  • 【图像处理基石】浅谈3D城市生成中的数据融合技术
  • 分布式微服务--GateWay(1)
  • 【注意】HCIE-Datacom华为数通考试,第四季度将变题!
  • 基于Hadoop的木鸟民宿数据分析与可视化、民宿价格预测模型系统的设计与实现
  • OpenKruise
  • Linux《进程间通信(上)》
  • Git 乱码文件处理全流程指南
  • 记一次ORACLE ORA-00600 [19004] 错误的分析与解决方法
  • HarmonyOS 5 入门系列-鸿蒙HarmonyOS示例项目讲解
  • 铁路通信信号基础知识点(2)轨旁与车载ATP关系
  • 《动手学深度学习》读书笔记—9.5机器翻译与数据集
  • 虚拟机磁盘扩容
  • centos KVM
  • Java技术栈/面试题合集(19)-架构设计篇
  • Vue2中实现数据复制到 Excel
  • 【普通地质学】地球的物质组成
  • 什么是OAuth2.0协议?有哪几种认证方式?什么是JWT令牌?和普通令牌有什么区别?
  • 【JS-7-ajax】AJAX技术:现代Web开发的异步通信核心
  • 数据赋能(381)——数据挖掘——支持异类数据库
  • Springboot 默认注入方式和@Primary
  • 高职5G移动网络运维实验(训)室解决方案
  • Wireshark协助捕获信号波形
  • 【STL源码剖析】从源码看 vector:底层扩容逻辑与内存复用机制
  • 常见类型在内存中的存储
  • 百度华为硬件笔试机试题-卷4
  • 5G毫米波射频前端测试:OTA暗室与波束成形性能验证
  • WinForm之ListView 组件