PTA皮肉 - 強化されたバージョン

皮肉強化版

プログラムを書くためにあなたを求めて、英語の単語を考えると、文の順序のすべての単語は、出力を逆転させました。

入力フォーマット:

テスト入力は、テストケースを備え、所定の文字列の長さは、列500,000の合計を超えません。文字列は、いくつかの単語や文字列からなる単語は、英語の文字であるスペースの数、(場合はそうである)、スペースで区切られた単語間の数から構成される。

出力フォーマット:

各ライン毎にテストケース出力、逆後の出力文、単語間の唯一のスペースを確保します。
書き込みのトピックやアイデア:私は2次元配列を書きたかっ始め、結果は半分は出なかったんで、
(少し当惑)だけ戦った他のアイデアは、それが配列へのポインタに置き換えるべきだと思い、その後、取り残された、そして最終的にそれ仕方がない、私はコードのビットを見つけることができ、兄について学びます。
私は、コードを理解することを見てすることを決め、自分のアイデアを考えるに戻って、再び書き込みに自分のアイデアを使用するようにしてください。
コードは以下の通りであります:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

int main() {
	char str[500010];
	int len,real,head,count=0; 
	int i,j,k;
	gets(str);	//gets只有遇到回车才停止输入;
	len=strlen(str);	//len用来存储字符串长度; 
	for(i=len-1;i>=0;i--)	//从后往前进行
	{
		if(str[i]!=' ')
		{
			real=i;	//记录单词最后一个字母的位置 
			
			for(j=i-1;j>=0;j--)
			{
				if(str[j]==' ')	//向前遍历,遇到空格停下来 
				{
					break;                                                                                                                       
				}  
			} 
			
			head=j+1;	//指向空格的下一个空间,即单词的第一个字母
			if(count>0) //如果不是输出第一个单词,即原字符串最后一个单词,要输出一个相隔的空格
            {
                printf(" ");
            } 
            
			for(k=head; k<=real; k++)//从该单词的开头字符逐个输出到末尾字符
            {
                printf("%c", str[k]);
            }
            count++;                                                                     
            i=j;	//从遇到的空格那个位置开始,继续向前查询 
		}
	} 
	return 0;
}


オリジナルの記事は、0を発表 ウォンの賞賛0 ビュー10

おすすめ

転載: blog.csdn.net/qq_45354906/article/details/104905445