
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语句看不懂,求解释。。。 展开
#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语句看不懂,求解释。。。 展开
展开全部
for 中条件*p等价于*p!=0,意思就是p当前指向内容不为0,也就是字符串结尾
整个循环用于统计字符串s中各种字符的个数,v1代表'a'的个数,也就是1,v2代表字符'b'的个数,就是2,v3代表字符'e'的个数,是2,v4代表其他字符个数,就是5
整个循环用于统计字符串s中各种字符的个数,v1代表'a'的个数,也就是1,v2代表字符'b'的个数,就是2,v3代表字符'e'的个数,是2,v4代表其他字符个数,就是5
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好的方法是调试一遍仔细看看,这样比较生动,鄙人口拙,不知你能不能看懂。
刚开始声明时 字符串s中有10个字母,求各个字母的个数 1+2+2+5=10。答案出来了。。。
for语句中的p是个指针,初始p指向s中的第一位a。每循环一次,p+1,也就是往后指一位
注意这里for语句后没分号,所以for的循环体是swich语句。
swich语句进行判断,如果p指向a,计数器v1加一,如果指向b,v3加一,以此类推。
完
刚开始声明时 字符串s中有10个字母,求各个字母的个数 1+2+2+5=10。答案出来了。。。
for语句中的p是个指针,初始p指向s中的第一位a。每循环一次,p+1,也就是往后指一位
注意这里for语句后没分号,所以for的循环体是swich语句。
swich语句进行判断,如果p指向a,计数器v1加一,如果指向b,v3加一,以此类推。
完
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
统计a,b,e还有不是(a或b或e)的个数,算了一下,就是1个,2个,2个,5个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询