登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 841|回复: 0

[C,C++教程] 【c语言】密立根油滴实验数据处理程序

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-6-30 22:58:41 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. #include <stdio.h>
    ' A  f% e3 \7 x! ?( O! b
  2. #include <math.h>' U. c0 s7 p2 ?1 }( q, L
  3. #define e0 1.6e-195 r2 _5 Z. c' K2 B$ p) O+ |- h
  4. int main()
    2 S" V3 z5 K4 K/ w- u& |0 C
  5. {
    3 L# g) c' Y3 I7 U, O1 L7 p2 n  H% p
  6.     int h,i,j,b,c,d=0,m=0,k=0;$ _  N) k( j; f+ O5 u; K1 d( r
  7.     float q[100][100],u[100][100],t[100][100],a[100],n[100],E,x=0,y=0;, F4 r4 i) r- L9 Y% S: k
  8.     double e;
    2 M! n, q# m0 s) k
  9.     printf("请输入测量的油滴个数\n");4 F- c, O6 M0 D- C
  10.     scanf("%d",&b);
    ; W" N2 z3 G- N: i! W$ _3 }
  11.     printf("请输入每个油滴测了几次\n");7 _% P: e3 ?6 c
  12.     scanf("%d",&c);: v( K5 d8 y; G: D/ f6 A1 F" i2 }
  13.     printf("请从第一滴油滴开始,按照\n电压 对应时间 电压 对应时间,填写数据。\n");
    8 t+ a  D7 I% X7 _3 B: o
  14.     for(i=0;i<b;++i)
    8 [8 e7 n% z  l, W0 L# D
  15.     {
    3 \! h% i* b/ }  D) k6 j6 N; h- |
  16.         for(j=0;j<c;++j)1 V7 \' K5 h/ F4 D
  17.         {
    + M! l8 P) c, }
  18.             scanf("%f",&u[i][j]);2 U0 t6 C% y. W
  19.             scanf("%f",&t[i][j]);
    " }0 d1 u, |4 q9 o
  20.         }' G) d; T7 z" ^( |9 A  t$ N& r8 H; W8 O
  21.     }/ ?, I, r! M, `3 @4 G
  22.     //至此赋值完成。开始计算q[i][j]并判断。
    # v/ {  u# {0 T- ^! t4 Q: ^7 b: w
  23.     for(i=0;i<b;++i)+ T) I& n, T, a; _
  24.     {
    . t( P8 ?" w% M( ^: x
  25.         for(j=0;j<c;++j); W' D/ c' }; n4 \3 _* p
  26.         {
    6 B/ m% R. ]" ?6 _
  27.             q[i][j]=1.43/pow(10,14)/pow((t[i][j]*(1+0.02*pow(t[i][j],0.5))),1.5)/u[i][j];
    2 b' D0 }& [# }5 |
  28.             if(q[i][j]<10*e0&&q[i][j]>=e0) d=d+1;$ f1 ?$ h/ G6 x* `9 ?
  29.             else: Z( [) o8 b: \2 d3 t
  30.             {
    3 `% X! x, M/ \# q5 I5 ]
  31.                 printf("q[%d][%d]是无效数据\n",i,j);
    ! E9 b! |+ ]" Q+ S. J0 s( L
  32.                 q[i][j]=0;% ]" [, Y! ~. }" @% y
  33.             }$ A% ~4 C# G1 c6 F! `
  34.             printf("q[%d][%d]=%.3g  C\n",i,j,q[i][j]);
    9 q3 ~" |/ i3 \. t+ P5 g
  35.         }
    ( A% J  b; l9 d' X4 a
  36.     }( b) r3 ~: Y0 c& O/ Q# _0 r( t
  37.     //q[i][j]计算完成。开始计算q[i]。
    # p0 j5 X5 ~, L3 |9 Y/ R
  38.     printf("请在纸上记录所有q[i][j],并按顺序重新输入。\n");% X2 d0 E/ i* U& m% n3 h* a% Y
  39.     for(i=0;i<b;++i)
    5 e! e2 Z, j" _
  40.     {$ t) z1 U0 x+ K2 i2 P5 g6 ?' ~
  41.         for(j=0;j<c;++j)% \' u& m9 A0 p" C) j/ ~: O
  42.         {+ E2 `5 ]  ^: j3 Q
  43.             scanf("%f",&q[i][j]);
    & m6 F1 \4 H/ P8 G
  44.         }, Y0 d. w; W$ W( F+ {( V4 J8 \
  45.     }
    4 n- r  U- z8 @% V. p% z5 M
  46.     for(i=0;i<b;++i)4 d' R7 o" a: U
  47.     {
    + |. P! x% S: t* J
  48.         for(j=0;j<c;++j)
    . g3 k  l+ @/ f/ l
  49.         {' S' D, V/ A1 S6 o  n. |
  50.             if(q[i][j]==0) m=m+1;
    1 I* x+ B! ?9 u. {
  51.             a[i]=a[i]+q[i][j];  J/ d0 |0 C% Z6 Q3 _& U
  52.         }
    / F3 u8 ]/ C: c
  53.     }
    . c' Y, V6 c, `: F
  54.     for(i=0;i<b;++i)
    ; [$ m. O; B5 G+ X! w
  55.     {
    + s9 t& N7 N+ t# H
  56.         a[i]=a[i]/(c-m);. m( X- d1 s7 j2 }; S
  57.         printf("q[%d]=%.3g  C\n",i,a[i]);
    1 @+ E' c+ w) m" S
  58.     }; x7 ]  ^- _: q; Z$ W
  59.     if(c-m<3)
    ' x+ H2 ~/ l3 ?) {
  60.     {
    7 Y" ^: E' B+ a% ~5 _
  61.         a[i]=0;) ?) p. a- \- W0 U+ h8 {9 b* ]
  62.         k=k+1;
    3 r+ K9 c+ r% M
  63.     }
    , E# Y4 a- u/ t( |" k
  64.     if((b-k)<4)//判断有效油滴数(有效油滴电荷个数)
    $ U+ G- L- z$ s' b- J) G6 z$ ~5 S
  65.     {. i: G! \% r# Q
  66.         printf("因有效油滴数据数量不足4,无法得出准确结果。\n");0 g8 s+ ]/ S! r; _* N
  67.     }  x4 b0 J9 S; d0 |. a7 U
  68.     else# B. w4 I* S" ~
  69.     {
    + d" E6 }! n* t1 X
  70.         //q[i]计算完成,开始计算n[i]。! Y( u7 @3 X3 p& B: ^4 U4 G
  71.         printf("请在纸上记录所有q[i],并按顺序重新输入。\n");
    ( z  q; U9 V- n) u1 O# e  ]
  72.         for(i=0;i<b;++i)& I) ]8 }- a) C- t6 @2 P
  73.         {1 e& q* Z2 G  Q4 i& I
  74.             scanf("%f",&a[i]);
    * m! b' ?5 `! F: d3 ?1 s; E
  75.         }$ U) B) k! C6 `8 A
  76.         for(i=0;i<b;++i)8 E! B$ [- c$ H; A. |8 \% y+ o9 M
  77.         {4 n5 d6 Z3 M1 _! M  N" o
  78.             n[i]=(a[i]/e0);+ {4 C" H* E& _8 M; Z
  79.             printf("n[%d]=%.1g  (无单位)\n",i,n[i]);: y; j: {% p* y' t
  80.         }
    + j! x& s5 r' j: Y+ N
  81.         //n[i]计算完成,开始计算e和E。/ D2 R: q1 _; K6 g& f
  82.         printf("请在纸上记录所有n[i],并按顺序重新输入。\n");
    6 `8 B$ ?% P% Q( c- x
  83.         for(i=0;i<b;++i)- r2 z3 i5 R6 q" B5 }
  84.         {
    + U1 w+ v, K9 }9 t( p& {+ n* F
  85.             scanf("%f",&n[i]);
    ) f1 t6 n% o2 n- g1 |
  86.         }
    % Q7 @$ Z, O3 o
  87.         for(i=0;i<b;++i)
    * {) G" C$ y' c/ c. R( R
  88.         {! j  e/ j/ V! ]' q- D) X
  89.             x=x+n[i]*a[i];0 h& A- }9 V' X* C! r
  90.             y=y+n[i]*n[i];% m: m0 _! _) p
  91.         }
    0 l5 T5 r+ P2 W& q6 h' m4 S
  92.         e=x/y;, x' b6 V$ y* ~' v- m1 t! {. N
  93.         printf("e=%.3g  C\n请在纸上记录e,并重新输入。",e);
    ( f4 P: `8 Z2 v1 h' C0 p7 S
  94.         scanf("%f",&e);
    2 x+ n; {8 v4 I
  95.         if(e>=e0) E=(e-e0)/e0;
    ; @" q, C& {9 \% x- t
  96.         else E=(e0-e)/e0;
    7 [+ ?. \% @5 m
  97.         printf("E=%.2g  (无单位)\n",E);
    " ^1 U5 W5 l4 x, R; }2 r4 e
  98.     }
    " L: B+ Q. C+ K) A6 B9 g
  99.     return 0;
    5 M4 A0 V6 N$ E" H+ H8 U, a
  100. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|星空社区 |网站地图

GMT+8, 2024-4-28 22:18 , Processed in 0.049787 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表