鱼C论坛

 找回密码
 立即注册
查看: 177|回复: 5

求助~

[复制链接]
发表于 2025-9-9 23:43:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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又是一个完全平方数,请问该数是多少?)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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


  1. #include <stdio.h>

  2. int main()
  3. {
  4.     long int i, x, y; // x和y未使用,可能需要根据你的意图修改
  5.     for (i = 1; i <= 10; i++) {
  6.         printf("%ld\n", i);
  7.     }
  8.     return 0;
  9. }
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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);
             }
}
我编译有一个错误,不知道错哪里了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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:


  1. #include <stdio.h>

  2. int main()
  3. {
  4.     long int a, b, n;
  5.     for (a = 1; a <= 50; a++) {
  6.         for (b = a + 1; b <= a + 13; b++) {
  7.             if (b * b - a * a == 168) {
  8.                 n = a * a - 100;
  9.                 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);
  10.             }
  11.         }
  12.     }
  13.     return 0;
  14. }
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-9-10 09:35:29 | 显示全部楼层
本帖最后由 gaming1990 于 2025-9-10 10:11 编辑

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

可能是看不见的空白符?

可能是看不见的空白符?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-9-11 21:44:52 | 显示全部楼层
你前面发的代码,是直接在小甲鱼网站复制的,所以空白的地方有其他的东西。编译会报错。删掉空白,编译,是OK的,打印的结果也是OK的。
  1. #include <math.h>
  2. #include <stdio.h>
  3. void main()
  4. {
  5.         long int i,x,y;
  6.         for (i=1;i<100000;i++)
  7.                 { x=sqrt(i+100);
  8.                         y=sqrt(i+268);
  9.                         if((x*x==i+100)&&(y*y==i+268))
  10.                         printf("\n%ld\n",i);
  11.                 }
  12. }
复制代码
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-28 12:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表