ZZNUOJ(C/C++)基础练习1021——1030(详解版)
目录
1021 : 三数求大值
C语言版
C++版
代码逻辑解释
1022 : 三整数排序
C语言版
C++版
代码逻辑解释
补充 (C语言版,三目运算)C++类似
代码逻辑解释
1023 : 大小写转换
C语言版
C++版
1024 : 计算字母序号
C语言版
C++版
代码逻辑总结
1025 : 最大字符
C语言版
C++版
补充(c++ 版,使用max函数)
寻找最大字符
1026 : 字符类型判断
C语言版
C++版
判断字符类型
1027 : 判断水仙花数
C语言版
C++版
1028 : I love 闰年!
编辑
C语言版
C++版
1029 : 三角形判定
编辑
C语言版
C++版
1030 : 判断直角三角形
C语言版
C++版
补充C语言版
补充C++版
收藏加关注,观看不迷路
1021 : 三数求大值
题目描述
从键盘输入三个整数x,y和z,求出最大数的值。
输入
输入三个整数x,y和z。
输出
输出最大数的值。
样例输入
20 16 18
样例输出
20
C语言版
了解三目运算:简要介绍C语言/C++的三目运算符-CSDN博客
#include<stdio.h> // 包含标准输入输出头文件,用于使用printf和scanf函数
int main() {
int a, b, c; // 定义三个整数变量a、b、c,用于存储输入的三个数
// 使用scanf从标准输入读取三个整数,分别存储到变量a、b、c中
scanf("%d%d%d", &a, &b, &c);
// 使用三元运算符比较a和b的大小,将较大的值赋给变量max
int max = a > b ? a : b;
// 再次使用三元运算符比较max和c的大小,将最终的最大值赋给max
max = max > c ? max : c;
// 使用printf将最大值输出到标准输出,并换行
printf("%d\n", max);
return 0; // 程序正常结束,返回0
}
C++版
了解max函数:简要介绍C++中的 max 和 min 函数以及返回值-CSDN博客
#include<iostream> // 包含输入输出流库,用于使用cin和cout
#include<algorithm> // 包含算法库,用于使用std::max等算法函数
using namespace std; // 使用标准命名空间,避免每次调用标准库函数或对象时都加std::
int main() {
int a, b, c; // 定义三个整数变量a、b、c,用于存储用户输入的三个数
// 使用cin从标准输入读取三个整数,分别存储到变量a、b、c中
cin >> a >> b >> c;
// 使用std::max函数比较a和b的大小,将较大的值赋给变量maxa
int maxa = max(a, b);
// 再次使用std::max函数比较maxa和c的大小,将最终的最大值赋给maxa
maxa = max(maxa, c);
// 使用cout将最大值输出到标准输出,并换行
cout << maxa << endl;
return 0; // 程序正常结束,返回0
}
代码逻辑解释
输入三个整数:
使用
cin
从用户输入中读取三个整数,分别存储到变量a
、b
和c
中。比较
a
和b
的大小:
使用
std::max
函数比较a
和b
的大小,将较大的值赋给变量maxa
。比较
maxa
和c
的大小:
再次使用
std::max
函数比较maxa
和c
的大小,将最终的最大值赋给maxa
。输出最大值:
使用
cout
将最大值输出到标准输出,并换行。
1022 : 三整数排序
题目描述
从键盘输入三个整数x,y和z,按从大到小的顺序输出它们的值。输入
输入三个整数x,y和z。
输出
按从大到小的顺序输出这三个整数,数据之间用空格隔开。
样例输入
20 16 18
样例输出
20 18 16
C语言版
#include<stdio.h> // 包含标准输入输出头文件,用于使用scanf和printf函数
int main() {
int a, b, c, mid; // 定义三个整数变量a、b、c用于存储输入的三个数,mid用于临时交换值
// 使用scanf从标准输入读取三个整数,分别存储到变量a、b、c中
scanf("%d%d%d", &a, &b, &c);
// 第一步:确保a是a和b中的较大值
if (a < b) { // 如果a小于b
mid = a; // 将a的值暂存到mid
a = b; // 将b的值赋给a
b = mid; // 将mid(原a的值)赋给b
}
// 第二步:确保a是a和c中的较大值
if (a < c) { // 如果a小于c
mid = a; // 将a的值暂存到mid
a = c; // 将c的值赋给a
c = mid; // 将mid(原a的值)赋给c
}
// 第三步:确保b是b和c中的较大值
if (b < c) { // 如果b小于c
mid = b; // 将b的值暂存到mid
b = c; // 将c的值赋给b
c = mid; // 将mid(原b的值)赋给c
}
// 输出排序后的结果,a是最大的,c是最小的
printf("%d %d %d\n", a, b, c);
return 0; // 程序正常结束,返回0
}
C++版
#include<iostream> // 包含标准输入输出流库
#include<algorithm> // 包含标准算法库(虽然在这个程序中没有用到算法库的功能)
using namespace std; // 使用标准命名空间,避免每次调用标准库功能时都需要前缀std::
int main() {
int a, b, c, mid; // 定义四个整数变量,a、b、c用于存储输入的三个数,mid用于临时交换值
cin >> a >> b >> c; // 从标准输入读取三个整数,分别存储到变量a、b、c中
// 第一步:确保a是a和b中的较大值
if (a < b) { // 如果a小于b
mid = a; // 将a的值暂存到mid
a = b; // 将b的值赋给a
b = mid; // 将mid(原a的值)赋给b
}
// 第二步:确保a是a和c中的较大值
if (a < c) { // 如果a小于c
mid = a; // 将a的值暂存到mid
a = c; // 将c的值赋给a
c = mid; // 将mid(原a的值)赋给c
}
// 第三步:确保b是b和c中的较大值
if (b < c) { // 如果b小于c
mid = b; // 将b的值暂存到mid
b = c; // 将c的值赋给b
c = mid; // 将mid(原b的值)赋给c
}
// 按从大到小的顺序输出三个数
cout << a << " " << b << " " << c << endl;
return 0; // 程序正常结束,返回0
}
代码逻辑解释
输入三个整数:
使用
cin
从用户输入中读取三个整数,分别存储到变量a
、b
和c
中。确保
a
是a
和b
中的较大值:
如果
a
小于b
,则交换a
和b
的值,使得a
始终大于等于b
。确保
a
是a
和c
中的较大值:
如果
a
小于c
,则交换a
和c
的值,使得a
始终大于等于c
。确保
b
是b
和c
中的较大值:
如果
b
小于c
,则交换b
和c
的值,使得b
始终大于等于c
。输出结果:
经过上述步骤后,
a
是最大的,c
是最小的,b
是中间的值。使用cout
按顺序输出a
、b
和c
。
补充 (C语言版,三目运算)C++类似
#include<stdio.h> // 包含标准输入输出头文件,用于使用scanf和printf函数
int main() {
int a, b, c; // 定义三个整数变量a、b、c用于存储输入的三个数
scanf("%d%d%d", &a, &b, &c); // 从标准输入读取三个整数,分别存储到变量a、b、c中
// 使用三元运算符找到最大值
// 首先比较a和b,如果a大于b,则比较a和c,否则比较b和c
int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
// 使用三元运算符找到最小值
// 首先比较a和b,如果a小于b,则比较a和c,否则比较b和c
int min = (a < b) ? ((a < c) ? a : c) : ((b < c) ? b : c);
// 计算中间值
// 中间值等于三个数的总和减去最大值和最小值
int mid = (a + b + c) - max - min;
// 按从大到小的顺序输出三个数
printf("%d %d %d\n", max, mid, min);
return 0; // 程序正常结束,返回0
}
代码逻辑解释
输入三个整数:
使用
scanf
从用户输入中读取三个整数,分别存储到变量a
、b
和c
中。找到最大值:
使用嵌套的三元运算符比较
a
和b
,然后比较结果与c
,最终确定最大值。找到最小值:
使用嵌套的三元运算符比较
a
和b
,然后比较结果与c
,最终确定最小值。计算中间值:
中间值可以通过三个数的总和减去最大值和最小值得到。
输出结果:
按从大到小的顺序输出三个数:最大值、中间值、最小值。
1023 : 大小写转换
题目描述
输入一个字母,若是小写字母,则变为大写输出,否则,原样输出 。
输入
输入为一个字母a 。
输出
输出为转换后的字母,单独占一行 。
样例输入
a
样例输出
A
了解ASCII 码表:常用的 ASCII 码表字符-CSDN博客
C语言版
#include<stdio.h> // 包含标准输入输出头文件,用于使用scanf和printf函数
int main() {
char ch; // 定义一个字符变量ch,用于存储输入的字符
scanf("%c", &ch); // 从标准输入读取一个字符,存储到变量ch中
// 判断输入的字符是否是小写字母
if (ch >= 'a' && ch <= 'z') {
// 如果是小写字母,将其转换为大写字母
// 小写字母和大写字母在ASCII码表中相差32
ch = ch - 32;
}
// 输出转换后的字符
printf("%c\n", ch);
return 0; // 程序正常结束,返回0
}
C++版
#include<iostream> // 包含标准输入输出流库
#include<algorithm> // 包含标准算法库(虽然在这个程序中没有用到算法库的功能)
using namespace std; // 使用标准命名空间,避免每次调用标准库功能时都需要前缀std::
int main() {
char ch; // 定义一个字符变量ch,用于存储输入的字符
cin >> ch; // 从标准输入读取一个字符,存储到变量ch中
// 判断输入的字符是否是小写字母
if (ch >= 'a' && ch <= 'z') {
// 如果是小写字母,将其转换为大写字母
// 小写字母和大写字母在ASCII码表中相差32
ch = ch - 32;
}
// 输出转换后的字符
cout << ch << endl;
return 0; // 程序正常结束,返回0
}
输入一个字符:
使用
scanf
从用户输入中读取一个字符,存储到变量ch
中。判断是否是小写字母:
使用条件表达式
ch >= 'a' && ch <= 'z'
判断输入的字符是否是小写字母。在 ASCII 码表中,小写字母 'a' 到 'z' 的范围是 97 到 122。
转换为大写字母:
如果输入的字符是小写字母,通过
ch = ch - 32
将其转换为大写字母。在 ASCII 码表中,大写字母 'A' 到 'Z' 的范围是 65 到 90,小写字母和大写字母的 ASCII 码值相差 32。
1024 : 计算字母序号
题目描述
输入一个英文字母(可能是大写,也可能是小写),输出该字母在字母表中的序号(’a’和’A’的序号为1)。
输入
输入只有一个英文字母。
输出
输出一个整数,表示该字母在字母表的序号,输出单独占一行。
样例输入
D
样例输出
4
了解ASCII 码表:常用的 ASCII 码表字符-CSDN博客
C语言版
#include<stdio.h> // 包含标准输入输出库
int main()
{
char ch; // 定义一个字符变量 ch,用于存储输入的字符
int num; // 定义一个整数变量 num,用于存储字母对应的序号
scanf("%c", &ch); // 从标准输入读取一个字符,存储到变量 ch 中
if(ch >= 'a' && ch <= 'z') // 判断输入的字符是否为小写字母
{
num = ch - 'a' + 1; // 如果是小写字母,计算字母序号
// 例如,'a' 的 ASCII 码是 97,'b' 是 98,'a' - 'a' = 0,所以 'a' 对应的序号是 1
}
if(ch >= 'A' && ch <= 'Z') // 判断输入的字符是否为大写字母
{
num = ch - 'A' + 1; // 如果是大写字母,计算字母序号
// 例如,'A' 的 ASCII 码是 65,'B' 是 66,'A' - 'A' = 0,所以 'A' 对应的序号是 1
}
printf("%d\n", num); // 输出字母对应的序号
return 0; // 程序正常结束,返回 0
}
C++版
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char ch; // 定义一个字符变量 ch
int num; // 定义一个整数变量 num
cin >> ch; // 从标准输入读取一个字符并存储在 ch 中
if(ch >= 'a' && ch <= 'z') // 判断 ch 是否为小写字母
{
num = ch - 'a' + 1; // 将小写字母转换为对应的字母序号
}
if(ch >= 'A' && ch <= 'Z') // 判断 ch 是否为大写字母
{
num = ch - 'A' + 1; // 将大写字母转换为对应的字母序号
}
cout << num << endl; // 输出字母对应的序号
return 0; // 返回 0,表示程序正常结束
}
代码逻辑总结
输入字符:输入一个字符,存储在变量
ch
中。判断字符类型:
如果字符是小写字母(
'a'
到'z'
),计算其序号为ch - 'a' + 1
。如果字符是大写字母(
'A'
到'Z'
),计算其序号为ch - 'A' + 1
。输出序号:将计算得到的序号输出。
结束程序:程序正常结束。
1025 : 最大字符
题目描述
给你三个ASCII字符(不含空白字符:包括空格、制表符\t、回车换行符\n),找出其中最大的那个。
输入
输入包含三个字符,之间有一个空格隔开,输入的格式为:
a b c 。输出
输出ASII码最大的那个字符,占一行 。样例输入
a b c
样例输出
c
注意:使用scanf输入字符时,在%d之间需加一个空格,这是因为空格也是字符。
C语言版
#include<stdio.h> // 包含标准输入输出库
int main()
{
char ch1, ch2, ch3; // 定义三个字符变量,用于存储用户输入的三个字符
scanf("%c %c %c", &ch1, &ch2, &ch3); // 从标准输入读取三个字符,分别存储到 ch1、ch2 和 ch3 中
char max = ch1 > ch2 ? ch1 : ch2; // 使用三元运算符,比较 ch1 和 ch2,取较大的值赋给 max
max = max > ch3 ? max : ch3; // 再次使用三元运算符,比较 max 和 ch3,取较大的值赋给 max
printf("%c\n", max); // 输出 max,即三个字符中最大的字符
return 0; // 程序正常结束,返回 0
}
C++版
#include<iostream> // 包含标准输入输出流库
#include<algorithm> // 包含算法库(虽然在这个程序中没有用到算法库的功能)
using namespace std; // 使用标准命名空间,避免每次调用标准库功能时都要加 std::
int main()
{
char ch1, ch2, ch3; // 定义三个字符变量,用于存储用户输入的三个字符
cin >> ch1 >> ch2 >> ch3; // 从标准输入依次读取三个字符,分别存储到 ch1、ch2 和 ch3 中
char max = ch1 > ch2 ? ch1 : ch2; // 使用三元运算符比较 ch1 和 ch2,取较大的字符赋值给 max
max = max > ch3 ? max : ch3; // 再次使用三元运算符比较当前 max 和 ch3,取较大的字符赋值给 max
cout << max << endl; // 输出 max,即三个字符中最大的字符,并换行
return 0; // 程序正常结束,返回 0
}
补充(c++ 版,使用max函数)
了解max函数:简要介绍C++中的 max 和 min 函数以及返回值-CSDN博客
#include<iostream> // 包含标准输入输出流库
#include<algorithm> // 包含标准算法库,用于使用 std::max 函数
using namespace std; // 使用标准命名空间,避免每次调用标准库功能时都要加 std::
int main()
{
char ch1, ch2, ch3; // 定义三个字符变量,用于存储用户输入的三个字符
cin >> ch1 >> ch2 >> ch3; // 从标准输入依次读取三个字符,分别存储到 ch1、ch2 和 ch3 中
char maxa = max({ch1, ch2, ch3}); // 使用 std::max 函数直接找出三个字符中的最大值
// max 函数接受一个初始化列表 {ch1, ch2, ch3},并返回其中的最大值
cout << maxa << endl; // 输出最大值 maxa,并换行
return 0; // 程序正常结束,返回 0
}
寻找最大字符
char maxa = max({ch1, ch2, ch3});
:
使用
std::max
函数直接找出三个字符中的最大值。
{ch1, ch2, ch3}
是一个初始化列表,表示将ch1
、ch2
和ch3
作为参数传递给std::max
函数。
std::max
函数会比较这些字符的 ASCII 值,返回其中最大的字符。
1026 : 字符类型判断
题目描述
从键盘输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。
输入
输入一个字符。
输出
如果该字符是大写字母,则输出“upper”;若是小写字母,则输出“lower”;若是数字字符,则输出“digit”;若是其他字符,则输出“other”。(输出不含双引号)。
样例输入
1
样例输出
digit
C语言版
#include<stdio.h> // 包含标准输入输出库
int main()
{
char ch; // 定义一个字符变量,用于存储用户输入的字符
scanf("%c", &ch); // 从标准输入读取一个字符,存储到变量 ch 中
if(ch >= 'A' && ch <= 'Z') // 判断字符是否为大写字母
{
printf("upper\n"); // 如果是大写字母,输出 "upper"
}
else if(ch >= 'a' && ch <= 'z') // 判断字符是否为小写字母
{
printf("lower\n"); // 如果是小写字母,输出 "lower"
}
else if(ch >= '0' && ch <= '9') // 判断字符是否为数字
{
printf("digit\n"); // 如果是数字,输出 "digit"
}
else // 如果字符不属于上述任何一种情况
{
printf("other\n"); // 输出 "other"
}
return 0; // 程序正常结束,返回 0
}
C++版
#include<iostream> // 包含标准输入输出流库
#include<algorithm> // 包含标准算法库(虽然在这个程序中没有用到算法库的功能)
using namespace std; // 使用标准命名空间,避免每次调用标准库功能时都要加 std::
int main()
{
char ch; // 定义一个字符变量,用于存储用户输入的字符
cin >> ch; // 从标准输入读取一个字符,存储到变量 ch 中
if(ch >= 'A' && ch <= 'Z') // 判断字符是否为大写字母
{
cout << "upper" << endl; // 如果是大写字母,输出 "upper" 并换行
}
else if(ch >= 'a' && ch <= 'z') // 判断字符是否为小写字母
{
cout << "lower" << endl; // 如果是小写字母,输出 "lower" 并换行
}
else if(ch >= '0' && ch <= '9') // 判断字符是否为数字
{
cout << "digit" << endl; // 如果是数字,输出 "digit" 并换行
}
else // 如果字符不属于上述任何一种情况
{
cout << "other" << endl; // 输出 "other" 并换行
}
return 0; // 程序正常结束,返回 0
}
判断字符类型
大写字母判断:
if(ch >= 'A' && ch <= 'Z')
:判断字符是否在大写字母的范围内(ASCII 值从 65 到 90)。如果是大写字母,输出
"upper"
。小写字母判断:
else if(ch >= 'a' && ch <= 'z')
:判断字符是否在小写字母的范围内(ASCII 值从 97 到 122)。如果是小写字母,输出
"lower"
。数字判断:
else if(ch >= '0' && ch <= '9')
:判断字符是否在数字的范围内(ASCII 值从 48 到 57)。如果是数字,输出
"digit"
。其他字符:
else
:如果字符不属于上述任何一种情况(即不是大写字母、小写字母或数字),输出"other"
。
1027 : 判断水仙花数
题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=。
现在要求输入一个三位数,判断该数是否是水仙花数,如果是,输出“yes”,否则输出“no”。输入
输入一个三位的正整数。
输出
输出“yes”或“no”。
样例输入
153
样例输出
yes
C语言版
#include<stdio.h> // 包含标准输入输出库
int main() // 主函数
{
int num, a, b, c; // 定义变量:num用于存储输入的数字,a、b、c分别用于存储个位、十位和百位数字
scanf("%d", &num); // 从用户输入中读取一个整数,存储到变量num中
// 分离数字:将num的个位、十位和百位分别提取出来
a = num % 10; // 提取个位数字:num除以10的余数
b = num / 10 % 10; // 提取十位数字:先将num除以10去掉个位,再取余
c = num / 100; // 提取百位数字:直接将num除以100
// 判断是否为水仙花数
if (num == a * a * a + b * b * b + c * c * c) // 判断num是否等于其各位数字的立方和
{
printf("yes\n"); // 如果是水仙花数,输出"yes"
}
else
{
printf("no\n"); // 如果不是水仙花数,输出"no"
}
return 0; // 程序正常结束
}
C++版
#include<iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间std
int main() // 主函数
{
int num, a, b, c; // 定义变量:num用于存储输入的数字,a、b、c分别用于存储个位、十位和百位数字
cin >> num; // 从标准输入读取一个整数,存储到变量num中
// 分离数字:将num的个位、十位和百位分别提取出来
a = num % 10; // 提取个位数字:num除以10的余数
b = num / 10 % 10; // 提取十位数字:先将num除以10去掉个位,再取余
c = num / 100; // 提取百位数字:直接将num除以100
// 判断是否为水仙花数
if (num == a * a * a + b * b * b + c * c * c) // 判断num是否等于其各位数字的立方和
{
cout << "yes" << endl; // 如果是水仙花数,输出"yes"
}
else
{
cout << "no" << endl; // 如果不是水仙花数,输出"no"
}
return 0; // 程序正常结束
}
1028 : I love 闰年!
题目描述
根据一个年份,判断是否是闰年。
输入
输入为一个整数,表示一个年份。
输出
如果是闰年,输出"Yes",否则输出"No"。输出单独占一行。
样例输入
2012
样例输出
Yes
注意闰年的判定方法
C语言版
#include<stdio.h> // 包含标准输入输出库
int main() // 主函数
{
int year; // 定义一个整型变量year,用于存储用户输入的年份
scanf("%d", &year); // 从用户输入中读取一个整数,存储到变量year中
// 判断输入的年份是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) // 闰年的判断条件
{
printf("Yes\n"); // 如果是闰年,输出"Yes"
}
else
{
printf("No\n"); // 如果不是闰年,输出"No"
}
return 0; // 程序正常结束
}
C++版
#include<iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间std
int main() // 主函数
{
int year; // 定义一个整型变量year,用于存储用户输入的年份
cin >> year; // 从标准输入读取一个整数,存储到变量year中
// 判断输入的年份是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) // 闰年的判断条件
{
cout << "Yes" << endl; // 如果是闰年,输出"Yes"
}
else
{
cout << "No\n" << endl; // 如果不是闰年,输出"No",并换行
}
return 0; // 程序正常结束
}
1029 : 三角形判定
题目描述
给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。
输入
输入为三个正整数(32-int),中间有一个空格隔开。
输出
如果能构成三角形,输出"Yes",否则输出"No" 。
样例输入
3 4 5
样例输出
Yes
C语言版
#include<stdio.h> // 包含标准输入输出库
int main() // 主函数
{
int a, b, c; // 定义三个整型变量a、b、c,用于存储用户输入的三个数
scanf("%d%d%d", &a, &b, &c); // 从用户输入中读取三个整数,分别存储到变量a、b、c中
// 判断三个数是否可以构成三角形
if (a + b > c && a + c > b && b + c > a) // 根据三角形的不等式定理进行判断
{
printf("Yes\n"); // 如果满足条件,输出"Yes"
}
else
{
printf("No\n"); // 如果不满足条件,输出"No"
}
return 0; // 程序正常结束
}
C++版
#include<iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间std
int main() // 主函数
{
int a, b, c; // 定义三个整型变量a、b、c,用于存储用户输入的三个数
cin >> a >> b >> c; // 从标准输入读取三个整数,分别存储到变量a、b、c中
// 判断三个数是否可以构成三角形
if (a + b > c && a + c > b && b + c > a) // 根据三角形的不等式定理进行判断
{
cout << "Yes" << endl; // 如果满足条件,输出"Yes"
}
else
{
cout << "No" << endl; // 如果不满足条件,输出"No"
}
return 0; // 程序正常结束
}
1030 : 判断直角三角形
题目描述
输入三正整数,判断用这三个整数做边长是否能构成一个直角三角形。
输入
输入三个正整数,判断用这三个整数做边长是否能构成一个直角三角形。
输出
能否构成直角三角形。如能输出:yes.若不能,输出:no。
样例输入
6 8 10
样例输出
yes
注意输出为小写的单词
C语言版
#include<stdio.h> // 包含标准输入输出库
int main() // 主函数
{
int a, b, c; // 定义三个整型变量a、b、c,用于存储用户输入的三个数
scanf("%d%d%d", &a, &b, &c); // 从用户输入中读取三个整数,分别存储到变量a、b、c中
// 确定最大值、最小值和中间值
int max = a > b ? (a > c ? a : c) : (b > c ? b : c); // 最大值
int min = a < b ? (a < c ? a : c) : (b < c ? b : c); // 最小值
int mid = a + b + c - min - max; // 中间值
// 判断是否满足勾股定理
if (max * max == min * min + mid * mid) // 检查最大值的平方是否等于最小值和中间值平方和
{
printf("yes\n"); // 如果满足条件,输出"yes"
}
else
{
printf("no\n"); // 如果不满足条件,输出"no"
}
return 0; // 程序正常结束
}
C++版
#include<iostream> // 包含标准输入输出流库
#include<algorithm> // 包含算法库(虽然在这个程序中没有用到算法库的功能)
using namespace std; // 使用标准命名空间std
int main() // 主函数
{
int a, b, c; // 定义三个整型变量a、b、c,用于存储用户输入的三个数
cin >> a >> b >> c; // 从标准输入读取三个整数,分别存储到变量a、b、c中
// 确定最大值、最小值和中间值
int max = a > b ? (a > c ? a : c) : (b > c ? b : c); // 最大值
int min = a < b ? (a < c ? a : c) : (b < c ? b : c); // 最小值
int mid = a + b + c - min - max; // 中间值
// 判断是否满足勾股定理
if (max * max == min * min + mid * mid) // 检查最大值的平方是否等于最小值和中间值平方和
{
cout << "yes" << endl; // 如果满足条件,输出"yes"
}
else
{
cout << "no" << endl; // 如果不满足条件,输出"no"
}
return 0; // 程序正常结束
}
补充C语言版
#include<stdio.h>
int main()
{
int a,b,c,mid;
scanf("%d%d%d",&a,&b,&c);
// 第一步:确保a是a和b中的较大值
if (a < b) { // 如果a小于b
mid = a; // 将a的值暂存到mid
a = b; // 将b的值赋给a
b = mid; // 将mid(原a的值)赋给b
}
// 第二步:确保a是a和c中的较大值
if (a < c) { // 如果a小于c
mid = a; // 将a的值暂存到mid
a = c; // 将c的值赋给a
c = mid; // 将mid(原a的值)赋给c
}
//两次if判断,保证a为三个数中的最大值
// 判断是否满足勾股定理
if (a * a == b * b + c * c) // 检查最大值的平方是否等于另外两个数的平方和
{
printf("yes\n"); // 如果满足条件,输出"yes"
}
else
{
printf("no\n"); // 如果不满足条件,输出"no"
}
return 0;
}
补充C++版
#include<iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间std
int main() // 主函数
{
int a, b, c, mid; // 定义四个整型变量a、b、c和mid
cin >> a >> b >> c; // 从标准输入读取三个整数,分别存储到变量a、b、c中
// 第一步:确保a是a和b中的较大值
if (a < b) { // 如果a小于b
mid = a; // 将a的值暂存到mid
a = b; // 将b的值赋给a
b = mid; // 将mid(原a的值)赋给b
}
// 第二步:确保a是a和c中的较大值
if (a < c) { // 如果a小于c
mid = a; // 将a的值暂存到mid
a = c; // 将c的值赋给a
c = mid; // 将mid(原a的值)赋给c
}
//两次if判断,保证a为三个数中的最大值
// 判断是否满足勾股定理
if (a * a == b * b + c * c) // 检查最大值的平方是否等于另外两个数的平方和
{
cout << "yes" << endl; // 如果满足条件,输出"yes"
}
else
{
cout << "no" << endl; // 如果不满足条件,输出"no"
}
return 0; // 程序正常结束
}