Turnin11111 2021-08-11 21:08 采纳率: 85.7%
浏览 14
已结题

请问这段程序如何解决数据溢出的问题?是用__int64的方法吗?

但我这里用的是double啊。不知道怎么改了

#include <stdio.h>
#include <time.h>
#include <math.h>
clock_t start, stop;/*clock_t是clock()函数返回的变量类型*/
double duration;
#define MAXN 1e7
double f1(int n,double a[],double x)
{
    double p = a[0];//a[0]都已经算出来了,循环从1开始
    for (int i = 0; i <= n ; i++)
        p +=( a[i] * pow(x, i));
    return p;
}
double f2(int n, double a[], double x) {
    int i;
    double p = a[n];
    for (i = n; i > 0; i--) {
        p = a[i - 1] + x * p;
    }
    return p;
}
double ceshijian()
{
    stop = clock();/*停止计时*/
    duration = ((double)(stop - start)) / CLK_TCK / MAXN;/*计算单次运行时间*/
    printf("ticks=%f\n", (double)(stop - start));
    printf("duration=%6.2e\n\n", duration);
    return 0;
}
int main()
{
    int i;
    double a[MAXN];
    for (i = 0; i < MAXN; i++) {
        a[i] = (double)i;
    }
    /*不在测试范围内的准备工作写在clock()调用之前*/
    start = clock();/*开始计时*/
    for(int i=0;i<MAXN;i++)//重复调用
        f1(MAXN - 1, a, 1.1);/*被测函数,这里如果写数组的话就越界了,而且要调用某个值是不确定的,只能写a,因为要定义的就是a值*/
    ceshijian();

    start = clock();/*开始计时*/
    for (i = 0; i < MAXN; i++)
        f2(MAXN - 1, a, 1.1);/*被测函数,这里如果写数组的话就越界了,而且要调用某个值是不确定的*/
    ceshijian();
    return 0;
}


img

  • 写回答

1条回答 默认 最新

  • Turnin11111 2021-08-11 21:26
    关注

    我知道怎么改了,大家不用回答了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 电脑出问题了,说是usbmom注册表没
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?
  • ¥15 vs2022无法联网