1219 - C语言8.22
编写一个函数,输入一行字符,将此字符串中最长的单词输出。
题目输入
一行字符,只包含英文字符和空格。保证字符串的长度不超过100。
题目输出
输出读入的最长单词。
请注意行尾输出换行。
输入/输出样例
题目输入
This is not a program
题目输出
program
C语言解答
#include<stdio.h> #include<string.h> char* mymax(char a[]); int main() { char a[100]; gets(a); printf("%s\n",mymax(a)); return 0; } char* mymax(char a[]) { char* p=a;//run char* q=a;//max char* k=a;//temp int count1 = 0;//max int count2 = 0;//temp while(*p) { while(*p==' ') { *p='\0'; p++; } k = p; while(*p!=' '&&*p!='\0') { p++; count2++; } if(count1<count2) { q = k; count1 = count2; count2 = 0; } } return q; }
C++解答
#include <stdio.h> #include <string.h> int main() { void calc(char str[], char longest[]); char str[101], longest[101]; gets(str); calc(str, longest); puts(longest); return 0; } void calc(char str[], char longest[]) { char temp[101]; int l = 0, ret = 0; while (sscanf(str + l, "%s", temp) != EOF) { if (strlen(temp) > ret) { ret = strlen(temp); strcpy(longest, temp); } l += strlen(temp); } }