Skip to content

2026-计算概论C-py作业1 ​

题集链接 ​

OpenJudge/计算概论C(py)/2026-计算概论C-py作业1

共 5 题。题面、提示、易错点与完整参考解析均可直接查看,无需密码。

01:两整数求和 ​

题目描述 ​

输入两个整数,求这两个整数之和

输入

两行,每行一个整数

输出

两个整数的和

样例输入

text
3
6

样例输出

text
9

解题提示

本题知识点: 第 1 章《程序设计与 Python 导引》: input() 一次读取一行并返回字符串,print() 输出计算结果。第 2 章《基本数据类型》: 用 int() 把数字字符串转换为整数,再用 + 做数值加法。

  1. 题目给的是两行输入,先分别读取,再转换为整数;input() 读到的原始值是字符串。
  2. 可以按“读取两个数 → 计算总和 → 输出总和”的顺序组织程序。输出时只保留计算结果,不写说明文字。
  3. 除了样例 3 和 6,再用 -2 和 5 自测,检查代码是否真的参与运算。

这题是分两行输入,读取部分可以先写成:

python
a = int(input())
b = int(input())

运算关键点: 这题要做数值相加:3 + 6 得到 9,而字符串相加 '3' + '6' 得到 '36'。两数转为整数后,只需把求和结果传给 print();不输出变量名或提示语。

易错点

  • 字符串拼接: 直接把两次 input() 的结果相加,会把 3 和 6 拼成 36,而不是求和。
  • 多余输出: input('请输入数字:') 会显示提示,print('和为', 结果) 也会多出文字;判题只接受一个数。
  • 只对样例有效: 把 9 写死在输出里,或变量名拼错,换一组输入就无法得到正确结果。

题解 ​

思路 ​

将两行输入转成整数后相加。

知识点 ​

输入函数与输出函数第1章程序设计与Python导引
数字类型-整型第2章基本数据类型

代码(徐志衡) ​

python
a = int(input())
b = int(input())
c = a + b
print(c)

02:简单的A*B问题 ​

题目描述 ​

输入两个数A和B,求A*B。

输入

两行,第一行输入一个数A,第二行输入一个数B。A和B均为浮点数。

输出

一个浮点数,即A*B的值。要求结果保留两位小数。

样例输入

text
1
3.4

样例输出

text
3.40

解题提示

本题知识点: 第 2 章《基本数据类型》: float 表示带小数的数,* 做乘法;f 字符串中的 :.2f 固定显示两位小数,round() 返回数值而不会补齐末尾的零。

  1. 两个数都可能有小数,读取时要选择能处理小数的数值类型。
  2. 框架是“读取 A → 读取 B → 相乘 → 按两位小数输出”。先把乘法结果算出来,再处理显示格式。
  3. 用样例检查:1 × 3.4 的数值是 3.4,但题目要求显示为 3.40;这里的末尾 0 也是输出的一部分。

读取浮点数时,可先写:

python
a = float(input())
b = float(input())

输出关键点: “保留两位小数”说的是显示格式,而不仅是数值精度。可以先单独试这段,再用于乘积:

python
value = 3.4
print(f"{value:.2f}")  # 3.40

round(value, 2) 返回的仍是数值,直接打印时不保证补齐末尾的 0。

易错点

  • 精度不固定: round(乘积, 2) 得到数值后,直接打印可能显示 3.4,少了要求的末尾 0。
  • 类型不合适: 用 int(input()) 读取 3.4 会报错;先格式化成字符串再转回浮点数,也会失去固定两位的效果。
  • 格式外文字: A*B=3.40、多余空格或中文提示都与只输出结果的要求不同。

题解 ​

思路 ​

将输入转成浮点数,相乘后保留两位小数。

知识点 ​

输入函数与输出函数第1章程序设计与Python导引
数字类型-浮点型第2章基本数据类型
字符串格式化第2章基本数据类型

代码(徐志衡) ​

python
a = float(input())
b = float(input())
c = a * b
print(f'{c:.2f}')

03:计算三角形的周长和面积(基础版) ​

题目描述 ​

输入三条边长,算出三角形的周长和面积,结果均保留两位小数。

说明:本题系统测试用的输入数据均可以构成三角形。

输入

三行,每行一个整数,表示边长。

输出

输出二行: 第一行为周长; 第二行为面积。

样例输入

text
3
4
5

样例输出

text
12.00
6.0

解题提示

本题知识点: 第 1 章《程序设计与 Python 导引》: 按“输入—计算—输出”拆分程序,导入 math 模块并调用开平方函数。第 2 章《基本数据类型》: 用变量保存周长、半周长和面积等中间结果,使用乘法、减法及小数输出格式。

  1. 读入三条边 a、b、c。先求周长,再令半周长 p = 周长 ÷ 2。
  2. 面积可用海伦公式:√[p(p-a)(p-b)(p-c)]。先把括号内四项相乘,再开平方;题目保证能构成三角形。
  3. 分两行输出。周长固定显示两位小数;面积参照题面样例 6.0,按数值四舍五入到两位,而不是强行补成 6.00。

计算与格式关键点: 先求周长、再求半周长,最后用海伦公式求面积;不要把公式中的半周长与周长混用。输出上,周长 12 应显示为 12.00,面积 6 的样例却显示为 6.0。可以对比:

