C趣味程序(二)(02)電阻計算

字號:

1.2.2 電阻計算
     求如下圖所示電路中A,B間的等效電阻r
    算法分析如下:
     把整個電路分為4級,從左至右逐級遞推處理。
     首先注意把電路中的電阻數(shù)據(jù)按順序寫入數(shù)組,最右端電阻在前,以后每級橫向電阻在前,豎向電阻在后。第三級沒有橫向電阻,相應位置置數(shù)據(jù)0。最后,置兩個-1作為數(shù)據(jù)的終止標志。
     操作時r讀入最右端電阻。進入i循環(huán)(預置20級),讀入data[i],data[i+1]兩個電阻,data[i]與右邊等效電阻串聯(lián),然后與data[i+1]并聯(lián),根據(jù)電阻計算公式操作:
     r=r+data[i]; r=(r*data[i+1])/(r+data[i+1]);
     當讀入的data[i]為負時,即已計算完畢,退出循環(huán)等效電阻r
    程序代碼如下:
    #include
    void main()
    {
     int i;
     double r;
     double data[]={25,4,13,50,3,0,15,17,31,-1,-1};
     r=data[0];
     for(i=1;i<=20;i+=2)
     {
     if(data[i]<0)
     break;
     r=r+data[i];
     r=(r*data[i+1])/(r+data[i+1]);
     }
     printf("A,B間的等效電阻為:%.3f\n",(r*1000+0.5)/1000);
    }
    程序運行結果如下:
     A,B間的等效電阻為:11.932
    注意:本程序只適用于II形式的電路電阻計算。如果對應位置沒有電阻,必須相應補0。同時在程序中循環(huán)體內判斷data[i]<0 語句應安排在具體計算語句之前。否則將導致計算結果出錯。