1219 - C语言8.22

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

编写一个函数,输入一行字符,将此字符串中最长的单词输出。

题目输入

一行字符,只包含英文字符和空格。保证字符串的长度不超过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);
	}
}

Java解答



import java.util.Scanner;

public class Main{
   private static Scanner s = new Scanner(System.in) ;
   
   public static void main(String[] args) {
	  String str = s.nextLine() ;
	  
	  String strs[] = str.split("\\s+") ;
	  int temp = 0 ;
	  int k = 0 ;
	  for (int i = 0; i < strs.length; i++) {
		 if(strs[i].length()>temp){
			 temp = strs[i].length() ;
			 k = i ;
		 }
	  }
	  
	  System.out.println(strs[k]);
   }
}

Python解答

l = 0
a = ""
for i in raw_input().split():
    if len(i) > l:
        a = i
        l = len(i)
print a