首页 > 解决方案 > 为什么我在 IF 中的 break 语句不起作用?

问题描述

这是我的代码,我正在尝试打印给定总和的子数组,为什么如果条件不起作用,则内部的 break 语句,请帮助我解决方案..

#include<stdio.h>
int main(){
    int n,s,i,temp=0;
    scanf("%d",&n);
    scanf("%d",&s);
    int a[n];
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++){
        for(int j=i;j<n;j++){
       temp=temp+a[j];
       if(temp==s){
         printf("%d %d\n",i+1,j+1);
         break;
       }
    }
    temp=0;
    }
    return 0;
}

标签: cif-statementbreak

解决方案


C编程中的break语句有以下两种用法:

  1. 它可用于终止语句case中的a。switch

  2. 如果您使用嵌套循环,break 语句将停止执行最内层循环并开始执行块之后的下一行代码。

在您的情况下,该break语句只会破坏您的内部循环。看这里:

#include<stdio.h>
int main(){
    int n,s,i,temp=0;
    scanf("%d",&n);
    scanf("%d",&s);
    int a[n];
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++){
       for(int j=i;j<n;j++){                  //
           temp=temp+a[j];                    //
           if(temp==s){                       //this loop is breaked
               printf("%d %d\n",i+1,j+1);     //
               break;                         //
           }
        }
        temp=0;
    }
    return 0;
}

另一个for循环仍在继续。


推荐阅读