C语言,输入一行文字,单词间以空格分隔,然后分离其中的单词按每行一个单词输出,程序有了,求解释

编程序,输入一行文字,单词间以一个或多个空格分隔,然后分离其中的单词,并按每行一个单词依次输出各单词。#include<stdio.h>voidmain(){chars[... 编程序,输入一行文字,单词间以一个或多个空格分隔,然后分离其中的单词,并按每行一个单词依次输出各单词。
#include <stdio.h>
void main( )
{ char s[81];
int i,j;
gets(s);
for(i=0;s[i];i++)
if(s[i]!=' ')
{ for(;s[i]&&s[i]!=' ';i++)
printf("%c",s[i]);
printf("\n");
i--;
}
}

从{ for(;s[i]&&s[i]!=' ';i++)开始就不懂了 高人帮忙指点一下后面几句什么意思 谢谢
{ for(;s[i]&&s[i]!=' ';i++)
printf("%c",s[i]);
printf("\n");
以上几句懂了 可是最后为什么要i--呢 这里又不懂了。。。
展开
 我来答
影Serena
2019-10-16 · TA获得超过676个赞
知道答主
回答量:11
采纳率:0%
帮助的人:5949
展开全部

{ for(;s[i]&&s[i]!=' ';i++)使用循环逐个字母输出每一个空格后的单词,即:字符不为空格或结束符

遇到空格后就 printf("\n");换行,从新执行

for(i=0;s[i];i++)

if(s[i]!=' ')

{ for(;s[i]&&s[i]!=' ';i++)

printf("%c",s[i]);

printf("\n");

i--;}

直到结束

扩展资料

与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

参考资料来源:百度百科:c语言

松思宸t6
推荐于2017-12-16 · 超过27用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:89.1万
展开全部
for循环的意思是,如果当前的字符不是字符串结束符'\0'也不是空格的时候就把这个字符打印到屏幕上,直到遇到空格表示打印完了一个单词了,这时候跳出循环打一个回车换行出来,准备开始打下一个单词,但是因为在for循环里i已经自加了,为了不错过下一个单词的第一个字符,所以要把i先减一,这样的话外面的大循环再执行i++的时候就不至于吧下一组单词的第一个字符给错过了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友733d857
2011-03-17
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
{ for(;s[i]&&s[i]!=' ';i++)使用循环逐个字母输出每一个空格后的单词,即:字符不为空格或结束符就逐个输出,
遇到空格后就 printf("\n");换行,从新执行
for(i=0;s[i];i++)
if(s[i]!=' ')
{ for(;s[i]&&s[i]!=' ';i++)
printf("%c",s[i]);
printf("\n");
i--;
}
知道结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式