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

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

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

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

阅读指南:

  • 开篇说明
    • 题目一、厘米换算英寸
    • 题目二、然后是几点
    • 题目三、 逆序的三位数
    • 题目四、BCD解密
    • 题目五、表格输出


开篇说明

本文我们来写一下浙江大学PTA平台经典代码

题目一、厘米换算英寸

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米数是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
英寸的值应该小于12.

输入样例:

170

输出样例

5 6

我们首先来看思路:

  1. 要定义三个整型变量 foot,inch和meter。
    其中foot、inch用于存储转换后的英尺和英寸值,meter可以用来存储用户输入的米数。
  2. 其次我们还要读入一个整数 来存储到整型变量meter中。
  3. 然后我们将米数转换为英尺。因为1英尺等于30.448厘米,所以将米数除30.48即可得到英尺数。
  4. 最后我们还要计算剩余的英寸数,首先计算剩余的米数(meter - 30.48 * foot),然后再将其转换为英寸(剩余米数除30.48乘12)
  • 这是示例代码:
#include <stdio.h>
int main()
{int foot,inch;int meter;*scanf("%d",&meter);foot = meter/30.48;inch = (meter-30.48*foot)/30.48*12;printf("%d %d\n",foot,inch);return 0;
}

这是最终结果
在这里插入图片描述

题目二、然后是几点

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。。

输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:

输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110

输出样例

1310

我们首先来看思路:

  1. 输入解析:读取四位时间(如1120)和分钟数(如110)
  2. 时间拆分:1120 → 11小时20分
  3. 转分钟数:11×60+20=680分钟
  4. 时间计算:680+110=790分钟
  5. 转回时分:790→13小时10分(790÷60=13,790%60=10)
  6. 处理负数:若分钟为负,小时借1(如-30→小时-1,分钟+60)
  7. 输出格式:小时直接输出,分钟补零(如13:10→1310,5:05→505)
  • 这是示例代码:
#include <stdio.h>
int main()
{int foot,inch;int meter;*scanf("%d",&meter);foot = meter/30.48;inch = (meter-30.48*foot)/30.48*12;printf("%d %d\n",foot,inch);return 0;
}

这是最终结果
在这里插入图片描述

题目三、 逆序的三位数

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出按位逆序的数。

输入样例:

123

输出样例

321
我们首先来看思路:

  1. 输入解析:读取一个三位正整数(如123)
  2. 数字分解
    • 百位 = 原数 ÷ 100(123 → 1)
    • 十位 = (原数 ÷ 10) % 10(123 → 2)
    • 个位 = 原数 % 10(123 → 3)
  3. 反转重组
    • 反转数 = 个位×100 + 十位×10 + 百位(3×100+2×10+1=321)
  4. 输出结果
    • 直接输出反转后的整数(自动忽略前导零,如700反转后为7而非007)

这是最终结果

#include <stdio.h>
int main() {int num;scanf("%d", &num);// 分解三位数的各位数字int hundreds = num / 100;      // 百位int tens = (num / 10) % 10;    // 十位int ones = num % 10;           // 个位int reversed = ones * 100 + tens * 10 + hundreds;printf("%d\n", reversed);return 0;
}    
  • 这是最终结果:
    在这里插入图片描述

题目四、BCD解密

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

输入格式:

输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。

输出格式:

输出对应的十进制数。

输入样例:

18

输出样例

12
我们首先来看思路:

  1. 输入处理:读取一个十进制整数 c。
    进制转换:
    计算 c 除以 16 的商(a = c / 16),得到十六进制的高位数字。
    计算 c 除以 16 的余数(b = c % 16),得到十六进制的低位数字。
  2. 结果重组:将高位和低位数字组合为一个两位十进制数(answer = a * 10 + b)。
  3. 输出结果:直接打印组合后的结果。
    这是最终结果
#include <stdio.h>
int main(){int a,b,c,answer;scanf("%d",&c);a = c / 16;b = c % 16;answer = a * 10 + b;printf("%d",answer);
return 0;   
}
  • 这是最终结果:
    在这里插入图片描述

题目五、表格输出

本题要求编写程序,按照规定格式输出表格。

输入格式:

本题目没有输入。

输出格式:

ProvinceArea(km²)Pop.(10K)
Anhui139600.006461.00
Beijing16410.541180.70
Chongqing82400.003144.23
Shanghai6340.501360.26
Zhejiang101800.004894.00
我们首先来看思路:
  1. 直接输出:将表格内容作为字符串常量直接嵌入到printf函数中。
  2. 格式控制:通过手动添加换行符\n和空格来控制表格的行和列对齐。
  3. 原封不动:完全保留原始表格的格式,包括分隔线、列标题和数据行。
    这是示例代码
#include <stdio.h>
int main (){printf ("------------------------------------\nProvince      Area(km2)   Pop.(10K)\n------------------------------------\nAnhui         139600.00   6461.00\nBeijing        16410.54   1180.70\nChongqing      82400.00   3144.23\nShanghai        6340.50   1360.26\nZhejiang      101800.00   4894.00\n------------------------------------\n");return 0;
}
  • 这是最终结果:
    在这里插入图片描述
    在这里插入图片描述

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

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

http://www.lryc.cn/news/596586.html

相关文章:

  • 高并发场景下的缓存问题与一致性解决方案(技术方案总结)
  • Redis 初识
  • Vue项目中的AJAX请求与跨域问题解析
  • Trae安装指定版本的插件
  • 网络编程---TCP协议
  • 浏览器解码顺序xss
  • Matlab学习笔记:界面使用
  • 基础算法思想(递归篇)
  • Linux Bridge Cost
  • Java常用API(1)
  • csp基础知识——递推
  • 激光雷达-自动驾驶的“三维感知中枢“
  • postgresql导入导出数据;pg_restore: error: did not find magic string in file header
  • 学习pwn需要的基本汇编语言知识
  • 快速了解pandas库
  • Unity之C# 脚本与Unity Visual Scripting 交互
  • 嵌入式开发学习(第三阶段 Linux系统开发)
  • Model Control Protocol 使用MCP进行各种任务适配,调用工具和资源进行客户端开发
  • 基于AD7147电容触摸芯片与STC12C5A60S2单片机方案
  • SQL基础④ | 多表查询篇
  • AG32 mcu+cpld 联合编程(概念及流程)
  • OpenMVG OpenMVS 安装全流程常见问题与解决方法总结
  • 学习软件测试的第十九天
  • imx6ull-系统移植篇18——linux顶层 Makefile(下)
  • API是什么,如何保障API安全?
  • Springboot和postman的使用
  • XSS内容分享
  • 智能泵房监控系统:物联网应用与智能管理解决方案
  • Qt中QObject类的核心作用与使用
  • Qt 事件处理机制深入剖析