求详细解答,谢谢啦!!!

#include<stdio.h>main(){char*s="12134211";intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){swi... #include <stdio.h>
main()
{
char *s="12134211";
int v[4]={0,0,0,0},k,i;
for (k=0;s[k];k++)
{
switch(s[k])
{
case'1':i=0;
case'2':i=1;
case'3':i=2;
case'4':i=3;
}
v[i]++;
}
for(k=0;k<4;k++)
printf("%d",v[k]);
}
展开
 我来答
瀚漠
2012-05-31 · 专注C语言发开,Linux系统相关
瀚漠
采纳数:309 获赞数:1286

向TA提问 私信TA
展开全部
看了下程序,目的是统计常量字符串 "12134211" 中1.2.3.4的个数
这里在使用switch时忘了一个重要的关键字 break;
改好的程序,顺便调试了一下,没有问题了:
#include <stdio.h>
main()
{
char *s="12134211";
int v[4]={0,0,0,0},k,i;
for (k=0;s[k];k++)
{
switch(s[k]) {
case'1':i=0;break;
case'2':i=1;break;
case'3':i=2;break;
case'4':i=3;break;
}
v[i]++;
}
for(k=0;k<4;k++)
printf("%d",v[k]);
printf("\n");
}
更多追问追答
追问
这道题目是没有break的,意思就是全部都要执行到case‘4’:I=3;才行
追答
不明白你说的:这道题目是没有break的~~
switch的基本语法就是这样,必须用break,除非你匹配到不同的项做相同的操作:
switch(n) {
case 1:
case 2:
case 3:
/* do something */
break;
}
你这里的目的不是统计数字个数?你匹配到不同的项,给 i 赋的值不一样,所以加break就可以实现了,为什么不加呢。。。你不加break,i 的值永远是3.。。。。
向翼翅he云倦初
2012-05-31 · 超过26用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:84.1万
展开全部
你想问什么都不说
追问
额~~就是为什么输出是0008
最后一个为什么是8
追答
都搞定了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式