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 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,