C语言:下面程序运行后的输出结果是2,为什么?

#include(stdio.h)main(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='a'&&... #include(stdio.h)
main()
{char s[]={"012xy"};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='a'&&s[i]<='z') n++;
printf("%d\n",n)
}
展开
 我来答
sun_siliang
2011-03-23 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4623万
展开全部
#include<stdio.h>
void main()
{char s[]={"012xy"};//要统计的字符串
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='a'&&s[i]<='z') n++;//此循环在统计字符串s中的小写字母个数,因此为2
printf("%d\n",n);//输出小写字母个数n
}
追问
就是s[i]!=0z这里我很疑惑,for(i=0;s[i]!=0;i++)
不是应该是s[5]中不为0是才往下计算 if(s[i]>='a'&&s[i]<='z') n++;吗,所以我得出的答案是0,
追答
1 s[i]!=0就是s[i]!='\0'的另一种写法,'\0'这个字符的ASCII码是0,因此可以这样写,甚至还可以简写成s[i]。下面正点种写法等价。
s[i]!=0
s[i]!='\0'
s[i]
2 \0'与'0'不是同一个字符, '\0'的ASCII码为0,'\0'的ASCII码为48。
3 s[]={"012xy"};这个字符串的第一个字符是'0',ASCII码为48,最后一个字符是'\0',ASCII码为0,每个字符串都以'\0'结尾。
财米有言讲谈察
2011-03-23 · TA获得超过1538个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:457万
展开全部
程序是要求输出字符串s中介于'a'和'z'之间的字符,0,1,2对应的值都不在其间,只有,x,y满足if 条件,所以是2个。输出2
追问
就是s[i]!=0z这里我很疑惑,for(i=0;s[i]!=0;i++)
不是应该是s[5]中不为0是才往下计算 if(s[i]>='a'&&s[i]<='z') n++;吗,所以我得出的答案是0,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5b6b579
2011-03-23 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:130万
展开全部
if(s[i]>='a'&&s[i]<='z') n++;//此循环在统计字符串s中的小写字符个数
char s[]={""012xy"}中只有xy是字符,所以n=2;
追问
就是s[i]!=0z这里我很疑惑,for(i=0;s[i]!=0;i++)
不是应该是s[5]中不为0是才往下计算 if(s[i]>='a'&&s[i]<='z') n++;吗,所以我得出的答案是0,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
撒康胜026
2011-03-23 · TA获得超过1693个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:37.2万
展开全部
正确的啊,因为你的字符串里头有两个满足条件的字符,分别是x,y
追问
就是s[i]!=0z这里我很疑惑,for(i=0;s[i]!=0;i++)
不是应该是s[5]中不为0是才往下计算 if(s[i]>='a'&&s[i]<='z') n++;吗,所以我得出的答案是0,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
walqqw
2011-03-24
知道答主
回答量:9
采纳率:0%
帮助的人:1.4万
展开全部
如果你要计算的是字符串中小写字母的个数 答案为2哪里错呢 另外 应为s[i]!='0';
追问
就是s[i]!=0z这里我很疑惑,for(i=0;s[i]!=0;i++)
不是应该是s[5]中不为0是才往下计算 if(s[i]>='a'&&s[i]<='z') n++;吗,所以我得出的答案是0,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
涓涓细流shiyi
2011-03-23 · TA获得超过159个赞
知道答主
回答量:234
采纳率:0%
帮助的人:116万
展开全部
if(s[i]>='a'&&s[i]<='z') n++;是判断字符串中的小写字母
追问
就是s[i]!=0z这里我很疑惑,for(i=0;s[i]!=0;i++)
不是应该是s[5]中不为0是才往下计算 if(s[i]>='a'&&s[i]<='z') n++;吗,所以我得出的答案是0,
追答
这里的s[i]!=0是指s[i]!='\0',这两者等价
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式