❶ c語言編程 其功能是:求自然對數的底e近似值,要求其誤差小於0.00001,不能輸出
#include  <stdio.h>
void main( )
{int i;
 double t,e;
 i=0;
 t=1;
 e=1;
 while(t>0.00001)
 {i=i+1;
 t=t/i;
 e=e+t;}
 printf ("e=%.6lf",e);}
❷ C語言的浮點數計算精度的一個問題

#include <stdio.h>
#include <math.h>
int main()
{ float x=7.6,y;
y=x*x*x;//7.6的立方應該精確得到 438.976
printf("x=%g y=%g ",x,y);
if(fabs(y-438.976)<1e-3)//誤差小於0.001就認為是相等,若要更高精度,建議採用double
printf("YES ");//YES沒有輸出
else
printf("NO ");//輸出NO
return 0;
}
❸ c語言 絕對值問題
不是要求誤差不超過0.001嗎?那如果誤差大於0.001的話就繼續循環做下去啊,直到誤差小於0.001了停止啊。這在邏輯上才對啊,有什麼不妥嗎?
❹ 大一C語言問題(C語言程序設計 李鳳霞 第二版)
1. D,    位元組對齊 char 也是2
2. A     B的第三個參數錯;C常量不能做為左值;D不知道了
3. A
4. A
5. C
6. D
7. C
8. D
9. C
10.B
11.C
12.B  用追加方式不可讀。
13.B
❺ 用C語言輸入一元二次方程的系數a,b,c,採用二分法求方程的根 ,精確到小數點後2位(即誤差<=0。01)
以下是二分法求已知區間的根,自己將其修改一下,增加一個區間確定就可以了
#include <math.h>
#include <stdio.h>
double f(double a, double b, double c, double x) //  求函數值
{ return a * x * x + b * x + c; }
int main()
{
 double x, u, v, f1, f2, fm, a, b, c;
 printf("請輸入一元二次方程的系數:");
 scanf("%lf%lf%lf", &a, &b, &c);
 /* 這里可以增加是否合法二次方程的判斷*/
 printf("請輸入區間端點:");
 scanf("%lf%lf", &u, &v);
 f1 = f(a, b, c, u);
 f2 = f(a, b, c, v);
 if (f1 * f2 > 0)
 {
  printf("區間內無解!\n");
  return 1;
 }
 do
 {
  x = (u + v) / 2;
  fm = f(a, b, c, x);
  if (fm == 0)
   break;
  if (f1 * fm > 0.0) /* 同號時修改端點*/
  {
   u = x;
   f1 = f(a, b, c, u);
  }
  else
   v = x;
 } while (fabs(fm) >= 1e-2);/*這里還可以在條件中增加循環次數控制*/
 printf("根為:%8.3lf\n", x);
 return 0;
}
❻ C語言中小數的誤差怎麼解決
一般是:根據問題領域所容許的的精度,定義一個誤差上限(一個極小數)。然後在浮點計算時,計算結果與這個誤差上限作比較,而不是與0作比較。
例如,牛頓迭代法求值:
doublef(doublex);//f(x)
doublef1(doublex);//f(x)的導函數
#defineEPSILON0.001//誤差精度
doubleresolve(doublex){//x為初始近似解
while(1){
doubledelta=f(x)/f1(x);
//當迭代的變化量,小於誤差精度時,就認為找到解了
if(delta>-EPSILON&&delta<EPSILON){
break;
}
x-=delta;
}
returnx;
}
❼ c語言中浮點數的精度如何控制,使誤差在0.001內
用while,do...while,for循環都可以,如
do
{
    eps = ...   
}while(eps < 0.001)
