同一台计算机,同一个程序,同样的输入数据,为什么输出的结果不一样?

时间:2021-05-14 07:54:16
/* algo1-1.c 计算1-1/x+1/x*x… */

 #include<stdio.h>
 #include<sys/timeb.h>

 void main()
 {
   struct timeb t1, t2;
   long t;
   double x, sum = 1, sum1;
   int i, j, n;

   printf("请输入x n:");
   scanf("%lf%d", &x, &n);

   ftime(&t1); /* 求得当前时间 */
   for(i=1; i<=n; i++)
   {
     sum1 = 1;
     for(j=1; j<=i; j++)
{
       sum1 = -sum1/x;
}
     sum += sum1;
   }

   ftime(&t2); /* 求得当前时间 */
   t = (t2.time - t1.time) * 1000 + (t2.millitm - t1.millitm); /* 计算时间差 */
   printf("sum=%lf 用时%ld毫秒\n", sum, t);
 }

/*

在VC2010里的输出结果:
————————————————————————
请输入x n:123 10000
sum=0.991935 用时392毫秒
请按任意键继续. . .

请输入x n:123 10000
sum=0.991935 用时480毫秒
请按任意键继续. . .

请输入x n:123 10000
sum=0.991935 用时463毫秒
请按任意键继续. . .

请输入x n:123 10000
sum=0.991935 用时464毫秒
请按任意键继续. . .

请输入x n:123 10000
sum=0.991935 用时470毫秒
请按任意键继续. . .

————————————————————————

3 个解决方案

#1


时间差这种东西不要较真。跟你的OS当时状态有关

#2


计算机每个时刻CPU负载是不同的

#3


同意楼上的观点, 每时每刻CPU的负载都是不同的。
  你可以尝试下,同一个程序每一次运行的结果应该也不一样。

#1


时间差这种东西不要较真。跟你的OS当时状态有关

#2


计算机每个时刻CPU负载是不同的

#3


同意楼上的观点, 每时每刻CPU的负载都是不同的。
  你可以尝试下,同一个程序每一次运行的结果应该也不一样。