题目来源:
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:Hello World Here I Come输出样例:
Come I Here World Hello
import java.io.IOException; import java.text.ParseException; import java.util.Scanner; /* * */ public class Main { public static void main(String[] args) throws ParseException, IOException { Scanner scanner = new Scanner(System.in); //输入一组单词,去除掉前后空格 String str = scanner.nextLine().trim(); //去除掉单词间的空格,可能不只有一个空格,因此用" +"表示至少一个空格 String[] strs = str.split(" +"); for(int i=strs.length-1;i>=0;--i) { System.out.print(strs[i]); if(i!=0) System.out.print(" "); //不是最后一个单词,就输出一个空格 } } }结果正确,但是对于部分测试点会超时,因此要用c语言,c语言代码是从网上找的,测试过有效
#include <stdio.h> #include<string.h> /* 这道题的出错有两个地方,一是*pp[]的大小设置,要考虑到最极端的情况; 二是当输入为空格的时候,输出是什么?? */ int main(int argc, char *argv[]) { char s[500001]; char *p,*pp[250001]; long i=0,j,k; gets(s); //printf("%s\n",s); p=strtok(s," "); pp[0]=p; //printf("---%s",p); i++; p=strtok(NULL," "); while(p){ pp[i++]=p; //printf("----%s",p); p=strtok(NULL," "); } for(j=i-1;j>=0;j--){ if(pp[j]){ if(j==0){ printf("%s",pp[j]); }else{ printf("%s ",pp[j]); } } } return 0; }
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。
gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。
char string[15]; gets(string); /*遇到回车认为输入结束*/
scanf("%s",string); /*遇到空格认为输入结束*/
函数原型:char *strtok(char *s, char *delim);
函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。
函数使用说:
1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。
2.strtok函数以后的调用时的需用NULL来替换s.
3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式。
例子如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[]=”Golden Global View”;
char* token = strtok( buf, " ");
while( token != NULL )
{
printf( ”%s “, token );
token = strtok( NULL, ” “);
}
return 0;
}
其结果为:
Golden
Global
View
参考:
http://blog.csdn.net/js_xj/article/details/5863734
http://blog.csdn.net/js_xj/article/details/5863734
原文地址:http://blog.csdn.net/ch717828/article/details/43883311