silver-crow 发表于 2022-1-26 21:05:54

求助

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

int main()
{
    int num, num3, fig, last;
    int *pnum, *pnum3, *pfig, *plast;
    //num表示用户输入的数字,num3表示num的三次方,fig表示求和式子的第一个数,last表示求和式子的最后一个数

    pnum = &num;
    pfig = &fig;
    plast = &last;
    pnum3 = &num3;

    printf("请用户输入一个数用来验证尼科彻斯定理:");
    scanf("%d", pnum);

    fig = num * num - num + 1;
    last = num *num + num - 1;
    num3 = pow(num, 3);

    printf("(%d的三次方)%d = %d + %d + ... + %d\n", *pnum, *pnum3, *pfig, (*pfig + 2), *plast);
    return 0;
}

为什么输入5的时候计算5的3次方得出来的值为124,但是其他数字算三次方的时候都是正确的

YSW9527 发表于 2022-1-26 22:09:36

本帖最后由 YSW9527 于 2022-1-26 22:16 编辑

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

int main()
{
    int num, num3, fig, last;
    int* pnum, * pnum3, * pfig, * plast;
    //num表示用户输入的数字,num3表示num的三次方,fig表示求和式子的第一个数,last表示求和式子的最后一个数

    pnum = &num;
    pfig = &fig;
    plast = &last;
    pnum3 = &num3;

    printf("请用户输入一个数用来验证尼科彻斯定理:");
    scanf_s("%d", pnum);//vs2019里加个

    fig = num * num - num + 1;
    last = num * num + num - 1;
    num3 = pow(num, 3);

    printf("(%d的三次方)%d = %d + %d + ... + %d\n", *pnum, *pnum3, *pfig, (*pfig + 2), *plast);
    return 0;
}
//在VS019里面是对的,你用什么编译器

傻眼貓咪 发表于 2022-1-26 23:12:11

DEV C++ gcc 9.2 验证没有问题啊,为什么会出现 124?

翼是孤独 发表于 2022-1-27 11:48:50

pow这个函数计算过程是double型,返回值也是double型,转为int 会丢失精度
别的编译器没有问题可能是,编译器自带优化了

silver-crow 发表于 2022-1-28 20:31:36

翼是孤独 发表于 2022-1-27 11:48
pow这个函数计算过程是double型,返回值也是double型,转为int 会丢失精度
别的编译器没有问题可能是,编 ...

谢谢

silver-crow 发表于 2022-1-28 20:32:49

YSW9527 发表于 2022-1-26 22:09
#include
#include
#include >


code blocks
页: [1]
查看完整版本: 求助