一道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语言初学者,麻烦解释清楚一点 谢谢 展开
答案如下:
#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语言初学者,麻烦解释清楚一点 谢谢 展开
4个回答
展开全部
s++是先赋值再自加 如:
int s=1;
s=s++;
运行后:
s=1;
但下一次接受S就不是等于1了 等于2了 赋值之后自加了
所以 s++和s不相等
int s=1;
s=s++;
运行后:
s=1;
但下一次接受S就不是等于1了 等于2了 赋值之后自加了
所以 s++和s不相等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设s指向字符串" word"
语句if(*s++==' '&& *s!=' ')
第一个s指向" word",此时*s=' '(空格)
然后s++,s指向"word",此时*s='w'
语句if(*s++==' '&& *s!=' ')
第一个s指向" word",此时*s=' '(空格)
然后s++,s指向"word",此时*s='w'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
lz的这句if(*s++==' '&& *s!=' ')的意思是:先看*s的值是不是=空格,如果=就再把s++使其指向下一位,再看*s的值是不是=空格,如果不=空格就说明条件成立了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询