C "for“循环的语法未编译[已关闭]

z31licg0  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(119)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
11小时前关门了。
Improve this question
我是C编程语言的初学者,主要来自Python/MATLAB。我想试着找出下面这段代码的问题所在:

#include <stdio.h>
#include <math.h>

int PSR(int n) {
   int psr = 1;
   // psr_up = int(sqrt(double psr)));
   for (int i = 1; i < 200; i++) {
      if (n % i == 0) {
         psr = i;
      }
   }
   return psr;
}

目前,当我尝试编译时,我不断收到以下错误:

Undefined symbols for architecture arm64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想看看是否有人能给我指出正确的方向,因为这似乎是基本的语法,我相信我正在严格遵循CodeAcademy对for循环的建议。
编辑:显然,您需要一个main()函数来编译它。

// Project Euler Problem 266
// https://projecteuler.net/problem=266

#include <stdio.h>
#include <math.h>

int PSR(int n) {
   int psr = 1;
   // psr_up = int(sqrt(double psr)));
   for (int i = 1; i < 200; i++) {
      if (n % i == 0) {
         psr = i;
      }
   }
   return psr;
}

int main() {
   printf("%d", PSR(3102));
}

现在的问题是它输出141%,而我期望的是47

bxjv4tth

bxjv4tth1#

首先你需要在找到第一个除数后从PSR返回。其次你需要添加一个新行。

#include <stdio.h>
#include <math.h>

int PSR(int n) {
   int psr = 1;
   // psr_up = int(sqrt(double psr)));
   for (int i = 1; i < 200; i++) {
      if (n % i == 0) {
         psr = i;
         break; // for exit of loop
         // or simply 'return i;'
      }
   }
   return psr;
}

int main() {
   printf("%d\n", PSR(3102)); // new line added after print
}

相关问题