999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言在電氣計算中的應用

2020-07-04 11:38:16羅智敏
科學與財富 2020年15期
關鍵詞:高效

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

關鍵詞:電氣測量;電氣計算; C語言;文件編譯;全局變量;高效

一、 引言

本文著重闡述C語言程序編寫及C語言程序實驗所需的邏輯以及會面臨的問題。在C語言編程中使用最多得就是變量,變量分為全局變量和局部變量。如果一個程序中大量使用的全局變量會造成程序復雜化,調試也變得很麻煩。而如果把他們改在不同的程序,作為局部變量,會使代碼清晰,也可以更好地查找程序問題。這種多文件編譯法在復雜程序編程中已大量的使用,所以掌握C語言編程及實驗對以后的編復雜程序至關重要。其實只要掌握了編程思路,再找出易錯的地方,編程就顯得比較簡單。

二、問題提出

近年來,隨著計算機的不斷發展,電氣計算的方式也在不斷地變化,我們只需要測量少量電氣參數就能計算出其他電氣參數,為電氣測量的快捷、高效提供可能。

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

下面以一個電氣計算C程序編寫,來說明如何更好編寫一個電氣計算C程序。

1.程序目的

1. 高效實現多文件編譯。

2. 了解頭文件的作用。

2.程序內容

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

此電路為一個電阻分壓直流電路,但如果電源為交流電,電阻改為電感和電阻和電容組成的電路,那就是一個電網的簡化電路,就可以用來計算電網短路電流,所以此電路的通用性非常大,編寫的程序通用性也非常大。

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

3. 程序能判斷輸入值是否正確,不正確時能進行正確處理。輸入數據不正確

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

4. 輸出計算結果:每個電阻上的電壓和電流。

3.程序要求

1. 建立新項目,錄入源代碼,編輯,編譯,運行,調試直至得出正確運行結果。

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

不允許使用全局變量,而要采用函數參數傳遞,通過實參和形參的結合傳遞必要 的參數。

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

函數名 所屬源文件 功能

main main.c

程序入口,聲明所有程序中用到的變量、數組,并依次 調用其它 3 個子程序

input input.c

從鍵盤輸入電壓源電勢、電阻個數及每個電阻的阻值, 并通過函數參數返回 main 函數

calculate calculate.c

接收主函數給定的梯形電路的相關參數,計算每一個電 阻上的電流和電壓值并返回 main 函數

output output.c

接收主函數給定的相關參數,輸出每個電阻的阻值、電流和電壓

4.步驟

1. 進入編程環境,建立新項目。

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

3. 編譯和運行程序。

4. 如果編譯或運行有錯,修改錯誤或調試直至程序能給出正確的運行結果。

三、代碼的準備及過程

1.完成前的準備

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

2.main 函數代碼編寫

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

下面是參考代碼

#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.其他函數編寫

input函數,主要是輸入函數,以下是參考代碼

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

{

printf("請輸入電壓");

scanf_s("%f",e);

printf("請輸入電阻個數");

scanf_s("%d",n);

if (*n % 2 != 0)

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

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

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個電阻值錯誤", i);

}

}

calculate函數,主要是計算函數,如何計算在此不做說明,以下為參考代碼

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函數為輸出函數,以下為參考代碼

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中進行函數的聲明,并在main.c文件中用#include"def.h"把這些聲明添加進去,以下為參考代碼

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

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

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

四、可能出現的問題

1.函數調用時的實際參數與形參不對應,造成編譯通不過或得到的結果不對。如void calculate( float e,? int n, float r[], float v[], float i[]),但調用時卻成了calculate(e, n, r,i,v);造成得到的電壓v實際存儲電流i,電流i實際存儲為電壓v。

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

3.沒分清函數聲明與調用,如

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函數中應該調用函數,而這里卻成了聲明函數,聲明應該在main函數前,這樣就錯了。

4.如下

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

{

printf("請輸入電壓");

scanf_s("%f",&e);

printf("請輸入電阻個數");

scanf_s("%d",&n);

if (*n % 2 != 0)

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

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

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個電阻值錯誤", i);

}

}

