首页 > 解决方案 > 以未定义方式表现的双重数据类型

问题描述

尽管我知道 turbo c 现在已经完全过时了,但我的导师已经设置了一个条件来编码。我遇到一个问题,当我尝试将双精度值传递给函数时,它的行为不正确。我有几次波动的输出,有时甚至很奇怪。让我们先看看我的代码:

#include<stdio.h>
#include<conio.h>

double func(double input) {
    return input * input;
}

double simpson1By3(double initial, double final, double parts) {
    double sum = 0;
    double h = (final - initial) / parts;
    double oddSum = 0, evenSum = 0;
    int i;
    printf("%f %f %f\n", initial, final, parts);
    printf("%f\n", h);
    printf("%f %f\n", evenSum, oddSum);
    sum += func(initial) + func(final);
    printf("%f %f\n", evenSum, oddSum);
    for (i = 1; i < parts; i = i + 2) {
        oddSum += func(initial + (i * h));
    }
    for (i = 2; i < parts; i = i + 2) {
        evenSum += func(initial + (i * h));
    }
    oddSum *= 4;
    evenSum *= 2;
    printf("%f %f\n", evenSum, oddSum);
    sum += evenSum + oddSum;
    sum *= h / 3;
    return sum;
}

int main() {
    clrscr();
    printf ("%f", simpson1By3(0, 6, 6));
    getch();
    return 0;
}

样本输出: 在此处输入图像描述

我在那里做错了什么?为什么传递的参数与其他变量一起被错误地打印在那里,为什么 -0 打印?请帮忙。我曾尝试在论坛中找到类似的东西,但完全失败了。请帮忙。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: turbo-c

解决方案


推荐阅读