求解一道C语言基础题?

这是用链栈求平衡符号问题的,判断()、[]、{},这些符号是否配对。我想问一下,下面代码switch中,为什么有下面那3个break才是正确的,去掉就是错误的呢?intb... 这是用链栈求平衡符号问题的,判断()、[]、{},这些符号是否配对。
我想问一下,下面代码switch中,为什么有下面那3个break才是正确的,去掉就是错误的呢?
int balance_symbol(char *s)
{//符号配对判断,若配对,返回值为1,否则返回值为0
PLinkStack L;
L=createNullStack_link( );
int len;
len=strlen(s);
int i;
for(i=0;i<len;i++)
{
char x=s[i];
switch(s[i])
{
case '(':
case '{':
case '[':
push_link(L ,s[i]);
break;

case ')':
if(pop_link(L)!='(') return 0;
// break;有才是正确的?没有是错误的。
case '}':
if(pop_link(L)!='{') return 0;
//break;有才是正确的?没有是错误的
case ']':
if(pop_link(L)!='[') return 0;
//break;有才是正确的?没有是错误的
}
}
return 1;
}
展开
 我来答
帐号已注销
2020-11-01 · TA获得超过5232个赞
知道小有建树答主
回答量:1090
采纳率:58%
帮助的人:285万
展开全部

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


int GetPrime(int a[], int b[], int n) {

  int C = 0;

  for(int i = 0; i < n; i++) {

    int j;

    if(a[i] == 1 || a[i] % 2 == 0)

      continue;

    for(j = 2; j * j <= a[i]; j++)

      if(a[i] % j == 0)

        break;

    if(j * j > a[i])

      b[C++] = a[i];

  }

  return C;

}


int main() {


  int a[20], b[20], n;

  srand(time(NULL));

  for(int i = 0; i < 20; i++)

    a[i] = rand() % 99 + 1;

  n = GetPrime(a, b, 20);

  printf("原始数组:\n");

  for(int i = 0; i < 20; i++)

    printf("%d%c", a[i], i % 5 == 4 ? '\n' : ' ');

  if(n == 0)

    printf("\nNO");

  else {

    printf("\n素数数组:\n");

    for(int i = 0; i < n; i++)

      printf("%d%c", b[i], i % 5 == 4 ? '\n' : ' ');

  }

  putchar('\n');

  return 0;

}

microroom
科技发烧友

2020-10-31 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1531万
展开全部
因为如果没有break;执行下面的那个case中的if时会多弹出一个字符。

比如,对于:[()]
当扫描到)时会执行case ')':弹出(,然后继续下一个case '}':,这时if会弹出[,因'['!='{'会返回0,但实际括号是匹配的。
更多追问追答
追问
为什么会继续执行下一个case '}'呀?条件不是不满足吗?
追答
只要有一个case满足条件就从此进入,如果此case没有break,下面的case就不再判断是否满足条件了,会直接进入,直到有一个case有break,才从此case退出。

switch语句的功能就是如此。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

2020-10-31 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部

没有break跳出,程序会顺序执行下一行的代码,不会自行跳出switch结构

追问
但是有啥关系呀?如果执行了某个case条件中的语句,下面的case那不就不符合条件了吗?那不是也相当于break?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式