這里scanf_s函數需要的是實參e和n的地址,input函數中形參e,n為指針,他們為實參e,n的地址,在scanf_s函數中直接用指針e,n,這樣就能直接給形參e,n賦值,如果再對形參e,n取地址,那么scanf_s函數將把輸入的值賦值給形參e,n,并沒有實現對實參e,n賦值。

四、運行結果

五、結束語

應用C語言編寫電氣計算程序,可以實現用C語言計算電氣參數,減少電氣參數的測量,簡化測量設備。并通過計算機實現電氣參數的存儲,轉換,傳輸等功能。為進一步實現計算機在電氣設備中的普及運用打下基礎,更為設備的電氣自動化、信息化等提供可能,同時又省去大量的測量儀表,為進一步提高電氣控制自動化提供可能。

參考文獻(References)

[1]《C語言程序設計》? 彭慧卿

[2]《C程序設計語言》? 布萊恩?克尼漢

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

作者簡介:

羅智敏,從事水電自動化學習.

猜你喜歡
高效
讓學習在復習課中真正發生
考試周刊(2016年86期)2016-11-11 08:07:20
如何實現小學語文課堂教學的“高效”
考試周刊(2016年85期)2016-11-11 00:58:49
淺談交互式電子白板在中學英語課堂的有效應用
南北橋(2016年10期)2016-11-10 16:35:15
計算機網絡技術對物流信息化的影響
對高校思政課教師暑期社會實踐的探索與思考
如何高效組織基層群眾文藝表演
如何實現小學語文課堂教學的高效化
為小語課堂“瘦身”,為學生語文素養增“肥”
農田水利工程高效節水灌溉發展思路初探
提高提問的有效性, 構筑高效的語文課堂
考試周刊(2016年77期)2016-10-09 10:47:06
主站蜘蛛池模板: 婷婷亚洲视频| yjizz国产在线视频网| 日本国产一区在线观看| 国产内射在线观看| 精品国产网站| a欧美在线| 亚洲天堂网2014| 久久国产免费观看| 国产91无码福利在线| 亚洲第一精品福利| 青青青国产精品国产精品美女| 波多野结衣在线se| 国产在线精品网址你懂的| 国产精品久久久久久影院| 欧美三級片黃色三級片黃色1| 国产69精品久久久久妇女| 91青青视频| 婷婷亚洲最大| 亚洲无码91视频| 性喷潮久久久久久久久| 最新精品国偷自产在线| 国产精品人成在线播放| 伊人大杳蕉中文无码| 午夜国产不卡在线观看视频| 久久九九热视频| 91在线视频福利| 国产精品香蕉在线| 亚洲欧美人成人让影院| 欧美激情福利| 亚洲欧美日本国产专区一区| 日本欧美成人免费| 99尹人香蕉国产免费天天拍| 亚洲中文字幕无码爆乳| 丰满人妻久久中文字幕| 国产乱子精品一区二区在线观看| 国产午夜无码片在线观看网站| 国产女人18水真多毛片18精品 | 日韩亚洲综合在线| 色综合热无码热国产| 色婷婷啪啪| 91综合色区亚洲熟妇p| 精品国产99久久| 岛国精品一区免费视频在线观看| 免费人成又黄又爽的视频网站| 性欧美在线| 99热这里只有免费国产精品| 小说区 亚洲 自拍 另类| 中文字幕日韩欧美| 久久久久久久久久国产精品| 91久久青青草原精品国产| 香蕉色综合| 亚洲人人视频| 欧美另类图片视频无弹跳第一页| 久久人搡人人玩人妻精品| 日韩精品无码不卡无码| 亚洲日本中文综合在线| 无码专区在线观看| 欧美劲爆第一页| 热九九精品| 国产黑丝视频在线观看| 三上悠亚在线精品二区| 亚洲不卡影院| 久久永久视频| 亚洲成aⅴ人片在线影院八| 91久久偷偷做嫩草影院精品| 亚洲精品老司机| 久久伊人久久亚洲综合| 欧美午夜一区| 久久青草免费91观看| 91青青视频| 日韩 欧美 小说 综合网 另类| 亚洲色图欧美| 欧洲成人在线观看| 色综合中文| 亚洲国产综合自在线另类| 最新无码专区超级碰碰碰| 日韩人妻无码制服丝袜视频| www.99精品视频在线播放| 69精品在线观看| 一区二区三区成人| 欧美综合在线观看| 中日无码在线观看|