首页 >> 大全

PTA 6-5 说反话-加强版 (C)(通俗易懂还有图解)

2023-07-23 大全 33 作者:考证青年

要求: 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

输入样例:

Hello World   Here I Come

输出样例:

Come I Here World Hello

这道题看起来简单,实际上是我太菜了,一开始我想当然想用最简单的方法暴力一下。

错误示例

#include 
main()
{ char ch;int i,k=0,flag=1;char a[2500][250000];for(i=0;;i++){  while((ch=getchar())==' '){ if(ch=='\0'||ch=='\n')break;}a[i][0]=ch;int j=1;while((ch=getchar())!=' '){   if(ch=='\0'||ch=='\n'){flag=0;break;}a[i][j++]=ch;}if(flag==0)break;k++;}printf("%s",a[k]);for(i=k-1;i>=0;i--)printf(" %s",a[i]);
}

结果发现答案没一个对,要不然段错误,要不然格式错误,要不然运行超时。

想了好久,最后————

正确示例:

#include
#include
main()
{   int len,flag=0,count=0;//flag用来标记第一个空格。char a[500001];char *p[250000];//一个指针数组用来指向每个单词的首地址。gets(a);len=strlen(a);for(int i=0;i0;i--){printf("%s ",p[i]);}if(p[0]!=NULL)//很关键,是一个测试点,当输入为空格时。printf("%s",p[0]);}

上个 图解:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了