給定一句英語,要求你撰寫程式,將句中所有單詞的順序顛倒輸出。
輸入格式:
測驗輸入包含一個測驗用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字串,單詞之間用若干個空格分開。
輸出格式:
每個測驗用例的輸出占一行,輸出倒序后的句子,并且保證單詞間只有1個空格。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
#include<stdio.h>
#define M 500000
int main()
{
char s[M],b[M];
int i,k,j,h=0;
k=0;
while((s[k]=getchar())!='\n')
k++;
s[k]='\0';
k=k+1;
for(i=k;i>0;i--)
{
s[i]=s[i-1];
}
s[0]=' ';
j=0;
for(i=k-1;i>=0;i--)
{
if(s[i]!=' ')
{
j++;
b[j]=s[i];
}
else if(j!=0)
{
for(h=j;h>0;h--)
{
printf("%c",b[h]);
}
if(i!=0)
printf(" ");
j=0;
}
}
return 0;
}
我的為什么一直不對啊?差一個小點,格式問題,求助!
uj5u.com熱心網友回復:
#include<stdio.h>
//#define M 500000
#define M 512
int main()
{
char s[M];//,b[M];
int cnt, i, j, k;
//int i,k,j,h=0;
k=0;
while(k < M - 1 && (s[k]=getchar())!='\n')
k++;
s[k] = '\0';
cnt = 0;
for (i = k-1; i >= 0; i--) {
if (s[i] == ' ' && s[i+1] != ' ') {
for (j = i+1; j < i + 1 + cnt; j++)
putchar(s[j]);
if (cnt > 0)
putchar(' ');
cnt = 0;
}
if (s[i] != ' ')
cnt++;
}
for (j = i+1; j < i + 1 + cnt; j++)
putchar(s[j]);
putchar(10);
#if 0
k=k+1;
for(i=k;i>0;i--)
{
s[i]=s[i-1];
}
s[0] = ' ';
j=0;
for(i=k-1;i>=0;i--)
{
if(s[i]!=' ')
{
j++;
b[j]=s[i];
}
else if(j!=0)
{
for(h=j;h>0;h--)
{
printf("%c",b[h]);
}
if(i!=0)
printf(" ");
j=0;
}
}
#endif
return 0;
}
供參考~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108716.html
標籤:C語言
下一篇:萌新求助!
