void DFS(MGraph G, int i) { int j; visited[i] = TRUE; printf("%c ", G.vexs[i]); for (j=0; j<G.numVertexes; ++j) { if (G.arc[i][j]!=INFINITY && !visited[j]) DFS(G, j); } }
上傳時間: 2016-12-28
上傳用戶:chenyameng
#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
1.Describe a Θ(n lg n)-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x. (Implement exercise 2.3-7.) #include<stdio.h> #include<stdlib.h> void merge(int arr[],int low,int mid,int high){ int i,k; int *tmp=(int*)malloc((high-low+1)*sizeof(int)); int left_low=low; int left_high=mid; int right_low=mid+1; int right_high=high; for(k=0;left_low<=left_high&&right_low<=right_high;k++) { if(arr[left_low]<=arr[right_low]){ tmp[k]=arr[left_low++]; } else{ tmp[k]=arr[right_low++]; } } if(left_low<=left_high){ for(i=left_low;i<=left_high;i++){ tmp[k++]=arr[i]; } } if(right_low<=right_high){ for(i=right_low;i<=right_high;i++) tmp[k++]=arr[i]; } for(i=0;i<high-low+1;i++) arr[low+i]=tmp[i]; } void merge_sort(int a[],int p,int r){ int q; if(p<r){ q=(p+r)/2; merge_sort(a,p,q); merge_sort(a,q+1,r); merge(a,p,q,r); } } int main(){ int a[8]={3,5,8,6,4,1,1}; int i,j; int x=10; merge_sort(a,0,6); printf("after Merging-Sort:\n"); for(i=0;i<7;i++){ printf("%d",a[i]); } printf("\n"); i=0;j=6; do{ if(a[i]+a[j]==x){ printf("exist"); break; } if(a[i]+a[j]>x) j--; if(a[i]+a[j]<x) i++; }while(i<=j); if(i>j) printf("not exist"); system("pause"); return 0; }
上傳時間: 2017-04-01
上傳用戶:糖兒水嘻嘻
function [alpha,N,U]=youxianchafen2(r1,r2,up,under,num,deta) %[alpha,N,U]=youxianchafen2(a,r1,r2,up,under,num,deta) %該函數用有限差分法求解有兩種介質的正方形區域的二維拉普拉斯方程的數值解 %函數返回迭代因子、迭代次數以及迭代完成后所求區域內網格節點處的值 %a為正方形求解區域的邊長 %r1,r2分別表示兩種介質的電導率 %up,under分別為上下邊界值 %num表示將區域每邊的網格剖分個數 %deta為迭代過程中所允許的相對誤差限 n=num+1; %每邊節點數 U(n,n)=0; %節點處數值矩陣 N=0; %迭代次數初值 alpha=2/(1+sin(pi/num));%超松弛迭代因子 k=r1/r2; %兩介質電導率之比 U(1,1:n)=up; %求解區域上邊界第一類邊界條件 U(n,1:n)=under; %求解區域下邊界第一類邊界條件 U(2:num,1)=0;U(2:num,n)=0; for i=2:num U(i,2:num)=up-(up-under)/num*(i-1);%采用線性賦值對上下邊界之間的節點賦迭代初值 end G=1; while G>0 %迭代條件:不滿足相對誤差限要求的節點數目G不為零 Un=U; %完成第n次迭代后所有節點處的值 G=0; %每完成一次迭代將不滿足相對誤差限要求的節點數目歸零 for j=1:n for i=2:num U1=U(i,j); %第n次迭代時網格節點處的值 if j==1 %第n+1次迭代左邊界第二類邊界條件 U(i,j)=1/4*(2*U(i,j+1)+U(i-1,j)+U(i+1,j)); end if (j>1)&&(j U2=1/4*(U(i,j+1)+ U(i-1,j)+ U(i,j-1)+ U(i+1,j)); U(i,j)=U1+alpha*(U2-U1); %引入超松弛迭代因子后的網格節點處的值 end if i==n+1-j %第n+1次迭代兩介質分界面(與網格對角線重合)第二類邊界條件 U(i,j)=1/4*(2/(1+k)*(U(i,j+1)+U(i+1,j))+2*k/(1+k)*(U(i-1,j)+U(i,j-1))); end if j==n %第n+1次迭代右邊界第二類邊界條件 U(i,n)=1/4*(2*U(i,j-1)+U(i-1,j)+U(i+1,j)); end end end N=N+1 %顯示迭代次數 Un1=U; %完成第n+1次迭代后所有節點處的值 err=abs((Un1-Un)./Un1);%第n+1次迭代與第n次迭代所有節點值的相對誤差 err(1,1:n)=0; %上邊界節點相對誤差置零 err(n,1:n)=0; %下邊界節點相對誤差置零 G=sum(sum(err>deta))%顯示每次迭代后不滿足相對誤差限要求的節點數目G end
標簽: 有限差分
上傳時間: 2018-07-13
上傳用戶:Kemin
lcd12864液晶驅動程序,并口驅動程序。帶字庫
上傳時間: 2019-01-31
上傳用戶:dahaidekuaile
用于開發單片機的!!!超級單片機開發工具!!! 單片機開發過程中用到的多功能工具,包括熱敏電阻RT值--HEX數據轉換;3種LED編碼;色環電阻計算器;HEX/BIN 文件互相轉換;eeprom數據到C/ASM源碼轉換;CRC校驗生成;串口調試,帶簡單而實用的數據分析功能;串口/并口通訊監視等功能. 用C++ Builder開發,無須安裝,直接運行,不對注冊表進行操作。純綠色軟件。 詳細說明: 1、RT轉換:支持兩種電路,8/10位轉換精度,生成C/ASM源代碼格式的數據,可手工輸入數據或從文件中讀取,輸入的數據可以保存到文件中。文件格式為逗號分隔符: 溫度,阻值 2、LED編碼信息:可以支持 7段/14段/16段 LED,支持 C/ASM 語法,可生成 4/8 位編碼,4位編碼主要用于某些 LCD 驅動芯片。其中 7 段碼包括:0 -- F (Hex) 14 段碼包括:A -- Z, 0 -- F 16 段碼包括:A -- Z, 0 -- F 編碼方案可以保存供將來使用。 使用方法請點幫助。 3、色環電阻計算器功能。 4、HEX/BIN 文件相互轉換; HEX/BIN 轉換成 C/ASM 源代碼格式,適用于eeprom數據等處理。 加入CRC校驗碼生成功能。其中生成BIN文件時自動生成校驗碼,Get CRC 可生成任意文件的CRC碼。 另外還有相關知識、資料等。 5、串口調試具有 a. 基本通訊功能; b. 數據分析功能,可自定義通訊數據中的變量,包括變量名、變量類型(長度),顯示方式等; 內存映射功能中自定義變量的起始地址即內存起始地址,可自定義; 由map文件自動讀取內存變量(因條件所限,目前只支持由 ImageCraft C(ICC) 編譯器產生的map文件,歡迎提供其他編譯器的map文件樣本); 可自定義內存塊的起始/結束標志; 歷史數據保存功能; c. 交互式通訊, 主發時可自定義多命令自動循環發送; 從發時可定義接收到相應命令后的應答數據并自動應答; 6、串口監視功能 目前具有本功能的多為共享軟件,本軟件中沒有任何限制。 實時監視串口操作而不占用串口資源,可保存歷史數據,2k下測試通過,98下使用捕捉時可能會有點問題,沒有進行調試。 并口監視應該可以使用,沒有調試。 各種工具
標簽: 單片機
上傳時間: 2019-05-27
上傳用戶:小愛心早餐
常用接插件USB座 SD卡 TF卡 RJ45 AD集成庫ALITUM庫49個合集(原理圖庫+PCB封裝庫),集成封裝庫型號列表:Library Component Count : 49Name Description----------------------------------------------------------------------------------------------------3F07 立體聲耳機插座6.3mm插簧 6.3mm插簧Battery 備份電池CON 2X16 DIN41612 DIN 41612CON 2X32 DIN41612 DIN 41612CON50A D Connector 15 VGAD Connector 9 串口DB25 并口DG141 DIMM-100 接插件EMIF 接插件FIN 散熱片FPC-30P FPC排線連接器FPC-40P FPC排線連接器HR5803 以太網接口HR911103A 網絡接口HR911105A 以太網接口Header 10 接插件Header 10X2 接插件Header 14X2A 接插件Header 15X2 接插件Header 16 接插件Header 16X2 接插件Header 17X2 接插件Header 2 接插件Header 2X2 接插件Header 3 接插件Header 30 接插件Header 32X2 接插件Header 4 接插件Header 40 接插件Header 5X2 接插件Header 6 接插件Header 7X2 接插件Header 8 接插件Header 8X2 接插件Header_AMP50 控制器接插件LCD_CON37 LCD接口Light_Pipe 燈柱PJ-306 立體聲耳機插座PWRCON 直流電源端子RCA RCA Phono JackSDCARD SD卡自彈SDCARD-M TF卡槽SU-25-3 接線叉USB USB接口USB_M Micro/Mini USBZIF20 接插件
上傳時間: 2021-11-21
上傳用戶:slq1234567890
反激式開關電源變壓器設計的詳細步驟85W反激變壓器設計的詳細步驟 1. 確定電源規格. 1).輸入電壓范圍Vin=90—265Vac; 2).輸出電壓/負載電流:Vout1=42V/2A, Pout=84W 3).轉換的效率=0.80 Pin=84/0.8=105W 2. 工作頻率,匝比, 最低輸入電壓和最大占空比確定. Vmos*0.8>Vinmax+n(Vo+Vf)600*0.8>373+n(42+1)得n<2.5Vd*0.8>Vinmax/n+Vo400*0.8>373/n+42得n>1.34 所以n取1.6最低輸入電壓Vinmin=√[(Vacmin√2)* (Vacmin√2)-2Pin(T/2-tc)/Cin=(90√2*90√2-2*105*(20/2-3)/0.00015=80V取:工作頻率fosc=60KHz, 最大占空比Dmax=n(Vo+Vf)/[n(Vo+Vf)+Vinmin]= 1.6(42+1)/[1.6(42+1)+80]=0.45 Ton(max)=1/f*Dmax=0.45/60000=7.5us 3. 變壓器初級峰值電流的計算. Iin-avg=1/3Pin/Vinmin=1/3*105/80=0.4AΔIp1=2Iin-avg/D=2*0.4/0.45=1.78AIpk1=Pout/?/Vinmin*D+ΔIp1=84/0.8/80/0.45=2.79A 4. 變壓器初級電感量的計算. 由式子Vdc=Lp*dip/dt,得: Lp= Vinmin*Ton(max)/ΔIp1 =80*0.0000075/1.78 =337uH 取Lp=337 uH 5.變壓器鐵芯的選擇. 根據式子Aw*Ae=Pt*1000000/[2*ko*kc*fosc*Bm*j*?],其中: Pt(標稱輸出功率)= Pout=84W Ko(窗口的銅填充系數)=0.4 Kc(磁芯填充系數)=1(對于鐵氧體), 變壓器磁通密度Bm=1500Gs j(電流密度): j=4A/mm2;Aw*Ae=84*1000000/[2*0.4*1*60*103*1500Gs*4*0.80]=0.7cm4 考慮到繞線空間,選擇窗口面積大的磁芯,查表: ER40/45鐵氧體磁芯的有效截面積Ae=1.51cm2 ER40/45的功率容量乘積為 Ap = 3.7cm4 >0.7cm4 故選擇ER40/45鐵氧體磁芯. 6.變壓器初級匝數 1).由Np=Vinmin*Ton/[Ae*Bm],得: Np=80*7.5*10n-6/[1.52*10n-4*0.15] =26.31 取 Np =27T 7. 變壓器次級匝數的計算. Ns1(42v)=Np/n=27/1.6=16.875 取Ns1 = 17T Ns2(15v)=(15+1)* Ns1/(42+1)=6.3T 取Ns2 = 7T
上傳時間: 2022-04-15
上傳用戶:
親測可用,歡迎下載。。。。。驗證環境8051單片機,12M晶振。無法調試使用請確認頻率規格和硬件接線。
上傳時間: 2022-05-25
上傳用戶:
摘要:隨著客戶要求手機攝像頭像素越來越高,同時要求高的傳輸速度,傳統的并口傳輸越來越受到挑戰。提高并口傳輸的輸出時鐘是一個辦法,但會導致系統的EMC設計變得越來困難;增加傳輸線手機攝像頭MIPI技術介紹隨著客戶要求手機攝像頭像素越來越高,同時要求高的傳輸速度,傳統的并口傳輸越來越受到挑戰。提高并口傳輸的輸出時鐘是一個辦法,但會導致系統的EMC設計變得越來困難;增加傳輸線的位數是,但是這又不符合小型化的趨勢。采用MIPI接口的模組,相較于并口具有速度快,傳輸數據量大,功耗低,抗干擾好的優點,越來越受到客戶的青睞,并在迅速增長。例如一款同時具備MIPI和并口傳輸的8M的模組,8位并口傳輸時,需要至少11根的傳輸線,高達96M的輸出時鐘,才能達到12FPS的全像素輸出;而采用MIPI接口僅需要2個通道6根傳輸線就可以達到在全像素下12FPS的幀率,且消耗電流會比并口傳輸低大概20MA。由于MIPI是采用差分信號傳輸的,所以在設計上需要按照差分設計的一般規則進行嚴格的設計,關鍵是需要實現差分阻抗的匹配,MIPI協議規定傳輸線差分阻抗值為80-125歐姆。上圖是個典型的理想差分設計狀態,為了保證差分阻抗,線寬和線距應該根據軟件仿真進行仔細選擇;為了發揮差分線的優勢,差分線對內部應該緊密耦合,走線的形狀需要對稱,甚至過孔的位置都需要對稱擺放;差分線需要等長,以免傳輸延遲造成誤碼:另外需要注意一點,為了實現緊密的耦合,差分對中間不要走地線,PIN的定義上也最好避免把接地焊盤放置在差分對之間(指的是物理上2個相鄰的差分線)。
上傳時間: 2022-06-02
上傳用戶: