用C语言写一个程序:输入一行字符只包含字母和空格,写一个函数输出此字符 串中最长的单词
时间: 2023-12-08 22:06:01 浏览: 138
好的,以下是用 C 语言编写的程序,可以实现输入一行字符只包含字母和空格,然后输出此字符串中最长的单词:
```c
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
int main()
{
char str[MAXLEN];
printf("请输入一行字符:\n");
fgets(str, MAXLEN, stdin);
int len = strlen(str);
if (str[len-1] == '\n') {
str[len-1] = '\0'; // 去掉换行符
}
char *p = strtok(str, " ");
char *max_word = p;
while (p != NULL) {
if (strlen(p) > strlen(max_word)) {
max_word = p;
}
p = strtok(NULL, " ");
}
printf("最长的单词是:%s\n", max_word);
return 0;
}
```
这个程序中用到了 `fgets()` 函数来读取用户输入的一行字符,然后用 `strtok()` 函数将字符串按照空格分割成单词,并逐个比较单词的长度,最终得到最长的单词。
相关问题
用c语言写一个函数,输入一行以空格分隔的字符串,将此字符串中的最长单词输出写一个函数,输入一行以空格分隔的字符串,将此字符串中的最长单词输出
#include <stdio.h>
#include <string.h>// 获取最长单词
char *getLongestWord(char *str)
{
int len = strlen(str);
int i = 0;
int max_len = 0;
char *longest_word = NULL; while (i < len)
{
int start_index = i;
int end_index = i;
while (str[end_index] != ' ' && end_index < len)
{
end_index++;
} int word_len = end_index - start_index;
if (word_len > max_len)
{
longest_word = &str[start_index];
max_len = word_len;
} i = end_index + 1;
} return longest_word;
}int main()
{
char str[] = "this is a test string";
char *longest_word = getLongestWord(str);
printf("longest word is: %s\n", longest_word);
return 0;
}
使用c语言编写一个程序,题目描述:编写一个如下声明的递归函数,使得字符串Str倒序,并在主程序中调用该函数测试效果 函数声明:void Reverse(string & Str);输入格式:输入为连续多行的多个字符串,一个字符串一行,每个字符串由阿拉伯数字、字母或特殊字符组成,字符串中不包括空格。输出格式:输出为输入倒序后的字符串,一行输出一个字符串,对应于一行输入字符串的倒序字符串。输出为输入倒序后的字符串,一行输出一个字符串,对应于一行输入字符串的倒序字符串。
以下是使用C语言编写的程序,实现字符串倒序的功能:
```c
#include <stdio.h>
#include <string.h>
// 递归函数,用于实现字符串倒序
void Reverse(char *str)
{
int len = strlen(str);
if (len <= 1) {
return;
}
char tmp = str[0]; // 交换字符串的首尾字符
str[0] = str[len-1];
str[len-1] = tmp;
Reverse(str+1); // 递归调用
}
int main()
{
char str[100];
while (fgets(str, sizeof(str), stdin)) {
str[strlen(str)-1] = '\0'; // 去掉换行符
Reverse(str);
printf("%s\n", str);
}
return 0;
}
```
程序使用了递归函数实现字符串的倒序。在主函数中,使用fgets读取输入字符串,去掉换行符后,调用递归函数Reverse实现倒序,并输出结果。
阅读全文