用C语言输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。样例输入: My name is Amy My name is Jane stop 样例输出: 11 name 12 name
时间: 2024-03-05 15:50:59 浏览: 61
C语言中把数字转换为字符串-sprintf
好的,下面是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
char longest_str[MAX_LEN] = "";
int longest_len = 0, sum_len = 0;
while (1) {
scanf("%s", str);
if (strcmp(str, "stop") == 0) {
break;
}
int len = strlen(str);
sum_len += len;
if (len >= longest_len) {
if (len > longest_len || strcmp(str, longest_str) < 0) {
strcpy(longest_str, str);
longest_len = len;
}
}
}
printf("%d %s\n", sum_len, longest_str);
return 0;
}
```
程序的大致思路和上一个问题的代码实现类似。唯一不同的是,当有多个最长字符串时,我们需要输出最先出现的那个字符串。为了实现这个功能,我们在更新最长字符串的时候,需要先比较当前字符串的长度和之前最长字符串的长度,如果相等的话再用 `strcmp()` 函数比较两个字符串的字典序。如果当前字符串比之前最长字符串的字典序小,我们就更新最长字符串为当前字符串。这样就可以保证输出最先出现的那个最长字符串了。
阅读全文