写一个函数,输人一行字符,将此字符串中最长的单词输出。
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define N 50 void length(char* p);//split 分解 int main(void) { char s[N]; puts("请输入一个字符串(每个单词空格隔开)"); gets(s); length(s); printf("\n"); return 0;
}// puts("");
void length(char* p)//利用空格关系进行判断单词 { int i = 0,begin,end,max=-1,max_begin=0,max_end=0;//灵活的开始和结束 最大长度 最大长度对应的开始和结束下标 while (*(p + i) != '\0') { if (*(p + i) != ' ') {//只要是单词就begin begin = i; while (*(p + i) != ' ' && *(p + i) != '\0') {//遇到下个空格构成一个单词 i++; } end = i; if (max < end - begin) {//找到最大长度的单词 max = end - begin; max_begin = begin; max_end = end; } } i++; } printf("max_begin %d\n", max_begin); printf("end_end %d\n", max_end); puts("最长单词为 :"); for (int i = max_begin; i < max_end; i++) { printf("%c", *(p + i)); } }
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> int main() { char a[1000]={'\0'}; gets(a); int max=0; int locate; int leng=0; for(int i=0;i<strlen(a);i++) { if(a[i]!=' ') leng++; else { if(leng>max) { max=leng; locate=i-leng; } leng=0; } } for(int i=locate;i<locate+max;i++) printf("%c",a[i]); }
题目解析及答案:
单词以空格...
用户登录可进行刷题及查看答案
单词以空格进行分隔,因此寻找空格出现的位置即为关键,每次从单词的起始到空格出现的位置即为一个单词,此时计算单词的长度,如果比当前最大的还长,就进行跟新最长单词信息,当整个字符串遍历完成,word即保存最长字符串。
#include<stdio.h> #include<string.h> void LongestWord(char str[], char word[]) { int max_len = 0; int len = 0; int i = 0; while(str[i] != '\0') { if(str[i] == ' ') { str[i] = '\0'; len = strlen(str); if(len > max_len) { max_len = len; strcpy(word, str); str = str + len + 1; } } i++; } } int main() { char line[100] = {0}; char word[100] = {0}; printf("input one line:\n"); gets(line); LongestWord(line, word); printf("The longest word is : %s\n", word); return 0; }
登录后提交答案