yueyufeng 发表于 2024-4-11 19:00:59

没有输出

#include <bits/stdc++.h>
using namespace std;
int n,a,flag=0;
bool check(int a[]){
for(int i=0;i<n-1;i++){
    if(a>a)
    return false;
}
return true;
}
void cz(int a[]){
if(check(a)){
    flag=1;
    return ;
}
for(int i=1;i<=n/2;i++){
    swap(a,a);
    cz(a);
    swap(a,a);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
   cin>>a;
}
cz(a);
if(flag==1){
    cout<<"YES";
}
else
cout<<"NO";
return 0;
}

FishC 发表于 2024-4-11 19:01:19

代码中存在一些语法错误和逻辑问题。首先,你的代码中缺少头文件声明,应该添加 `#include <iostream>` 来进行输入输出操作。

其次,`main()` 函数是程序的入口,你需要在其中定义和初始化变量,调用其他函数,并输出结果。在你的代码中,缺少了 `main()` 函数。

另外,`check()` 函数和 `cz()` 函数的参数命名都是 `a`,会导致混淆,你需要为它们取不同的名称。

最后,程序结束前应输出一些结果,否则程序运行完毕后就直接退出了。

下面是我根据你的代码所做的修改和补充:

#include <iostream>
using namespace std;

int n, num, flag = 0;

bool check(int num) {
    for (int i = 0; i < num; i++) {
      if (i * i == num)
            return false;
    }
    return true;
}

void cz(int num) {
    if (check(num)) {
      flag = 1;
      return;
    }
    for (int i = 1; i < num; i++) {
      if (num % i == 0) {
            int a = num / i;
            cz(a);
            if (flag == 1) {
                return;
            }
      }
    }
}

int main() {
    cout << "请输入一个正整数:" << endl;
    cin >> n;

    cz(n);

    if (flag == 1) {
      cout << n << " 不是质数" << endl;
    } else {
      cout << n << " 是质数" << endl;
    }

    return 0;
}

在这段代码中,`n` 代表你要判断的正整数,`num` 代表每次递归的待判断的数。

首先,在 `main()` 函数中,我们输出提示信息并读取用户输入的 `n`。

然后,我们调用 `cz(n)` 进行递归判断是否是质数。

接着,在 `cz()` 函数中,我们先调用 `check()` 函数判断当前的 `num` 是否是质数,如果是,则将 `flag` 设为1,表示找到了除1和自身以外的因子,直接返回。

如果不是质数,我们使用一个循环来寻找 `num` 的所有除数。如果找到除数 `i` 则将 `num` 除以 `i` 得到商 `a`,然后再次调用 `cz(a)` 进行递归判断。如果找到了质数,则将 `flag` 设为1,直接返回。

最后,在 `main()` 函数中,我们根据 `flag` 的值来输出结果,如果 `flag` 为1,则说明不是质数,否则是质数。

希望这个代码可以解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 没有输出