python
print(f"{12:.2f}")   # 12.00
print(round(6.0, 2))  # 6.0

易错点

  • 面积格式: 不少提交把面积也写成固定的 .2f,于是样例中的 6.0 变成 6.00;这里要区分“数值保留两位”和“总显示两位”。
  • 公式细节: 把半周长误用成周长、漏掉某个 (p-边长),都会使面积不对。
  • 函数和输出: 把 sqrt 拼错,或将周长与面积写在同一行,会分别造成运行/编译错误和格式错误。

题解 ​

思路 ​

周长是三边之和;面积用海伦公式计算,并按题面格式输出。

知识点 ​

数字类型-数据运算-算数运算符第2章基本数据类型
字符串格式化第2章基本数据类型

代码(徐志衡) ​

python
a = int(input())
b = int(input())
c = int(input())
x = float(a + b + c)
print(f'{x:.2f}')
p = x / 2
y = (p * (p - a) * (p - b) * (p - c)) ** 0.5
print(round(y, 2))

04:计算两点之间距离 ​

题目描述 ​

从键盘输入两点的坐标(x1,y1)(x2,y2),计算两点之间的距离(结果保留两位小数)

输入

4行,每行1个数(可以是小数),分别是x1,y1,x2,y2

输出

两点之间的距离(结果保留两位小数)

样例输入

text
0
0
3
5

样例输出

text
5.83

解题提示

本题知识点: 第 1 章《程序设计与 Python 导引》: 把两点坐标作为浮点数读入,调用数学模块中的开平方函数。第 2 章《基本数据类型》: 用减法求坐标差、用 ** 2 求平方,并用 f 字符串固定显示两位小数。

  1. 在纸上先写好输入顺序:第 1 行 x1、第 2 行 y1、第 3 行 x2、第 4 行 y2。每行都可能有小数。
  2. 分别求横坐标差与纵坐标差;距离是“两个差的平方之和再开平方”。
  3. 输出时固定显示两位小数。可用 (0,0) 与 (3,5) 检查得到约 5.83,再换一组不含 0 的坐标检查读取顺序。

四行输入对应四个坐标,顺序可以先固定下来:

python
x1 = float(input())
y1 = float(input())
x2 = float(input())
y2 = float(input())

计算关键点: 先分别形成横、纵坐标差,再用勾股关系求距离:

text
横坐标差 = x1 - x2
纵坐标差 = y1 - y2
距离 = √(横坐标差² + 纵坐标差²)

开平方前要先把两个差分别平方;最后才按两位小数显示。

易错点

  • 坐标读反: 有些代码依次命名为 x1、x2、y1、y2,与题面的 x1、y1、x2、y2 不同;样例中前两项都是 0,容易掩盖这个问题。
  • 丢失小数: 把每行都按整数读取,遇到浮点输入会报错。
  • 距离公式或格式: 只输出平方和、漏开平方,或没有固定两位小数,都会得到不同的结果。

题解 ​

思路 ​

使用两点距离公式,注意四行输入依次为 x1、y1、x2、y2。

知识点 ​

数字类型-数据运算-算数运算符第2章基本数据类型
字符串格式化第2章基本数据类型

代码(徐志衡) ​

python
x1 = float(input())
y1 = float(input())
x2 = float(input())
y2 = float(input())
d = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
print(f'{d:.2f}')

05:字符菱形 ​

题目描述 ​

给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。

输入

输入只有一行, 包含一个字符。

输出

该字符构成的菱形。

样例输入

text
*

样例输出

text
  *
 ***
*****
 ***
  *

解题提示

本题知识点: 第 2 章《基本数据类型》: 字符串用 * 重复、用 + 拼接;课件的字符三角形也是“行首空格 + 重复字符”的构造。本题把同一方法用于固定的五行。

  1. 先观察图形的五行:字符个数依次是 1、3、5、3、1;行首空格数依次是 2、1、0、1、2。
  2. 可以把每行想成“若干空格 + 若干个输入字符”。先形成这五行,再逐行输出;不需要在字符之间插空格。
  3. 用不同于 * 的字符试一次,并逐行与样例对齐,尤其检查最左侧字符出现的位置。

构造关键点: 五行可用两组对应数字表示:前导空格数 [2, 1, 0, 1, 2],字符数 [1, 3, 5, 3, 1]。逐行把“空格重复指定次数”和“输入字符重复指定次数”拼在一起即可;这是构造图形的框架,字符本身不能写死。

易错点

  • 写死样例: 直接打印星号图案,而不读取输入字符,换成其他字符就错。
  • 行数和结构: 按一般菱形循环写成九行,或把同一行的字符隔开成 * * *,不符合题目要求的五行。
  • 空格: 行首空格少一个、多一个,或者额外输出空白行,在统计中反复造成 Wrong Answer/Presentation Error。

题解 ​

思路 ​

按每行 1、3、5、3、1 个字符输出菱形,并保留行首空格。

知识点 ​

字符串类型第2章基本数据类型
字符串格式化第2章基本数据类型

代码(陈旭峥) ​

python
# Solution 2
c = input()
print("  " + c + "  ")
print(" " + c + c + c + " ")
print(c + c + c + c + c)
print(" " + c + c + c + " ")
print("  " + c + "  ")

课程资料由授课教师、助教与同学共同积累。