c语言按单词逆序输出句子,运行会超时,断点调试运行下来好像没什么问题。。。

qq_41020347 2018-12-04 09:33:35
#include <stdio.h>
#define N 40
int main(){
//输入句子
char ch,sentence[N],fin;
int i;
for(i=0;i<N;i++){
ch = getchar();
if(ch=='.'||ch=='!'||ch=='\?'){
fin=ch;
break;
}
sentence[i] = ch;
}
sentence[i] =fin; //把终止字符存入句子最后一位

//自减i寻找每个单词开始处
int end,sta; //每个单词起终点,起点是首字母前一位,终点即最后一个字母位置
end = i-1; //end初始化最后一个单词末尾字母位置
while(1){

i = end; //i由end处自减
while( sentence[i]!=' '){
i--;
if(i==-1) //下标越界,句子遍历完成
break;
}
sta = i; // 搜寻到单词开始处的前一个位置

//输出单词
for(i = sta+1 ;i <= end ;i++ ){
printf("%c" ,sentence[i]);
}
if(sta != -1) //输出单词间的空格
printf(" ");
if(sta == -1){ //输出终止字符
printf("%c",fin);
break;
}
end = sta-1; //重定end位置
}

}
...全文
206 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-12-05
  • 打赏
  • 举报
回复
边界条件
输入输出格式
……
qq_41020347 2018-12-05
  • 打赏
  • 举报
回复
sdfds fdss hdf!gdh sdfds fdss hdf! -------------------------------- Process exited after 6.152 seconds with return value 15 请按任意键继续. . . 运行结果是这样,调试单步下来是对的,求解
自信男孩 2018-12-05
  • 打赏
  • 举报
回复
应该是输入的最后没有加上'!', or '?' or '.',因为只有遇到这三个其中一个就会退出输入循环
可能你在最后没有数组这三个其中一个,所以会出现没有运行结束,因为正在等待你的输入,直到数组这三个符号,或者输够N个字符。

有几个地方可以修改一下:
for(i = 0; i < N-1; i++){
ch = getchar();
if(ch=='.'||ch=='!'||ch=='?') {
fin = ch;
break;
}
sentence[i] = ch;
}
sentence[i] = fin; //把终止字符存入句子最后一位

把i < N;改成i < N - 1
qq_41020347 2018-12-05
  • 打赏
  • 举报
回复
问题解决了,我的软件好像有问题,复制到别的电脑上正确运行了。。
英雄@末路 2018-12-05
  • 打赏
  • 举报
回复
后面那个while(1)里面加几句打印,把i, sta,end 都打印几次,可能结果就对了
epdc147 2018-12-04
  • 打赏
  • 举报
回复
感觉没什么问题,但句子不是以.!?结尾会有问题的

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