在C中转义if语句

时间:2015-09-29 04:28:02

标签: c loops if-statement for-loop

#pragma warning(disable: 4996)
#include<stdio.h>
int main(){    
    double array1[8] = {0};    
    double data;    
    double lg_data=0;    
    int i = 0, j = 0;    
    int count = 1;    
    int lg_count = 1;    

    printf("7개의 양의 실수를 입력하세요.(마지막 원소는 자동으로 -1이 됩니다.)\n");
    for (i = 0; i < 8; i++){
        if (i == 7){
            array1[i] = -1;
        }
        else{
            scanf("%lf", &array1[i]);
        }
    }//end of loop
    for (i = 0; i < 8; i++){
        count = 1;
        for (j = 0; j < i; j++){
            if (array1[i] == array1[j]){
                count++;
                if (count >= lg_count){
                    lg_count = count;
                    data = array1[i];
                    if (data >= lg_data){
                        lg_data = data;
                    }
                }
            }
            else{
                if (array1[i] >= lg_data){
                    lg_data = array1[i];
                    lg_count = count;
                }
            }
        }//end of for(j)
    }//end of for(i)
    printf("%lf %d\n", lg_data, lg_count);
    return;

如果有值与if (array1[i] == array1[j])语句一致,我想停止for循环,即使仍然具有与else语句一致的值。我已经尝试将break语句放在if语句中......但它没有用。 我怎么能解决这个问题?

6 个答案:

答案 0 :(得分:1)

break语句终止执行最近的封闭doforswitchwhile语句。

请看以下示例:

for (i = 0; i < 8; i++){
    for (j = 0; j < i; j++){
        break; // this will break loop "j"
               // whereas loop "i" will still iterate
    }
}

因此,如果你想要停止两个循环,你可以这样做:

flag = false;
for (i = 0; i < 8; i++){
    for (j = 0; j < i; j++){
        if(condition == TRUE_FOR_BREAK) {
            flag = true;
            break; // "j" loop break
        }
    }
    if(flag) {
        break; // "i" loop break
    }
}

答案 1 :(得分:1)

一种选择是将两个嵌套循环拆分为单独的函数。通过从函数返回,执行将转义两个for循环:

void loops() {
   for (i = 0; i < 8; i++){
        count = 1;
        for (j = 0; j < i; j++){
          if (array1[i] == array1[j]){
              ...
              return;
              ...
          }
        }
    }

}

...
loops()
...

答案 2 :(得分:0)

使用break关键字退出最近的内部循环。但是,如果在该内部循环之外还有其他循环,则需要将变量设置为特定值,并确保所有外部循环始终检查此变量并在设置为该值时退出循环。

答案 3 :(得分:0)

把这段代码:

for (i = 0; i < 8; i++){
        count = 1;
        for (j = 0; j < i; j++){
            if (array1[i] == array1[j]){
                count++;
                if (count >= lg_count){
                    lg_count = count;
                    data = array1[i];
                    if (data >= lg_data){
                        lg_data = data;
                    }
                }
            }
            else{
                if (array1[i] >= lg_data){
                    lg_data = array1[i];
                    lg_count = count;
                }
            }
        }//end of for(j)
    }//end of for(i)

在单独的函数中并在条件后返回if(array1 [i] == array1 [j])。如果您使用VS,则可以使用“提取方法”选项。

答案 4 :(得分:-1)

您应该可以使用break

EG:

for(int i = 0; i<50;i++)
{
    if(i==10)
    {
        break;
    }
}

这应该迭代直到i euqals 10,然后突破循环

答案 5 :(得分:-1)

如果要停止执行最近的循环语句,可以使用break;语句。

请考虑以下代码段:

int i =1;
while (true) {
    i++;
        if (i == 5) {
            break;
        }
}