一道C语言题 知道解答过程 看不懂 求解释 我 初学 麻烦解释清楚点 谢谢

函数fun的功能是将从键盘输入的多个英文单词(各单词用空格分隔)中每个单词的第一个字母转换为大写。请编写fun函数和测试用的主函数。答案如下:#include<stdio... 函数fun的功能是将从键盘输入的多个英文单词(各单词用空格分隔)中每个单词的第一个字母转换为大写。请编写fun函数和测试用的主函数。
答案如下:
#include<stdio.h>
void fun(char *);
void main()
{ char s[80];
gets(s);
fun(s); //正确调用函数5分
puts(s);
}
void fun(char * s) //正确写出函数头5分
{ while(*s==' ') //正确跳过所有的前导空格5分
s++;
*s=(*s>='a'&&*s<='z')?*s-32:*s; //正确将第一个单词首字母转换为大写5分
while(*s) //正确取出字符串中所有字符5分
if(*s++==' '&& *s!=' ') //正确判断单词首字符5分
*s=(*s>='a'&&*s<='z')?*s-32:*s;
}
其中if(*s++==' '&& *s!=' ')这个判断语句*s++与*s的值为什么会不等?
我是C语言初学者,麻烦解释清楚一点 谢谢
展开
 我来答
guanhao266
2011-01-11 · TA获得超过248个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:198万
展开全部
你好!
先说明一下,s是不能指向字符串的,只能指向字符串的首字符。
说一下s++ 和 ++s的区别:s++ 是使用了s再递增,++s是递增后使用。
在这里,先判断*p是否是空格,判断结束后*p递增(即指向下一个字符),这时的*p已经是指向前面的*p后面的位置了,可以看似一辆开动的车,然后再判断是否是空格。
谢谢!
崔绮楣Oz
2011-01-10 · 超过60用户采纳过TA的回答
知道答主
回答量:266
采纳率:0%
帮助的人:157万
展开全部
s++是先赋值再自加 如:
int s=1;
s=s++;
运行后:
s=1;
但下一次接受S就不是等于1了 等于2了 赋值之后自加了
所以 s++和s不相等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hbuxiaoshe
2011-01-11 · 超过26用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:57.2万
展开全部
假设s指向字符串" word"
语句if(*s++==' '&& *s!=' ')
第一个s指向" word",此时*s=' '(空格)
然后s++,s指向"word",此时*s='w'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随枫轻逝
2011-01-11 · 超过28用户采纳过TA的回答
知道答主
回答量:165
采纳率:0%
帮助的人:97.9万
展开全部
lz的这句if(*s++==' '&& *s!=' ')的意思是:先看*s的值是不是=空格,如果=就再把s++使其指向下一位,再看*s的值是不是=空格,如果不=空格就说明条件成立了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式