亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語(yǔ)言在電氣計(jì)算中的應(yīng)用

        2020-07-04 11:38:16羅智敏
        科學(xué)與財(cái)富 2020年15期
        關(guān)鍵詞:高效

        摘 要:C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。因此學(xué)好C語(yǔ)言就顯得特別重要,我根據(jù)自己學(xué)習(xí)實(shí)踐心得寫《C語(yǔ)言在電氣計(jì)算中的應(yīng)用》,告訴大家如何編好電氣計(jì)算C語(yǔ)言程序,為同學(xué)們學(xué)習(xí)C語(yǔ)言提供新方法。

        關(guān)鍵詞:電氣測(cè)量;電氣計(jì)算; C語(yǔ)言;文件編譯;全局變量;高效

        一、 引言

        本文著重闡述C語(yǔ)言程序編寫及C語(yǔ)言程序?qū)嶒?yàn)所需的邏輯以及會(huì)面臨的問(wèn)題。在C語(yǔ)言編程中使用最多得就是變量,變量分為全局變量和局部變量。如果一個(gè)程序中大量使用的全局變量會(huì)造成程序復(fù)雜化,調(diào)試也變得很麻煩。而如果把他們改在不同的程序,作為局部變量,會(huì)使代碼清晰,也可以更好地查找程序問(wèn)題。這種多文件編譯法在復(fù)雜程序編程中已大量的使用,所以掌握C語(yǔ)言編程及實(shí)驗(yàn)對(duì)以后的編復(fù)雜程序至關(guān)重要。其實(shí)只要掌握了編程思路,再找出易錯(cuò)的地方,編程就顯得比較簡(jiǎn)單。

        二、問(wèn)題提出

        近年來(lái),隨著計(jì)算機(jī)的不斷發(fā)展,電氣計(jì)算的方式也在不斷地變化,我們只需要測(cè)量少量電氣參數(shù)就能計(jì)算出其他電氣參數(shù),為電氣測(cè)量的快捷、高效提供可能。

        如何編寫一個(gè)快捷高效的電氣計(jì)算C程序呢?答案之一就是:程序中不要大量使用全局變量,而盡量使用的局部變量,就會(huì)避免造成程序復(fù)雜化,會(huì)使代碼清晰,也可以更好地查找程序問(wèn)題。

        下面以一個(gè)電氣計(jì)算C程序編寫,來(lái)說(shuō)明如何更好編寫一個(gè)電氣計(jì)算C程序。

        1.程序目的

        1. 高效實(shí)現(xiàn)多文件編譯。

        2. 了解頭文件的作用。

        2.程序內(nèi)容

        1. 編制程序計(jì)算階梯型電阻電路的電流值。電路示意圖如下:

        此電路為一個(gè)電阻分壓直流電路,但如果電源為交流電,電阻改為電感和電阻和電容組成的電路,那就是一個(gè)電網(wǎng)的簡(jiǎn)化電路,就可以用來(lái)計(jì)算電網(wǎng)短路電流,所以此電路的通用性非常大,編寫的程序通用性也非常大。

        2. 能接收用戶輸入的電壓源電勢(shì) E 和所有電阻的電阻值。

        3. 程序能判斷輸入值是否正確,不正確時(shí)能進(jìn)行正確處理。輸入數(shù)據(jù)不正確

        情況包括:電阻輸入 0 或負(fù)值,輸入電阻的數(shù)目為奇數(shù)。

        4. 輸出計(jì)算結(jié)果:每個(gè)電阻上的電壓和電流。

        3.程序要求

        1. 建立新項(xiàng)目,錄入源代碼,編輯,編譯,運(yùn)行,調(diào)試直至得出正確運(yùn)行結(jié)果。

        2. 將主函數(shù) main、輸入 input、計(jì)算 calculate、輸出 output 共 4 個(gè)函數(shù)分配到 4 個(gè)源文件中,常量及函數(shù)原型聲明放到頭文件 def.h 中,進(jìn)行編譯。

        不允許使用全局變量,而要采用函數(shù)參數(shù)傳遞,通過(guò)實(shí)參和形參的結(jié)合傳遞必要 的參數(shù)。

        單向傳遞可用值傳遞,雙向傳遞得用地址傳遞。

        函數(shù)名 所屬源文件 功能

        main main.c

        程序入口,聲明所有程序中用到的變量、數(shù)組,并依次 調(diào)用其它 3 個(gè)子程序

        input input.c

        從鍵盤輸入電壓源電勢(shì)、電阻個(gè)數(shù)及每個(gè)電阻的阻值, 并通過(guò)函數(shù)參數(shù)返回 main 函數(shù)

        calculate calculate.c

        接收主函數(shù)給定的梯形電路的相關(guān)參數(shù),計(jì)算每一個(gè)電 阻上的電流和電壓值并返回 main 函數(shù)

        output output.c

        接收主函數(shù)給定的相關(guān)參數(shù),輸出每個(gè)電阻的阻值、電流和電壓

        4.步驟

        1. 進(jìn)入編程環(huán)境,建立新項(xiàng)目。

        2. 在項(xiàng)目中依次添加 5 個(gè)源文件:main.c, input.c, calculate.c, output.c(右鍵點(diǎn)擊 源文件,新建,選擇 C++文件),def.h 添加于頭文件下(右鍵點(diǎn)擊頭文件,新建,選 擇.h 文件)。

        3. 編譯和運(yùn)行程序。

        4. 如果編譯或運(yùn)行有錯(cuò),修改錯(cuò)誤或調(diào)試直至程序能給出正確的運(yùn)行結(jié)果。

        三、代碼的準(zhǔn)備及過(guò)程

        1.完成前的準(zhǔn)備

        首先完成該實(shí)驗(yàn)需要四個(gè)源文件和一個(gè)頭文件,并且要求不允許使用全局變量。按照要求主函數(shù)應(yīng)調(diào)用其他源文件中的三個(gè)函數(shù),相當(dāng)于原來(lái)我們?cè)谥骱瘮?shù)中需要完成的輸入輸出和計(jì)算過(guò)程的代碼,把他們分別變成三個(gè)函數(shù)放到三個(gè)源文件中。既然主函數(shù)要調(diào)用其他三個(gè)函數(shù),那其他三個(gè)函數(shù)就必須要先聲明,然后在三個(gè)源文件中分別對(duì)這三個(gè)函數(shù)的代碼進(jìn)行編寫,最后在主函數(shù)中調(diào)用這三個(gè)函數(shù)。在主函數(shù)中要確定的變量有總電壓,電阻個(gè)數(shù)和每個(gè)電阻的大小以及每個(gè)電阻的電壓電流。我們應(yīng)該明確總電壓e ,電阻個(gè)數(shù)n和每個(gè)電阻的阻值r,這些變量要在input 函數(shù)中輸入進(jìn)來(lái),然后把這些變量傳遞到main 函數(shù)中。然后把這些變量輸入到calculate 函數(shù)中,同時(shí)calculate 函數(shù)計(jì)算出每一個(gè)電阻對(duì)應(yīng)的電壓v,電流i,把電壓v和電流i的值傳遞到主函數(shù)中。最后,把電壓v和電流i為傳遞到output 函數(shù)中, output 函數(shù)再把每一個(gè)電阻對(duì)應(yīng)的電壓和電流顯示出來(lái)。這是編寫代碼的基本思路。

        2.main 函數(shù)代碼編寫

        main函數(shù)中要定義電阻個(gè)數(shù)n總電壓e及每一個(gè)電阻的阻值r及它對(duì)應(yīng)的電壓v和電流i大小。r和v及i 應(yīng)定義為float型的數(shù)組,來(lái)存放每一個(gè)電阻的阻值,電壓和對(duì)應(yīng)的電流。n 應(yīng)定義為整形,e 應(yīng)定義為float型。現(xiàn)在我們需要從input 的函數(shù)中得到e,n, r 這三個(gè)變量的值。但如果用return,無(wú)法返回那么多變量的值,可以換一種思路。在這里我們采用指針,把e, n ,r的地址傳遞到input 函數(shù)中, input 函數(shù)中直接把e,n, r 的地址作為scanf 函數(shù)的參數(shù),從而把輸入的值賦值給e,n, r 這三個(gè)變量的地址對(duì)應(yīng)的變量(其實(shí)就是e,n, r 這三個(gè)變量)這樣就成功的把值賦值給了e,n, r 這三個(gè)變量,把函數(shù)定義為void,沒(méi)有返回值,達(dá)到同樣效果。r 是一個(gè)數(shù)組,其本身就代表著第0個(gè)元素的地址,所以input 函數(shù)只用把e, n 的地址和r作為函數(shù)的實(shí)參 。calculate函數(shù)應(yīng)輸入總電壓e,電阻個(gè)數(shù)n, 電阻阻值r,返回每一個(gè)電阻對(duì)應(yīng)的電壓v和電流i。v 和i 也是數(shù)組,可以像input 函數(shù)一樣把v, i 當(dāng)做函數(shù)的實(shí)參,這樣他們的地址就可以輸入函數(shù)中,經(jīng)過(guò)calculate 函數(shù)的計(jì)算,計(jì)算出每個(gè)電阻對(duì)應(yīng)的電壓和電流,直接把這些值存儲(chǔ)在v, i 這兩個(gè)數(shù)組中,從而其實(shí)就得到了v, i 的值。output 函數(shù)就只需要把v, i 作為實(shí)參傳遞進(jìn)去,然后用printf 函數(shù)顯示出來(lái)。

        下面是參考代碼

        #include"def.h"

        #include

        #include

        int main()

        {

        float e, r[1000], v[1000], i[1000];

        int n;

        input(&e,&n,r);

        calculate(e, n, r, v, i);

        output(i,v,n);

        system("pause");

        return 0;

        }

        3.其他函數(shù)編寫

        input函數(shù),主要是輸入函數(shù),以下是參考代碼

        void input(float *e, int *n, float r[])

        {

        printf("請(qǐng)輸入電壓");

        scanf_s("%f",e);

        printf("請(qǐng)輸入電阻個(gè)數(shù)");

        scanf_s("%d",n);

        if (*n % 2 != 0)

        printf("電阻值必須為偶數(shù)");

        printf("請(qǐng)輸入各電阻值");

        for (int i = 0; i < *n; i++)

        scanf_s("%f",&r[i]);

        for (int i = 0; i < *n; i++)

        {

        if (r[i] <= 0)

        printf("第%d個(gè)電阻值錯(cuò)誤", i);

        }

        }

        calculate函數(shù),主要是計(jì)算函數(shù),如何計(jì)算在此不做說(shuō)明,以下為參考代碼

        void calculate( float e,? int n, float r[], float v[], float i[])

        {

        float ratio;

        int k = n-1;

        v[k] = 1.0;

        i[k] = v[k]/r[k];

        k--;

        i[k] = i[k+1];

        v[k] = r[k] * i[k];

        k--;

        while(k > 0)

        {

        v[k] = v[k+1] + v[k+2];

        i[k] = v[k]/r[k];

        k--;

        i[k] = i[k+1] + i[k+2];

        v[k] = r[k] * i[k];

        k--;

        }

        ratio = e / (v[0] + v[1]);

        for(k=0; k

        {

        i[k] *= ratio;

        v[k] *= ratio;

        }

        }

        output函數(shù)為輸出函數(shù),以下為參考代碼

        void output(float i[], float v[], int n)

        {

        int a;

        for (a = 0; a < n; a++)

        {

        printf("第%d的電阻電流為%f", a + 1, i[a]);

        printf("第%d的電阻電壓為%f\n", a + 1, v[a]);

        }

        }

        此外,還需要在def.h中進(jìn)行函數(shù)的聲明,并在main.c文件中用#include"def.h"把這些聲明添加進(jìn)去,以下為參考代碼

        void input(float *,int *,float []);

        void calculate( float,? int ,? float [], float [], float []);

        void output(float[], float [], int );

        四、可能出現(xiàn)的問(wèn)題

        1.函數(shù)調(diào)用時(shí)的實(shí)際參數(shù)與形參不對(duì)應(yīng),造成編譯通不過(guò)或得到的結(jié)果不對(duì)。如void calculate( float e,? int n, float r[], float v[], float i[]),但調(diào)用時(shí)卻成了calculate(e, n, r,i,v);造成得到的電壓v實(shí)際存儲(chǔ)電流i,電流i實(shí)際存儲(chǔ)為電壓v。

        2.聲明時(shí)函數(shù)的變量與編寫時(shí)類型不符合?;蛉缏暶骱瘮?shù)時(shí)為void calculate( float,? int ,? float [], float [], float []);但編寫時(shí)卻成了void calculate( float e,? float n, float r[], float v[], float i[])聲明時(shí)第二個(gè)參數(shù)n為int型,但編寫時(shí)把它當(dāng)作float型,造成編譯錯(cuò)誤。

        3.沒(méi)分清函數(shù)聲明與調(diào)用,如

        int main()

        {

        float e, r[1000], v[1000], i[1000];

        int n;

        void input(float *e, int *n, float r[]);

        void calculate( float e,? int n,? float r[], float v[], float i[]);

        void output(float a[], float b[], int n);

        system("pause");

        return 0;

        }

        main函數(shù)中應(yīng)該調(diào)用函數(shù),而這里卻成了聲明函數(shù),聲明應(yīng)該在main函數(shù)前,這樣就錯(cuò)了。

        4.如下

        void input(float *e, int *n, float r[])

        {

        printf("請(qǐng)輸入電壓");

        scanf_s("%f",&e);

        printf("請(qǐng)輸入電阻個(gè)數(shù)");

        scanf_s("%d",&n);

        if (*n % 2 != 0)

        printf("電阻值必須為偶數(shù)");

        printf("請(qǐng)輸入各電阻值");

        for (int i = 0; i < *n; i++)

        scanf_s("%f",&r[i]);

        for (int i = 0; i < *n; i++)

        {

        if (r[i] <= 0)

        printf("第%d個(gè)電阻值錯(cuò)誤", i);

        }

        }

        這里scanf_s函數(shù)需要的是實(shí)參e和n的地址,input函數(shù)中形參e,n為指針,他們?yōu)閷?shí)參e,n的地址,在scanf_s函數(shù)中直接用指針e,n,這樣就能直接給形參e,n賦值,如果再對(duì)形參e,n取地址,那么scanf_s函數(shù)將把輸入的值賦值給形參e,n,并沒(méi)有實(shí)現(xiàn)對(duì)實(shí)參e,n賦值。

        四、運(yùn)行結(jié)果

        五、結(jié)束語(yǔ)

        應(yīng)用C語(yǔ)言編寫電氣計(jì)算程序,可以實(shí)現(xiàn)用C語(yǔ)言計(jì)算電氣參數(shù),減少電氣參數(shù)的測(cè)量,簡(jiǎn)化測(cè)量設(shè)備。并通過(guò)計(jì)算機(jī)實(shí)現(xiàn)電氣參數(shù)的存儲(chǔ),轉(zhuǎn)換,傳輸?shù)裙δ?。為進(jìn)一步實(shí)現(xiàn)計(jì)算機(jī)在電氣設(shè)備中的普及運(yùn)用打下基礎(chǔ),更為設(shè)備的電氣自動(dòng)化、信息化等提供可能,同時(shí)又省去大量的測(cè)量?jī)x表,為進(jìn)一步提高電氣控制自動(dòng)化提供可能。

        參考文獻(xiàn)(References)

        [1]《C語(yǔ)言程序設(shè)計(jì)》? 彭慧卿

        [2]《C程序設(shè)計(jì)語(yǔ)言》? 布萊恩?克尼漢

        [3]電路基礎(chǔ) [美] 查爾斯K.亞歷山大

        作者簡(jiǎn)介:

        羅智敏,從事水電自動(dòng)化學(xué)習(xí).

        猜你喜歡
        高效
        讓學(xué)習(xí)在復(fù)習(xí)課中真正發(fā)生
        考試周刊(2016年86期)2016-11-11 08:07:20
        如何實(shí)現(xiàn)小學(xué)語(yǔ)文課堂教學(xué)的“高效”
        考試周刊(2016年85期)2016-11-11 00:58:49
        淺談交互式電子白板在中學(xué)英語(yǔ)課堂的有效應(yīng)用
        南北橋(2016年10期)2016-11-10 16:35:15
        計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)對(duì)物流信息化的影響
        對(duì)高校思政課教師暑期社會(huì)實(shí)踐的探索與思考
        如何高效組織基層群眾文藝表演
        如何實(shí)現(xiàn)小學(xué)語(yǔ)文課堂教學(xué)的高效化
        為小語(yǔ)課堂“瘦身”,為學(xué)生語(yǔ)文素養(yǎng)增“肥”
        農(nóng)田水利工程高效節(jié)水灌溉發(fā)展思路初探
        提高提問(wèn)的有效性, 構(gòu)筑高效的語(yǔ)文課堂
        考試周刊(2016年77期)2016-10-09 10:47:06
        和少妇人妻邻居做爰完整版| 内射无码专区久久亚洲| 亚洲在AV极品无码天堂手机版| 国产高清一级毛片在线看| 我的美艳丝袜美腿情缘| 免费观看全黄做爰大片| 亚洲 精品 综合 精品 自拍| 中字无码av电影在线观看网站| 女同性恋一区二区三区四区| 日本不卡在线视频二区三区| 久久久精品国产sm调教网站| 96免费精品视频在线观看| 久久精品av一区二区免费| 变态另类手机版av天堂看网| 欧美放荡的少妇| 色综合另类小说图片区| 美女人妻中文字幕av| 国产精品无码制服丝袜| 国产成人久久精品激情| 久久国产欧美日韩高清专区| 国产影片免费一级内射| 欧洲熟妇色xxxx欧美老妇软件| 亚洲成a人片在线观看无码| 国产精品乱子伦一区二区三区| 蜜桃精品视频一二三区| 亚洲乱码一区av春药高潮| 伊人久久成人成综合网222| 抖射在线免费观看视频网站| 亚洲高清国产一区二区| 人人爽久久涩噜噜噜av| 中文字幕一区二区三区在线不卡| 国产一区二区三区成人av| 国产欧美成人一区二区a片| 日本黄页网站免费大全| 按摩师玩弄少妇到高潮hd| 国产亚洲自拍日本亚洲| 欧美大屁股xxxxhd黑色| 久久亚洲午夜牛牛影视| 国产一区二区免费在线视频| 久久青青草原亚洲av无码麻豆| 国产免费专区|