#include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define NULL 0 #define MaxSize 30 typedef struct athletestruct /*運動員*/ { char name[20]; int score; /*分數*/ int range; /**/ int item; /*項目*/ }ATH; typedef struct schoolstruct /*學校*/ { int count; /*編號*/ int serial; /**/ int menscore; /*男選手分數*/ int womenscore; /*女選手分數*/ int totalscore; /*總分*/ ATH athlete[MaxSize]; /**/ struct schoolstruct *next; }SCH; int nsc,msp,wsp; int ntsp; int i,j; int overgame; int serial,range; int n; SCH *head,*pfirst,*psecond; int *phead=NULL,*pafirst=NULL,*pasecond=NULL; void create(); void input () { char answer; head = (SCH *)malloc(sizeof(SCH)); /**/ head->next = NULL; pfirst = head; answer = 'y'; while ( answer == 'y' ) { Is_Game_DoMain: printf("\nGET Top 5 when odd\nGET Top 3 when even"); printf("\n輸入運動項目序號 (x<=%d):",ntsp); scanf("%d",pafirst); overgame = *pafirst; if ( pafirst != phead ) { for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ ) { if ( overgame == *pasecond ) { printf("\n這個項目已經存在請選擇其他的數字\n"); goto Is_Game_DoMain; } } } pafirst = pafirst + 1; if ( overgame > ntsp ) { printf("\n項目不存在"); printf("\n請重新輸入"); goto Is_Game_DoMain; } switch ( overgame%2 ) { case 0: n = 3;break; case 1: n = 5;break; } for ( i = 1 ; i <= n ; i++ ) { Is_Serial_DoMain: printf("\n輸入序號 of the NO.%d (0<x<=%d): ",i,nsc); scanf("%d",&serial); if ( serial > nsc ) { printf("\n超過學校數目,請重新輸入"); goto Is_Serial_DoMain; } if ( head->next == NULL ) { create(); } psecond = head->next ; while ( psecond != NULL ) { if ( psecond->serial == serial ) { pfirst = psecond; pfirst->count = pfirst->count + 1; goto Store_Data; } else { psecond = psecond->next; } } create(); Store_Data: pfirst->athlete[pfirst->count].item = overgame; pfirst->athlete[pfirst->count].range = i; pfirst->serial = serial; printf("Input name:) : "); scanf("%s",pfirst->athlete[pfirst->count].name); } printf("\n繼續輸入運動項目(y&n)?"); answer = getchar(); printf("\n"); } } void calculate() /**/ { pfirst = head->next; while ( pfirst->next != NULL ) { for (i=1;i<=pfirst->count;i++) { if ( pfirst->athlete[i].item % 2 == 0 ) { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 5;break; case 2:pfirst->athlete[i].score = 3;break; case 3:pfirst->athlete[i].score = 2;break; } } else { switch (pfirst->athlete[i].range) { case 1:pfirst->athlete[i].score = 7;break; case 2:pfirst->athlete[i].score = 5;break; case 3:pfirst->athlete[i].score = 3;break; case 4:pfirst->athlete[i].score = 2;break; case 5:pfirst->athlete[i].score = 1;break; } } if ( pfirst->athlete[i].item <=msp ) { pfirst->menscore = pfirst->menscore + pfirst->athlete[i].score; } else { pfirst->womenscore = pfirst->womenscore + pfirst->athlete[i].score; } } pfirst->totalscore = pfirst->menscore + pfirst->womenscore; pfirst = pfirst->next; } } void output() { pfirst = head->next; psecond = head->next; while ( pfirst->next != NULL ) { // clrscr(); printf("\n第%d號學校的結果成績:",pfirst->serial); printf("\n\n項目的數目\t學校的名字\t分數"); for (i=1;i<=ntsp;i++) { for (j=1;j<=pfirst->count;j++) { if ( pfirst->athlete[j].item == i ) { printf("\n %d\t\t\t\t\t\t%s\n %d",i,pfirst->athlete[j].name,pfirst->athlete[j].score);break; } } } printf("\n\n\n\t\t\t\t\t\t按任意建 進入下一頁"); getchar(); pfirst = pfirst->next; } // clrscr(); printf("\n運動會結果:\n\n學校編號\t男運動員成績\t女運動員成績\t總分"); pfirst = head->next; while ( pfirst->next != NULL ) { printf("\n %d\t\t %d\t\t %d\t\t %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore); pfirst = pfirst->next; } printf("\n\n\n\t\t\t\t\t\t\t按任意建結束"); getchar(); } void create() { pfirst = (struct schoolstruct *)malloc(sizeof(struct schoolstruct)); pfirst->next = head->next ; head->next = pfirst ; pfirst->count = 1; pfirst->menscore = 0; pfirst->womenscore = 0; pfirst->totalscore = 0; } void Save() {FILE *fp; if((fp = fopen("school.dat","wb"))==NULL) {printf("can't open school.dat\n"); fclose(fp); return; } fwrite(pfirst,sizeof(SCH),10,fp); fclose(fp); printf("文件已經成功保存\n"); } void main() { system("cls"); printf("\n\t\t\t 運動會分數統計\n"); printf("輸入學校數目 (x>= 5):"); scanf("%d",&nsc); printf("輸入男選手的項目(x<=20):"); scanf("%d",&msp); printf("輸入女選手項目(<=20):"); scanf("%d",&wsp); ntsp = msp + wsp; phead = (int *)calloc(ntsp,sizeof(int)); pafirst = phead; pasecond = phead; input(); calculate(); output(); Save(); }
標簽: 源代碼
上傳時間: 2016-12-28
上傳用戶:150501
取各障礙物頂點連線的中點為路徑點,相互連接各路徑點,將機器人移動的起點和終點限制在各路徑點上,利用最短路徑算法來求網絡圖的最短路徑,找到從起點P1到終點Pn的最短路徑。上述算法使用了連接線中點的條件,因此不是整個規劃空間的最優路徑,然后利用遺傳算法對找到的最短路徑各個路徑點Pi (i=1,2,…n)調整,讓各路徑點在相應障礙物端點連線上滑動,利用Pi= Pi1+ti×(Pi2-Pi1)(ti∈[0,1] i=1,2,…n)即可確定相應的Pi,即為新的路徑點,連接此路徑點為最優路徑。
上傳時間: 2017-05-05
上傳用戶:tttt123
作者:Charles K Alexander ,Matthew N.O Sadiku 內容:電路基礎知識,電子工程師必學課程
標簽: 電路基礎
上傳時間: 2021-02-03
上傳用戶:
P P I I CK I I T T3 3 使用 說明--- - 連機 、 脫 機操作試用 MPLAB IDE 軟件一 、 P P I I C CK K I I T3 接 口說 明, , 硬 件 二 、 P P I I C CK K I I T3 連 接 電腦 MPL L AB I I DE 聯機三 、 聯機四 、聯機讀芯片程序五 、 脫機 燒寫 調試
上傳時間: 2022-03-24
上傳用戶:
實際可用的高精度adc采集遙控器搖桿,通過串口透傳無線數據,控制電機開關等設備,其中涉及到如何進行數字電路和模擬電路的隔離,提高stm32的adc采集精度,減少cpu本身的高速數字信號對模擬電路的影響,也對其他外圍電路做了相應防護,可作為大學生學習電路設計的參考,stm32f103c8t6單片機主頻72M,性能還可以,作為控制足夠,可惜低功耗不夠,所以作為電池供電,還需要替換為L0系列的單片機,也可以替換為更便宜的stm32f030cct6,兼容,可降低硬件成本,stm32f030cct6資源更豐富,但是因為是M0內核,會遇到非對齊訪問的硬件錯誤,編程時需要注意對齊訪問,否則該問題可秒殺大部分初學者,stm32f030cct6具有256KB的flash,可玩性更高,性價比非常不錯。本電路引出了高達12路的開關量采集,也可作為擴展IO進行擴展,實現更多有意思的想法,比如我接了OLED顯示屏,就可以顯示一些系統參數等。
上傳時間: 2022-04-20
上傳用戶:
這包 BSP 支持了NUC970 系列芯片. 新唐科技的 NUC970 系列芯片是以 ARM926EJS 為核心的系統級單芯片. 包含了 16kB I-Cache 以及 16kB D-Cache 以及MMU 記憶體管理模塊. 最高支援到 300MHz 的頻率, 並且提供了豐富的外設接口周邊. 有USB 快速Host/Device, SDHC, 支援TFT LCD介面, 網路接口 和I2S audio介面, 有11 組UART…等. 並可以由 NAND flash, SPI Flash 開機.
標簽: NUC970
上傳時間: 2022-06-23
上傳用戶:slq1234567890
隨著電力系統自動化水平的提高以及新的變電站通信標準IEC61850的正式頒布,研究新型數字保護裝置已經變的刻不容緩。本論文圍繞設計和研制一套能符合IEC61850標準下變電站應用的新型數字保護裝置這一課題,主要研究以太網通信在數字保護中應用的可行性并參與設計基于雙網冗余的高速以太網通信網絡的網絡化數字保護平臺,在基于網絡化數字保護平臺上移植嵌入式操作系統Vxworks,討論基于VxWorks的微機保護任務的劃分并詳細介紹了實現饋線保護的功能和試驗測試結果。 論文開始概述了目前國內外數字繼電保護產品技術的發展現狀并簡單分析了變電站自動化通信網絡和系統標準IEC61850,對未來保護裝置發展趨勢進行了展望,明確了微機繼電保護裝置網絡化、平臺化、標準化的發展方向。本課題組研制的網絡化數字保護裝置則充分的考慮了IEC61850標準分層的意義和未來變電站自動化系統發展的必然趨勢,其研究對變電站改造和建設符合lEC61850標準的變電站自動化系統有重要意義。 論文首先分析數字式繼電保護裝置硬件平臺的發展過程,介紹了基于以太網通信技術的通用網絡化數字保護硬件平臺設計構想,并說明了全網絡化數字保護平臺的優點。全網絡化數字保護平臺采用模件化設計,整個裝置具體功能模件包括交流變換模件、數據采集模件、數據計算和邏輯處理模件、開入開出模件、以太網Hub模件、電源模件以及人機接口模件。 其次,概述以太網通信技術的發展和技術特點,并分析以太網通信技術應用于變電站自動化系統的可行性。根據提高以太網通信實時性的研究現狀,介紹雙網冗余高速以太網通信方案的實現,特別詳細闡述了基于以太網控制芯片LAN91Clll的以太網通信接口的設計,給出LAN91C111的初始化、以太網通信發送模塊以及以太網通信中斷接受模塊的流程。 再次,分析了在繼電保護產品軟件系統中應用前后臺系統和嵌入式實時操作系統的區別,闡明在繼電保護硬件平臺上應用嵌入式實時操作系統VxWorks的優勢。并重點闡述在嵌入式處理器AT91RM9200上移植VxWorks實時操作系統的過程。 論文分析了數字繼電保護軟件任務劃分的基本原則,合理劃分數字保護的任務和任務優先級,并通過調試工具WindView驗證任務調度的正確性。詳細的介紹網絡化數字保護平臺上實現饋線保護的具體功能和保護邏輯,最后通過試驗測試,證明裝置各項性能優越。 最后,對本論文所開展的工作作了總結,并對進一步研究的方向進行了展望。
上傳時間: 2013-04-24
上傳用戶:jiiszha
利用LPC微控制器進行低成本的模/數轉換 AN10187 datasheet 要想利用數字計算機來處理連續變化的數據,就必須將模擬值轉換成數字量。模/數轉換器(ADC)根據不同的原理工作,其性能、效果和成本都會發生變化。某些微控制器具有能夠提供10位及更高分辨率的集成ADC,但所需的芯片面積和為了保證要求精度而進行的全面試驗增加了此類裝置的成本。
上傳時間: 2013-12-26
上傳用戶:清山綠水
一個S7-300的控制程序,使用了數字量及模似量,以及PROFIBUS現場總線等
上傳時間: 2013-12-20
上傳用戶:xiaoyunyun
本設計方案中,設計思路為圍繞著單片機和燃氣傳感器進行本次硬件系統的設計。其中使用單片機連接著各個設備。燃氣傳感器檢測空氣中被測氣體的濃度,通過A/D轉換器把轉換的數據傳輸到單片機中由單片機進行數據的分析處理,產生相應的報警電路運行。此次報警系統通過信號采集模數轉換模塊收集氣體濃度、然后通過A/D轉換器轉換成數字信號,之后由單片機控制模塊進行分析、在字符顯示模塊進行數據顯示、如果被測氣體超標激活聲光報警模塊進行報警和然后在進行安全保護模塊。Abstract........................................................21 緒論1.1 課題研究的目的以及研究意義.................................31.2 燃氣煙霧報警器的國內外現狀.................................31.3 燃氣報警器的發展趨勢.......................................41.4 本文主要研究內容...........................................42 總體方案設計2.1 系統總體方案設計...........................................6
上傳時間: 2022-01-28
上傳用戶:qingfengchizhu