c++算术题一道,关于字符串、整形、for语句和switch语句

13.以下程序的输出结果是()。#include<iostream.h>voidmain(){chars[]="abcdefbcde",*p=s;intv1=0,v2=0... 13. 以下程序的输出结果是( )。
#include <iostream.h>
void main()
{char s[]="abcdefbcde",*p=s;
int v1=0,v2=0,v3=0,v4=0;
for (p;*p;p++)
switch(*p)
{
case 'a':v1++;break;
case 'b':v3++;break;
case 'e':v2++;break;
default: v4++;
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
A.1,2,2,5 B.4,7,5,8 C.1,5,3,10 D.8,8,8,8

答案是A,这是为什么啊?尤其里面那个for语句看不懂,求解释。。。
展开
 我来答
chiconysun
2011-01-08 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:3110万
展开全部
for 中条件*p等价于*p!=0,意思就是p当前指向内容不为0,也就是字符串结尾
整个循环用于统计字符串s中各种字符的个数,v1代表'a'的个数,也就是1,v2代表字符'b'的个数,就是2,v3代表字符'e'的个数,是2,v4代表其他字符个数,就是5
LiChris1
2011-01-08 · 超过25用户采纳过TA的回答
知道答主
回答量:89
采纳率:100%
帮助的人:53.4万
展开全部
#include <iostream.h>
void main()
{char s[]="abcdefbcde",*p=s;
int v1=0,v2=0,v3=0,v4=0;
for (p;*p;p++) //开始p指向s(s[0]),*p就是a,p++后p指向s的下一下元素 for(;*p;) *P这个条件判断是否到了结尾,
//字符串的结尾时\0
switch(*p)//取p指向的值 s[i]
{
case 'a':v1++;break;//a 有1个
case 'b':v3++;break;//b有2个
case 'e':v2++;break;//e有2个
default: v4++;//那么其他就是10-5=5
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuzongtang
2011-01-09 · TA获得超过723个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:359万
展开全部
#include <iostream.h>
void main()
{char s[]="abcdefbcde",*p=s;
int v1=0,v2=0,v3=0,v4=0;
for (p;*p;p++) //p指向a(初始值), *p不为NULL时循环继续
switch(*p) // p++,指针往后移,依次指向b,c,d,e,f…
{ //a只有一个,则v1++后为1,b有2个,v3++两次则为2,
case 'a':v1++;break; //e有2个 v2++(两次)则为2。其它情况v4++(五次)则为5.
case 'b':v3++;break;
case 'e':v2++;break;
default: v4++;
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yveng
2011-01-08 · 超过26用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:75.1万
展开全部
最好的方法是调试一遍仔细看看,这样比较生动,鄙人口拙,不知你能不能看懂。

刚开始声明时 字符串s中有10个字母,求各个字母的个数 1+2+2+5=10。答案出来了。。。

for语句中的p是个指针,初始p指向s中的第一位a。每循环一次,p+1,也就是往后指一位

注意这里for语句后没分号,所以for的循环体是swich语句。

swich语句进行判断,如果p指向a,计数器v1加一,如果指向b,v3加一,以此类推。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清晰且舒爽的小国宝05
2011-01-09
知道答主
回答量:70
采纳率:0%
帮助的人:43.9万
展开全部
统计a,b,e还有不是(a或b或e)的个数,算了一下,就是1个,2个,2个,5个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式