题目描述
在英文字母王国中,大写字母比小写字母强大。在大写字母之间按字母表顺序,越靠前越大,例如A比B大,B比C大,Z在大写字母中最小。同样小写字母之间的比较也按字母表顺序,也是越靠前越大。
要求在一个英文字母集合中,选择最强大的字母。
输入
输入一个英文字母字符串,只能包含大小写英文字母,不包含其它字符。
输出
输出该字符串中最大的字母,如果有多个相同的最大字母,只输出一个
样例输入
chinaGOOD
样例输出
D
思路
1.定义字符变量: char ch, max; 定义两个字符变量,ch 用于存储当前读取的字符,max 用于存储当前找到的最小字符。
2.读取第一个字符: scanf("%c", &ch); 从标准输入读取第一个字符。
3.初始化最小字符: max = ch; 将 max 初始化为第一个读取的字符。
4.循环读取字符: 使用 while 循环读取字符,直到遇到换行符’\n’
5.比较字符大小: 在循环中,判断当前读取的字符是否小于当前最小字符 max。
6.更新最小字符: 如果当前字符小于 max,则更新 max 为当前字符。
7.读取下一个字符: 使用 scanf("%c", &ch); 读取下一个字符。
8.输出结果: 循环结束后,输出找到的最小字符 printf("%c", max);。
错误示范1:漏了scanf("%c", &ch); // 读取第一个字符
错误示范2:while循环中漏了scanf("%c", &ch); // 读取下一个字符
此时只读取了第一个字符,因此会无限循环判断第一个字符
参考代码
#include <stdio.h>
int main()
{
char ch, max; // 定义字符变量 ch 和 max,用于存储输入字符和最小字符
scanf("%c", &ch); // 读取第一个字符
max = ch; // 初始化 max 为第一个字符
// 循环读取字符直到遇到换行符(Enter键)
while (ch != '\n')
{
// 判断当前字符是否小于当前最小字符 max
if (ch < max)
{
max = ch; // 更新最小字符
}
scanf("%c", &ch); // 读取下一个字符
}
// 输出最小字符
printf("%c", max);
return 0;
}
(by 归忆)