C 为什么我在我的";至于;循环说';中断';语句不在循环或开关中?
令人难以置信的编程新手,我在第12行收到一个错误,指出我的break语句不在循环或开关中。有人能解释一下我的错误在哪里以及如何修复它吗C 为什么我在我的";至于;循环说';中断';语句不在循环或开关中?,c,C,令人难以置信的编程新手,我在第12行收到一个错误,指出我的break语句不在循环或开关中。有人能解释一下我的错误在哪里以及如何修复它吗 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n1, n2, i, gcd, lcm; printf("Enter two positive integers: "); scanf("%d %d",
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n1, n2, i, gcd, lcm;
printf("Enter two positive integers: ");
scanf("%d %d",&n1,&n2);
for(i=1; i <= n1 && i <= n2; ++i) {
printf("Enter two positive integers: ");
scanf("%d %d",&n1,&n2);
if(n1==-1,n2==-1) break;
// Checks if i is factor of both integers
if(n1%i==0 && n2%i==0)
gcd = i;
}
lcm = (n1*n2)/gcd;
printf("The LCM of two numbers %d and %d is %d.", n1, n2, lcm);
return 0;
}
#包括
#包括
#包括
int main()
{
int n1、n2、i、gcd、lcm;
printf(“输入两个正整数:”);
scanf(“%d%d”、&n1和&n2);
对于(i=1;i如果您“在第12行收到一个错误,说明我的break语句不在循环或开关中”,那么您可能有一个非常有缺陷的编译器,或者发布了错误的代码。该代码有一些问题,但错误位置的break
不是其中之一
当您错误地放置了一些大括号时,通常会出现以下错误消息:
int i;
for (i = 0; i < 10; ++i)
printf("%d\n", i);
if (someCondition)
break;
如果你想知道计算GCD的更有效的方法,你应该研究欧几里德算法。这可以定义为(对于非负a
和b
):
这意味着您可以使用递归函数:
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
或者,如果你强烈反对递归的话,可以使用迭代法:
int gcd(int a, int b) {
while (b != 0) {
int t = a % b;
a = b;
b = t;
}
return a;
}
if(n1=-1,n2=-1)
你能解释一下吗?如果你是个新手,Stack Overflow可能不是适合你的地方。有很多免费的教程资源,你应该花一些时间来学习。一旦你掌握了基本知识,你可能会发现这个网站对于特定的、经过充分研究的问题很有用。中断声明在第15行(不是12)-您确定我们正在查看与您相同的代码吗?第15行将其更改为-if(n1==-1&&n2=-1)break;此代码编译时没有错误。
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int gcd(int a, int b) {
while (b != 0) {
int t = a % b;
a = b;
b = t;
}
return a;
}