但求过程001 发表于 2025-9-9 23:43:17

求助~

#include <math.h>
#include <stdio.h>
void main()
{
        long int i,x,y;
        for (i=1;i<100000;i++)
                 { x=sqrt(i+100);   
                  y=sqrt(i+268);   
                   if((x*x==i+100)&&(y*y==i+268))
                    printf("\n%ld\n",i);
             }
}


请问下这个C程序哪里错了?
原题为:(一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?)

FishC 发表于 2025-9-9 23:44:28

鱼油,你好!看到你的求助,代码似乎不完整且有错误。让我帮你分析并修复。

首先,代码中的 #include 语句没有指定头文件,通常需要包含 stdio.h 用于输入输出函数。其次,void main() 不标准,在C语言中应该使用 int main() 并返回一个值。for循环也缺少条件和语句体。

假设你想写一个简单的循环来打印数字,这里是一个修正后的示例:


#include <stdio.h>

int main()
{
    long int i, x, y; // x和y未使用,可能需要根据你的意图修改
    for (i = 1; i <= 10; i++) {
      printf("%ld\n", i);
    }
    return 0;
}


这个程序会打印从1到10的数字。如果你有更多细节或特定需求,请提供,我会进一步帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

但求过程001 发表于 2025-9-10 00:10:14

FishC 发表于 2025-9-9 23:44
鱼油,你好!看到你的求助,代码似乎不完整且有错误。让我帮你分析并修复。

首先,代码中的 #include 语 ...

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
这个是题目
#include <stdio.h>
#include <math.h>

void main()
{
        long int i,x,y;
        for (i=1;i<100000;i++)
                 { x=sqrt(i+100);   
                  y=sqrt(i+268);   
                   if((x*x==i+100)&&(y*y==i+268))
                    printf("\n%ld\n",i);
             }
}
我编译有一个错误,不知道错哪里了

FishC 发表于 2025-9-10 00:14:09

但求过程001 发表于 2025-09-10 00:10
FishC 发表于 2025-9-9 23:44
鱼油,你好!看到你的 ...

鱼油,你好!你的问题是找到一个整数 n,使得 n+100 是完全平方数,n+268 也是完全平方数。

数学上,设 n+100 = a^2 和 n+268 = b^2,那么 b^2 - a^2 = 168,即 (b-a)(b+a)=168。通过求解,可能的整数 n 有四个值:-99、21、261 和 1581。

以下是完整的 C 代码,使用双重循环来避免 math.h,并找出所有满足条件的 n:


#include <stdio.h>

int main()
{
    long int a, b, n;
    for (a = 1; a <= 50; a++) {
      for (b = a + 1; b <= a + 13; b++) {
            if (b * b - a * a == 168) {
                n = a * a - 100;
                printf("n = %ld, because %ld + 100 = %ld = %ld^2, and %ld + 268 = %ld = %ld^2\n", n, n, a*a, a, n, b*b, b);
            }
      }
    }
    return 0;
}


代码中,我们遍历 a 从 1 到 50,对于每个 a,遍历 b 从 a+1 到 a+13(因为 b-a 的最大可能值为 12)。如果 b^2 - a^2 = 168,则计算 n = a^2 - 100 并输出结果。

运行代码后,你会看到所有可能的 n 值及其验证。如果你有其他问题,请随时问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

gaming1990 发表于 2025-9-10 09:35:29

本帖最后由 gaming1990 于 2025-9-10 10:11 编辑

…… 100是完全平方数,168不是完全平方数

喝水卡牙 发表于 2025-9-11 21:44:52

{:5_109:}你前面发的代码,是直接在小甲鱼网站复制的,所以空白的地方有其他的东西。编译会报错。删掉空白,编译,是OK的,打印的结果也是OK的。#include <math.h>
#include <stdio.h>
void main()
{
      long int i,x,y;
      for (i=1;i<100000;i++)
                { x=sqrt(i+100);
                        y=sqrt(i+268);
                        if((x*x==i+100)&&(y*y==i+268))
                        printf("\n%ld\n",i);
                }
}

但求过程001 发表于 6 天前

喝水卡牙 发表于 2025-9-11 21:44
你前面发的代码,是直接在小甲鱼网站复制的,所以空白的地方有其他的东西。编译会报错。删掉空白 ...

这样也行??写源程序不是没这个规定吗。。。。

喝水卡牙 发表于 6 天前

我的意思是,你复制后,有很多其它看不见的东西,比如小甲鱼课后作业,你复制,会看见后面还有其它英文等。
页: [1]
查看完整版本: 求助~