版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機操作系統(tǒng)課程設計指導書河海大學2014年10月計算機操作系統(tǒng)課程設計說明計算機操作系統(tǒng)是計算機科學與技術專業(yè)的主要專業(yè)基礎課程,其實踐性、應用性很強。實踐教學環(huán)節(jié)是必不可少的一個重要環(huán)節(jié)。計算機操作系統(tǒng)課程設計目的是加深對理論教學內容的理解和掌握,使學生較系統(tǒng)地掌握操作系統(tǒng)的基本原理,加深對操作系統(tǒng)基本方法的理解,加深對課堂知識的理解,為學生綜合運用所學知識,在Linux環(huán)境下編寫功能較簡單的程序來實現(xiàn)操作系統(tǒng)的基本方法、并在實踐應用方面打下一定基礎。要求學生在指導教師的幫助下自行完成各個操作環(huán)節(jié),并能實現(xiàn)且達到舉一反三的目的,完成一個實驗解決一類問題。要求學生能夠全面、深入理解和熟練掌
2、握所學內容,并能夠用其分析、設計和解答類似問題;對此能夠較好地理解和掌握,并且能夠進行簡單分析和判斷;能夠熟練使用Linux用戶界面;掌握操作系統(tǒng)中進程管理概念和控制方法;了解進程的并發(fā),進程之間的通信方式,了解虛擬存儲管理的基本思想,了解設備管理的功能,了解文件系統(tǒng)的功能。同時培養(yǎng)學生進行分析問題、解決問題的能力;培養(yǎng)學生完成實驗分析、實驗方法、實驗操作與測試、實驗過程的觀察、理解和歸納能力。為了收到良好的實驗效果,編寫了這本課程設計指導書。在指導書中,每一個課程設計任務按照該課程設計大綱的要求編寫,力求緊扣理論知識點、突出設計方法、明確設計思路,通過多種形式引導學生有目的、有方向地完成課程
3、設計任務,得出實驗結果。任課教師在課程設計前對課程設計的任務進行一定的分析和講解,要求學生按照課程設計任務的具體要求提前做準備工作,如:查找資料等,做到有準備地上機。進行課程設計時,指導教師應檢查學生的預習情況,并對設計過程給予積極指導。課程設計完畢后,學生應根據(jù)課程設計情況,實驗數(shù)據(jù)及結果,完成課程設計報告,由班長統(tǒng)一收齊后交指導教師審閱評定。任務1 進程管理系統(tǒng)一、課程設計目的加深對進程概念及進程管理各部分內容的理解;熟悉進程管理中主要數(shù)據(jù)結構的設計及進程調度算法、進程控制機構、同步機構及通訊機構的實施。二、課程設計內容設計一個允許n個進程并發(fā)運行的進程管理模擬系統(tǒng)。該系統(tǒng)包括有簡單的進程
4、控制、同步與通訊機構,其進程調度算法可任意選擇(優(yōu)先級調度,時間片輪轉,短進程優(yōu)先中的一種)。每個進程用一個PCB表示,其內容根據(jù)具體情況設置。各進程之間有一定的同步關系(可選)。系統(tǒng)在運行過程中應能顯示或打印各進程的狀態(tài)及有關參數(shù)的變化情況,以便觀察諸進程的運行過程及系統(tǒng)的管理過程。任務5文件系統(tǒng)演示一、課程設計目的使學生熟悉文件管理系統(tǒng)的設計方法;加深對所學各種文件操作的了解及其操作方法的特點。二、課程設計內容設計一個簡單的多用戶文件系統(tǒng)。即在系統(tǒng)中用一個文件來模擬一個磁盤;此系統(tǒng)至少有:Create、delete、open、close、read、write等和部分文件屬性的功能。實現(xiàn)這個
5、文件系統(tǒng)。 能實際演示這個文件系統(tǒng)?;旧鲜沁M入一個界面(此界面就是該文件系統(tǒng)的界面)后,可以實現(xiàn)設計的操作要求。1進程管理模擬系統(tǒng)。(1)問題描述本系統(tǒng)的同步機構采用的信號量上的P、V操作的機制;控制機構包括阻塞和喚醒操作;時間片中斷處理程序處理模擬的時間片中斷;進程調度程序負責為各進程分配處理機。系統(tǒng)中設計了3個并發(fā)進程它們之間有如下同步關系:3個進程需要互斥使用臨界資源s2,進程1和進程2又需互斥使用臨界資源s1。本系統(tǒng)在運行過程中隨機打印出各進程的狀態(tài)變換過程,系統(tǒng)的調度過程及公共交量的變化情況。(2)算法系統(tǒng)為進程設置了5種運行狀態(tài):e執(zhí)行態(tài);r高就緒態(tài);t低就緒態(tài)(執(zhí)行進程因時間片
6、到限而轉入):w等待態(tài);c完成態(tài)。各進程的初始狀態(tài)均設置為r。系統(tǒng)分時執(zhí)行各進程。通過產生隨機數(shù)x來模擬時間片(每一個時間片并不相同)。當進程processl訪問隨機數(shù)x時,若x033;當進程proccss2訪問x時,若x<0.33或x0.66;當進程process3訪問x時,若x<0.66,則分別認為各進程的執(zhí)行時間片到限,產生“時間片中斷”面轉入低就緒態(tài)t。進程調度算法采用剝奪式最高優(yōu)先數(shù)法。各進程的優(yōu)先數(shù)通過鍵盤輸入予以靜態(tài)設置。調度程序每次總是選擇優(yōu)先數(shù)最小(優(yōu)先權最高)的就緒進程投入執(zhí)行。先從r狀態(tài)進程中選擇,再從t狀態(tài)進程中選擇。當現(xiàn)行進程喚醒某個等待進程,且被喚醒進程
7、的比先數(shù)小于現(xiàn)行進程時,則剝奪現(xiàn)行進程的執(zhí)行權。各進程在使用臨界資源s1和s2時,通過調用信號量sem1和sem2上的P、V操作來實現(xiàn)同步。阻塞和喚醒操作負責完成從進程的執(zhí)行態(tài)到等待態(tài)以及從就緒態(tài)的轉變。系統(tǒng)啟動后,在完成必要的系統(tǒng)初始化后便執(zhí)行進程調度程序。當執(zhí)行因“時間片中斷”,或者被排斥使用臨界資源,或喚醒某個等待進程時,立即進行進程調度。當3個進程都處于完成狀態(tài)后,系統(tǒng)退出運行。(3)數(shù)據(jù)結構每個進程一個PCB,內容:id進程標識status 進程狀態(tài)priority進程優(yōu)先數(shù)nextwr等待隊鏈指針,指示在同一信號量上等待的下一個進程的標識。信號量。對應于臨界資源s1和s2分別有se
8、m1和sem2,均為互斥號量,內容包括:value信號量值,初值為1firstwr等待鏈指針,指示在該信號量上第一個等待進程的標識數(shù)。保留區(qū)。用數(shù)組saveaera34表示。即每個進程都有一個大小為4個單元的保留區(qū),用來保存被“中斷”時的現(xiàn)場信息,如通用寄存器的內容和斷點地址等。全程變量。exe執(zhí)行進程指針,其值為進程標識數(shù)i用來模擬一個通用寄存器。(4)用TurboC編寫的程序代碼:#include <stdlib.h>#include <time.h>#include <stdio.h>#define TRUE 1#define FALSE 0#defi
9、ne MAXPRI 100#define NIL -1struct int id; char status; int nextwr; /*等待鏈指針,指示在同一信號量上等待的下一個進行進程的標識符* int priority; pcb3;struct int value; int firstwr; /*等待鏈首指針,指示該信號量上第一個等待進程的標識數(shù)*/ sem2;char savearea34,addr;int i,s1=0,s2=0,seed,exe=NIL;init( ) int j; for(j=0;j<3;j+) pcbj.id=j; pcbj.status='r
10、39; pcbj.nextwr=NIL; printf("nprocess%dpriority?",j+1); scanf("%d",&i); pcbj.priority=i; sem0.value=1; sem0.firstwr=NIL; sem1.value=1; sem1.firstwr=NIL; for(i=0;i<3;i+) for(j=0;j<4;j+) saveareaij='0'float random()float m;srand(time(0);m=(1+rand()%3)%3-0.1; print
11、f("random m=%fn",m); getchar();return(m);timeint(ad) /*time slice interupt*/char ad; float x; x=random(); if(x<0.33)&&(exe=0)return(FALSE); if(x<0.66)&&(exe=1)return(FALSE); if(x<1.0)&&(exe=2)return(FALSE);saveareaexe0=i;saveareaexe1=ad;pcbexe.status='t
12、'printf("This times slice interrupt process%d enter into readyn",exe+1);exe=NIL;return(TRUE);scheduler( ) int pd; if(pd=find()=NIL&&exe=NIL) return(NIL); /*quit system*/ if(pd!=NIL) if(exe=NIL) pcbpd.status='e' exe=pd; printf("proccess%d is executingn",exe+1);
13、 else if(pcbpd.priority<pcbexe.priority) pcbexe.status='r' printf("process%d enter into readyn",exe+1); pcbpd.status='e' exe=pd; printf("process%d is executingn", exe+1); i=saveareaexe0; addr=saveareaexe1; return(exe); find( ) int j,pd=NIL,w=MAXPRI; for(j=0;j&l
14、t;3;j+) if(pcbj.status='r') if(pcbj.priority<w) w=pcbj.priority; pd=j; if (pd=NIL) for(j=0;j<3;j+) if(pcbj.status='t') if(pcbj.priority<w) w=pcbj.priority; pd=j; return(pd); p(se,ad)int se;char ad; if(-semse.value>=0) return(FALSE); block(se); saveareaexe0=i; saveareaexe1
15、=ad; exe=NIL; return(TRUE); block(se)int se; int w; printf("process%d is blockedn",exe+1); pcbexe.status='w' pcbexe.nextwr=NIL; if(w=semse.firstwr)=NIL) semse.firstwr=exe; else while(pcbw.nextwr!=NIL) w=pcbw.nextwr; pcbw.nextwr=exe; v(se,ad)int se;char ad;if(+semse.value>0) retu
16、rn(FALSE); wakeup(se); saveareaexe1=ad; saveareaexe0=i; return(TRUE); wakeup(se)int se; int w; w=semse.firstwr; if(w!=NIL) semse.firstwr=pcbw.nextwr; pcbw.status='r' printf("process%d is waken upn",w+1); process1() if(addr='a') goto a1; if(addr='b') goto b1; if(addr
17、='c') goto c1; if(addr='d') goto d1; if(addr='e') goto e1; if(addr='f') goto f1; for(i=0; i<3;i+)/*如果程序執(zhí)行超過次,則*/ printf("process1 calls P on the semaphore 1n"); if(p(0,'a') break; /*process 1 is blocked*/a1: printf("process1 is executing in t
18、he cretical section 1n"); if(timeint('b') break; /*time silce interrupt*/b1: printf("s1=%dn",+s1); printf("process1 calls V on semaphorel and quit cretical section 1.n"); if(v(0,'c') break; /*wake up a blocked process*/c1: printf("process1 calls P on sem
19、aphorel 2.n"); if(p(1,'d') break;d1: printf("process1 is execting cretical section 2.n"); if(timeint('e') break;e1: printf("s2=%dn",+s2); printf("process1 calls V on semaphore2 and quit cretical section2.n"); if(v(1,'f') break; /*wake up a b
20、lock process*/f1: printf("process1 cycle count=%dn",i); if(i<3) return; eexit(0); process2() if(addr='a') goto a2; if(addr='b') goto b2; if(addr='c') goto c2; if(addr='d') goto d2; if(addr='e') goto e2; if(addr='f') goto f2; for(i=1;i<6
21、;+i) printf("process2 call P on semaphore2n"); if(p(1,'a') break; /*process2 is blocked*/a2: printf("process2 is executing on the cretical setion2n"); if(timeint('b') break;b2: printf("s2=%dn",+s2); printf("process2 is calls V on semaphore2 and quit
22、 cretical section2.n"); if(v(1,'c') break; /*wake up a blocked process*/c2: printf("process2 call P on semphore 1.n"); if(p(0,'d') break; /*process2 is blocked*/d2: printf("process2 is executing cretical setion1n"); if(timeint('e') break;e2: printf(&q
23、uot;s1=%dn",+s1); printf("process2 call V on semaphorel and quit cretical setion2n"); if(v(0,'f') break; /*wkup up a block process*/f2: printf("process2 cycle count=%dn",i); if(i<6) return; eexit(1); process3()if(addr='a') goto a3;if(addr='b') goto
24、 b3;if(addr='c') goto c3;for(i=1;i<6;+i) printf("process3 call P on semaphore2n"); if(p(1,'a') break; /*process3 is blocked*/a3: printf("process3 is executing on its cretical section.n"); if(timeint('b') break;b3: printf("s2=%dn",+s2); printf(
25、"process3 calls V on semaphore and quit cretical section.n"); if(v(1,'c') break; /*wake up a blocked process */c3: printf("process3 cyclen count=%dn",i); if(i<6) return; eexit(2);eexit(n)int n; pcbn.status='c' printf("process%d is completed!n",n+1); e
26、xe=NIL;main() int j=0; int k; char m; printf("* * * * process management * * * *nn"); init(); printf("s1=%d, s2=%dn",s1,s2); printf("process1,process2,process3 are all in ready!n"); for(;) j=j+1; printf("n%dth Scheduler Press ENTER to continuen",j); /scanf(&qu
27、ot;%s",&m); getchar(); if(k=scheduler()!=NIL) switch(k) case 0: process1(); break; case 1: process2(); break; case 2: process3(); break; default: printf("process identifer errorn"); break; else break; printf("s1=%d, s2=%dn",s1,s2); printf("n* * * * END * * * *n"
28、;); 2文件系統(tǒng)參考程序見下(本程序需要在c:下建一個名為osfile的目錄及一個名為file的子目錄):#include "stdio.h"#include "string.h"#include "conio.h"#include "stdlib.h"#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/#define MAXCHILD 50 /*the largest child*/#define MAX (MAXCHILD*
29、MAXCHILD) /*the size of fpaddrno*/typedef struct /*the structure of OSFILE*/ int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write(default);*/ char fnameMAXNAME; /*file name*/ OSFILE;typedef struct /*the structure of OSUFD
30、*/ char ufdnameMAXNAME; /*ufd name*/ OSFILE ufdfileMAXCHILD; /*ufd own file*/ OSUFD;typedef struct /*the structure of OSUFD'LOGIN*/ char ufdnameMAXNAME; /*ufd name*/ char ufdpword8; /*ufd password*/ OSUFD_LOGIN;typedef struct /*file open mode*/ int ifopen; /*ifopen:0-close,1-open*/ int openmode;
31、 /*0-read only,1-write only,2-read and write,3-initial*/ OSUFD_OPENMODE;OSUFD *ufdMAXCHILD; /*ufd and ufd own files*/OSUFD_LOGIN ufd_lp;int ucount=0; /*the count of mfd's ufds*/int fcountMAXCHILD; /*the count of ufd's files*/int loginsuc=0; /*whether login successfully*/char usernameMAXNAME;
32、 /*record login user's name22*/char dirnameMAXNAME;/*record current directory*/int fpaddrnoMAX; /*record file physical address num*/OSUFD_OPENMODE ifopenMAXCHILDMAXCHILD; /*record file open/close*/int wgetchar; /*whether getchar()*/FILE *fp_mfd,*fp_ufd,*fp_file_p,*fp_file;void main()int i,j,choi
33、ce1; char choice50; /*choice operation:dir,create,delete,open,delete,modify,read,write*/ int choiceend=1; /*whether choice end*/ char *rtrim(char *str); /*remove the trailing blanks.*/ char *ltrim(char *str); /*remove the heading blanks.*/ void LoginF(); /*LOGIN FileSystem*/ void DirF(); /*Dir FileS
34、ystem*/ void CdF(); /*Change Dir*/ void CreateF(); /*Create File*/ void DeleteF(); /*Delete File*/ void ModifyFM(); /*Modify FileMode*/ void OpenF(); /*Open File*/ void CloseF(); /*Close File*/ void ReadF(); /*Read File*/ void WriteF(); /*Write File*/ void QuitF(); /*Quit FileSystem*/ void help(); i
35、f(fp_mfd=fopen("c:osfilemfd","rb")=NULL) fp_mfd=fopen("c:osfilemfd","wb");fclose(fp_mfd); for(i=0;i<MAX;i+) fpaddrnoi=0; textattr(BLACK*16|WHITE); clrscr(); /*clear screen*/ LoginF(); /*user login*/ clrscr(); if(loginsuc=1) /*Login Successfully*/ while (1)
36、wgetchar=0; if (choiceend=1) printf("nnC:%s>",strupr(dirname); else printf("Bad command or file name.nC:%s>",strupr(username); gets(choice); strcpy(choice,ltrim(rtrim(strlwr(choice); if (strcmp(choice,"dir")=0) choice1=1; else if(strcmp(choice,"creat")=0
37、) choice1=2; else if(strcmp(choice,"delete")=0) choice1=3; else if(strcmp(choice,"attrib")=0) choice1=4; else if(strcmp(choice,"open")=0) choice1=5; else if(strcmp(choice,"close")=0) choice1=6; else if(strcmp(choice,"read")=0) choice1=7; else if(strc
38、mp(choice,"modify")=0) choice1=8; else if(strcmp(choice,"exit")=0) choice1=9; else if(strcmp(choice,"cls")=0) choice1=10; else if(strcmp(choice,"cd")=0) choice1=11; else if(strcmp(choice,"help")=0) choice1=20; else choice1=12; switch(choice1) case 1:
39、DirF();choiceend=1;break;case 2:CreateF();choiceend=1;if(!wgetchar) getchar();break;case 3:DeleteF();choiceend=1;if(!wgetchar)getchar();break;case 4:ModifyFM();choiceend=1;if(!wgetchar) getchar();break;case 5:choiceend=1;OpenF();if (!wgetchar) getchar();break;case 6:choiceend=1;CloseF();if (!wgetcha
40、r) getchar();break;case 7:choiceend=1;ReadF();if (!wgetchar) getchar();break;case 8:choiceend=1;WriteF();if (!wgetchar) getchar();break;case 9:printf("nYou have exited this system."); QuitF();exit(0);break;case 10:choiceend=1;clrscr();break;case 11:CdF();choiceend=1;break;case 20:help();ch
41、oiceend=1;break;default:choiceend=0; else printf("nAccess denied.");void help(void)printf("nThe Command Listn");printf("nCd Attrib Creat Modify Read Open Cls Delete Exit Closen");char *rtrim(char *str) /*remove the trailing blanks.*/int n=strlen(str)-1; while(n>=0) i
42、f(*(str+n)!=' ') *(str+n+1)='0'break; else n-; if (n<0) str0='0' return str;char *ltrim(char *str) /*remove the heading blanks.*/char *rtrim(char *str); strrev(str); rtrim(str); strrev(str); return str;void LoginF() /*LOGIN FileSystem*/char loginameMAXNAME,loginpw9,logincp
43、w9,str50; int i,j,flag=1; char a25; int findout; /*login user not exist*/ char *rtrim(char *str); /*remove the trailing blanks.*/ char *ltrim(char *str); /*remove the heading blanks.*/ void InputPW(char *password); /*input password,use '*' replace*/ void SetPANo(int RorW); /*Set physical add
44、ress num*/ while(1) findout=0; printf("nnLogin Name:"); gets(loginame); ltrim(rtrim(loginame); fp_mfd=fopen("c:osfile","rb"); for(i=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!=0;i+) if (strcmp(strupr(ufd_lp.ufdname),strupr(loginame)=0)findout=1; strcpy(logincpw,u
45、fd_lp.ufdpword); fclose(fp_mfd); if (findout=1) /*user exist*/printf("Login Password:"); InputPW(loginpw); /*input password,use '*' replace*/ if (strcmp(loginpw,logincpw)=0) strcpy(username,strupr(loginame); strcpy(dirname,username); fp_mfd=fopen("c:osfile","rb"
46、); for(j=0;fread(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!=0;j+)strcpy(str,"c:osfile"); strcat(str,ufd_lp.ufdname); ufdj=(OSUFD*)malloc(sizeof(OSUFD); strcpy(ufdj->ufdname,strupr(ufd_lp.ufdname); fp_ufd=fopen(str,"rb"); fcountj=0; for(i=0;fread(&ufdj->ufdfilei,sizeof(O
47、SFILE),1,fp_ufd)!=0;i+,fcountj+) ifopenji.ifopen=0; ifopenji.openmode=4; fclose(fp_ufd); fclose(fp_mfd); ucount=j; SetPANo(0); printf("nnLogin successful! Welcome to this FileSystemnn"); loginsuc=1; return; else printf("nn"); flag=1; while(flag) printf("Login Failed! Passwor
48、d Error. Try Again(Y/N):"); gets(a); ltrim(rtrim(a); if (strcmp(strupr(a),"Y")=0) loginsuc=0;flag=0; else if(strcmp(strupr(a),"N")=0)loginsuc=0;flag=0;return; else printf("New Password(<=8):"); InputPW(loginpw); /*input new password,use '*' replace*/ pri
49、ntf("nConfirm Password(<=8):"); /*input new password,use '*' replace*/ InputPW(logincpw); if (strcmp(loginpw,logincpw)=0) strcpy(ufd_lp.ufdname,strupr(loginame); strcpy(ufd_lp.ufdpword,loginpw); fp_mfd=fopen("c:osfile","ab"); fwrite(&ufd_lp,sizeof(OSUFD_L
50、OGIN),1,fp_mfd); fclose(fp_mfd); strcpy(username,strupr(loginame); strcpy(dirname,loginame); strcpy(str,"c:osfile"); strcat(str,username); if(fp_ufd=fopen(str,"rb")=NULL)fp_ufd=fopen(str,"wb"); fclose(fp_ufd); fp_mfd=fopen("c:osfile","rb"); for(j=0;f
51、read(&ufd_lp,sizeof(OSUFD_LOGIN),1,fp_mfd)!=0;j+)strcpy(str,"c:osfile"); strcat(str,ufd_lp.ufdname); ufdj=(OSUFD*)malloc(sizeof(OSUFD); strcpy(ufdj->ufdname,strupr(ufd_lp.ufdname); fp_ufd=fopen(str,"rb"); for(i=0;fread(&ufdj->ufdfilei,sizeof(OSFILE),1,fp_ufd)!=0;i+,
52、fcountj+) ifopenji.ifopen=0; ifopenji.openmode=4; fclose(fp_ufd); fclose(fp_mfd); ucount=j; SetPANo(0); printf("nnLogin Successful! Welcome to this Systemnn"); loginsuc=1; return; else printf("nn"); flag=1; while(flag) printf("Login Failed! Password Error. Try Again(Y/N):&qu
53、ot;); gets(a); ltrim(rtrim(a); if (strcmp(strupr(a),"Y")=0) loginsuc=0;flag=0; else if(strcmp(strupr(a),"N")=0)loginsuc=0;flag=0;return; void SetPANo(int RorW) /*Set physical address num,0-read,1-write*/int i,j; if (RorW=0)if(fp_file_p=fopen("c:osfilefilefile_p","r
54、b")=NULL) fp_file_p=fopen("c:osfilefilefile_p","wb"); fclose(fp_file_p); fp_file_p=fopen("c:osfilefilefile_p","rb"); for(i=0;fread(&j,sizeof(int),1,fp_file_p)!=0;i+) fpaddrnoj=1; /*for(i=1;i<MAX;i+) if (i%13)=0) fpaddrnoi=1;*/ elsefp_file_p=fopen(&
55、quot;c:osfilefilefile_p","wb"); /*for(i=1;i<MAX;i+) if(i%13)=0) fpaddrnoi=0;*/ for(i=0;i<MAX;i+) if (fpaddrnoi=1)fwrite(&i,sizeof(int),1,fp_file_p); fclose(fp_file_p);void InputPW(char *password) /*input password,use '*' replace*/int j; for(j=0;j<=7;j+)passwordj=g
56、etch(); if (int)(passwordj)!=13) if(int)(passwordj)!=8) putchar('*');else if (j>0)j-;j-; putchar('b');putchar(' ');putchar('b');else j-; else passwordj='0' break; passwordj='0'void DirF() /*Dir FileSystem*/int i,j,count=0; char sfmode25,sfpaddr25,str25; int ExistD(char *dirname); /*Whether DirName Exist,Exist-i,Not Exist-0*/ clrscr(); if (strcmp(strupr(ltrim(rtrim(dirname),"")!=0) pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市浦東新區(qū)2025屆物理高一第一學期期中聯(lián)考模擬試題含解析
- 2025屆內蒙古自治區(qū)包頭市第一機械制造有限公司第一中學物理高一第一學期期末調研模擬試題含解析
- 陜西西安地區(qū)八校2025屆高一物理第一學期期末綜合測試模擬試題含解析
- 海南省農墾實驗中學2025屆高二物理第一學期期中教學質量檢測試題含解析
- 2025屆浙江省高中聯(lián)盟高三物理第一學期期中調研模擬試題含解析
- 2025屆河南省安陽市林州一中物理高二第一學期期中學業(yè)質量監(jiān)測模擬試題含解析
- 云南省普洱市2025屆高二物理第一學期期末檢測模擬試題含解析
- 2025屆山東省墾利縣第一中學等三校物理高三第一學期期末教學質量檢測試題含解析
- 江西省永豐中學2025屆高一物理第一學期期中經典模擬試題含解析
- 2025屆河南省南陽市省示范性高中聯(lián)誼學校物理高三上期末綜合測試模擬試題含解析
- 案例研究設計與方法課件
- 《住院患者身體約束的護理》團體標準解讀
- 六年級上數(shù)學試題-圓的周長-練習題-人教版 無答案
- 新人教統(tǒng)編版七年級上冊歷史 第13課 東漢的興衰 教學課件
- 事業(yè)單位招聘人員體檢表
- 對口計算機高職單招VB編程練習題及答案
- 量子力學選擇題庫(含答案)
- 共點力的平衡 課件 高中物理新人教版必修第一冊(2022-2023學年)
- 少兒繪畫之《跳躍的海豚》
- 高三班主任管理經驗交流課件
- 《鄉(xiāng)土中國》整本書閱讀 高中語文 必修上冊
評論
0/150
提交評論