Cloudnexx 2022-01-25 03:33 采纳率: 100%
浏览 51
已采纳

vscode报错信息含义及主函数如何定义

网上看到一个问题:已知a,b均为正整数,满足a<b,a2+b2=289,求a,b。

我想用C解决这个问题,并把289改为任意一个从键盘输入的正整数,思路如下:

假设给定的数为a,现将a对半分再开方得到k,那么[1,k]就是较小数(假设为b)的值域。用for循环一个个带入较小数,根据等式求出较大数,若较大数是整数(即取整后大小不变)则输出结果,代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,c;
    int i,k;
    scanf("%d",&a);
    k=sqrt(a/2);
    for(i==1;i<=k;i++)
    {
        b=i;
        c=sqrt(a-b*b);
        if(c==int(c))printf("%d,%d",b,c);
    }
    getchar() ;
    getchar() ;
}

在vscode中运行报错如下:

[Running] cd "e:\学习\编程\C\" && gcc Untitled-1.c -o Untitled-1 && "e:\学习\编程\C\"Untitled-1

Untitled-1.c:3:1: warning: return type defaults to 'int' [-Wimplicit-int]

 main()

 ^~~~

是不是主函数main()的声明语句有问题?应该怎么改以及判断整数是否可以用程序中的if(c==int(c))这个写法?(虽然c定义为int ,但编译器似乎将sqrt的返回结果认定为float,且确实会存储小数点后的信息)

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-25 05:27
    关注

    帮你修改好了

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        int a, b, c;
        int i, k;
        scanf("%d", &a);
        k = (int)sqrt(a / 2);
        for (i = 1; i <= k; i++)
        {
            b = i;
            c = (int)sqrt(a - b * b);
            if (c * c + b * b == a)
                printf("%d,%d", b, c);
        }
        getchar();
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 1月25日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题