PTA 7-240 最长的单词
分数 10
作者 usx程序设计类课程组
单位 绍兴文理学院
输入一个字符串,将此字符串中最长的单词输出。要求至少使用一个自定义函数
输入格式:
测试数据有多组,处理到文件尾。每组测试数据输入一个字符串(长度不超过80)
输出格式:对于每组测试,输出字符串中的最长单词,若有多个长度相等的最长单词,输出最早出现的那个。这里规定,单词只能由大小写英文字母构成
输入样例:
Keywords insert, two way insertion sort,
Abstract This paper discusses three method for two way insertion
words. insert, two way sorted.
You’re a boy.
I’am a c.
输出样例:
insertion
discusses
insert
You
am
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
// 判断字符是否是英文字母
int isLetter(char c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
// 查找一行字符串中最长的单词并输出,不包括标点符号
void findLongestWord(char* str) {
int maxlen = 0, start = 0, end = 0;
int i = 0, n = strlen(str);
while (i < n) {
// 跳过单词前的非字母字符
while (i < n && !isLetter(str[i])) {
i++;
}
if (i == n)
break; // 已处理完所有单词
// 计算当前单词的长度
int j = i;
while (j < n && isLetter(str[j])) {
j++;
}
int len = j - i;
// 更新最长单词及起始/结束位置
if (len > maxlen) {
maxlen = len;
start = i;
end = j;
}
i = j; // 处理下一个单词
}
// 输出最长的单词
for (int i = start; i < end; i++) {
putchar(str[i]);
}
putchar('\n');
}
int main() {
char str[81]; // 假设输入字符串长度不超过 80
while (fgets(str, sizeof(str), stdin)) { // 每次读入一行
findLongestWord(str); // 查找并输出最长单词
}
return 0;
}
解题思路:
- 根据题目要求写出一个自定义函数,并测量长度
- 利用数组和循环
- 根据题目要求格式输出结果