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

🌏个人博客主页:意疏-CSDN博客

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

阅读指南:


开篇说明

本文我们来写一下浙江大学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)
  • 这是示例代码:
c 复制代码
#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)
  • 这是示例代码:
c 复制代码
#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)

这是最终结果

c 复制代码
#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. 输出结果 :直接打印组合后的结果。
    这是最终结果
c 复制代码
#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;   
}
  • 这是最终结果:

题目五、表格输出

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

输入格式:

本题目没有输入。

输出格式:

Province Area(km²) Pop.(10K)
Anhui 139600.00 6461.00
Beijing 16410.54 1180.70
Chongqing 82400.00 3144.23
Shanghai 6340.50 1360.26
Zhejiang 101800.00 4894.00
我们首先来看思路:
  1. 直接输出:将表格内容作为字符串常量直接嵌入到printf函数中。
  2. 格式控制:通过手动添加换行符\n和空格来控制表格的行和列对齐。
  3. 原封不动 :完全保留原始表格的格式,包括分隔线、列标题和数据行。
    这是示例代码
c 复制代码
#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;
}
  • 这是最终结果:


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

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

相关推荐
吃饭只吃七分饱30 分钟前
C++第8章:IO库
开发语言·c++
宴之敖者、1 小时前
数组——初识数据结构
c语言·开发语言·数据结构·算法
青小莫1 小时前
c语言-数据结构-二叉树OJ
c语言·开发语言·数据结构·二叉树·力扣
典学长编程1 小时前
Java从入门到精通!第十一天(Java常见的数据结构)
java·开发语言·数据结构
后端小张1 小时前
智谱AI图生视频:从批处理到多线程优化
开发语言·人工智能·ai·langchain·音视频
m0dw1 小时前
js迭代器
开发语言·前端·javascript
Bonnie_12152 小时前
02-netty基础-java四种IO模型
java·开发语言·nio·jetty
我不是星海2 小时前
建造者设计模式
java·开发语言
wenzhangli72 小时前
OneCode3.0 UI组件注解详解手册
开发语言·人工智能·低代码
paid槮2 小时前
Python进阶第三方库之Numpy
开发语言·python·numpy