C 在不使用break命令的情况下退出循环

C 在不使用break命令的情况下退出循环,c,C,我写了一个寻找gcd的程序;它工作得很好。但是,在分配时禁止使用中断。我还可以做些什么来退出循环?我试图改变while循环的条件,但它打印出了错误的答案 这是我的密码: #include <stdio.h> #include <stdlib.h> int main(){ int i, gcd, min, arr[100]; gcd = min; for(i=1; i<n; i++) { while(1)

我写了一个寻找gcd的程序;它工作得很好。但是,在分配时禁止使用
中断
。我还可以做些什么来退出循环?我试图改变
while
循环的条件,但它打印出了错误的答案

这是我的密码:

#include <stdio.h>
#include <stdlib.h>

int main(){

    int i, gcd, min, arr[100];

    gcd = min;


    for(i=1; i<n; i++)
    {

          while(1)
            {
                if(gcd % min ==0  && arr[i] % min== 0)
                        break;
                min --;
            }
    }


    gcd = min;

    printf("\n gcd= %d",gcd);
  
    return 0;
}
#包括
#包括
int main(){
国际一级,全球合作发展,最低,arr[100];
gcd=最小值;

对于(i=1;i,可以使用中断条件作为while循环执行条件:


for(i=1;i您可以在
中切换1,而(1)
中使用变量并在if语句中切换它的值。另外,请确保您定义或设置n为变量,因为在我测试代码时它是未知的

#include <stdio.h>
#include <stdlib.h>
 #define n 10
int main(){

 int i, gcd, min, arr[100],verification=1;

 gcd = min;


    for(i=1; i<n; i++)
    {
        verification = 1;
          while(verification)
            {
                if(gcd % min ==0  && arr[i] % min== 0)
                        verification = 0;
                        if (verification)
                        min --;


            }


    }

 gcd= min;

printf("\n gcd= %d",gcd);


return 0;
}
#包括
#包括
#定义n10
int main(){
int i,gcd,最小值,arr[100],验证=1;
gcd=最小值;

对于(i=1;请参见
while(1)中的
1
?在该位置,您可以设置继续循环的条件。如果
语句中的测试当前是结束循环的条件,请将其更改为继续循环的条件,并将其移动到
,而不是
1
。摆脱在消息前添加新行字符的习惯而不是像在
printf中那样在后面(“\n gcd=%d”,gcd);
.C被设计为在行尾有新行字符。它会导致输出立即发送到交互设备,而不是保存在缓冲区中。仅供参考,您的程序无法按图所示工作,因为
min
n
arr
从未初始化。为将来的问题准备代码时,请准备这包括可以编译和执行以演示问题的完整代码。您应该修改代码以使用最旧的算法。它比您正在使用的算法效率高出很多。