写在前面:
题解是对具体题目的编程实现,不会具体讲解C语言语法。请先大致学习好语法,自己敲敲代码后再看题解(上来就直接看题解的习惯不好哟~)。在每一题的题解之前,会列出本题涉及到的语法知识供参考,可以在教材或其他学习资源找到这些内容学习。😀
本题的预备知识:
- 变量的定义与赋值操作
- 输入(scanf)输出(printf)语句
- 条件语句(if)及其嵌套使用
- 运算符的使用:||、>、<、==
判断三角形的形状
成绩 | 5 | 开启时间 | 2020年03月14日 星期六 08:00 |
折扣 | 0.8 | 折扣时间 | 2020年03月29日 星期日 23:55 |
允许迟交 | 否 | 关闭时间 | 2020年03月29日 星期日 23:55 |
输入三角型的三条边,判断三角形的形状。假设输入的三边边长均>0。
(提示:本题中应该要用到 if 语句嵌套)
输入:
三角型的3条边的长度(int型)。
输出:
等边三角形:equilateral triangle.
等腰三角形:isoceles triangle.
不构成三角形:non-triangle.
一般三角形:triangle.
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 |
|
| 1秒 | 64M | 0 |
测试用例 2 |
|
| 1秒 | 64M | 0 |
测试用例 3 |
|
| 1秒 | 64M | 0 |
测试用例 4 |
|
| 1秒 | 64M | 0 |
题解
#include <stdio.h> //导入stdio.h库,里面包含输入输出函数
int main() {
int x, y, z; //定义三个整型变量,用于储存三个输入值
scanf("%d %d %d", &x, &y, &z); //输出三条边(整型),分别存入变量a、b、c中
if (x + y <= z || x + z <= y || y + z <= x) //条件1:不满足三角形的三边条件
printf("non-triangle.\n");
else if (x == y || y == z || x == z) { // 条件2:满足三角形的三边条件,且至少有两条边相等
if (x == y && y == z) //条件2.1:满足三角形的三边条件,三条边都相等
printf("equilateral triangle.\n");
else //条件2.2:满足三角形的三边条件,只有两条边相等
printf("isoceles triangle.\n");
}
else //条件3:满足三角形的三边条件,没有相等的边
printf("triangle.\n");
}
本题主要注意根据逻辑来实现条件语句的嵌套!本题有三个外层判断:
- 无法构成三角形
- 可以构成三角形,且有相等的边
- 可以构成三角形,单没有相等的边
而在第二个条件中,又嵌套了两个内部判断:
- 2.1:三边都相等
- 2.2:仅有两条边相等
注释中已经标明每个条件的意义与条件之间的关系。
总结
易错点:
- 输入/输出变量时,要将输入格式与对应变量的格式匹配好。比如说,本题输入三个%d(整型格式),对应变量x、y、z也是整型的变量
- scanf 内对应的变量应该使用取址符号 '&'
- 根据题目输出的要求,输出结果最后要加上换行符,即\n。
🔺强调一个好习惯:一定要用缩进(空格)来突出显示 if 和其对应的 else、条件嵌套的关系,使得能轻松看出每一条if语句的结构。这些都是写处可读性好的代码的规范,具体的代码结构可以参照我的代码。
多说一句:如果你用的是windows系统在devc++内编程的话,如果我没记错,直接使用ctrl+alt+L 可以自动格式化代码,让你的代码结构符合标准。
有任何问题欢迎评论交流,如果本文对您有帮助不妨点点赞,嘻嘻~
end
欢迎关注个人公众号“ 鸡翅编程 ”,这里是认真且乖巧的码农一枚。
---- 做最乖巧的博客er,做最扎实的程序员 ----
旨在用心写好每一篇文章,平常会把笔记汇总成推送更新~