




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
程序設計基礎——C語言程序設計
2023翻轉課堂實用教程第09章指針指針9.1指針與函數9.2
指針與數組9.39.1指針123指針的概念指針變量的定義與使用指針變量的運算知識點指針的案例分析案例分析指針相關練習題練習題9.1.1指針知識點程序在運行時,會為變量分配內存空間。分配的內存空間會有一個唯一的地址編號,在C語言中又叫做指針。通過指針可以找到該內存單元。地址取值范圍:(32位系統為例)32位系統的內存條,32個元件,232個組合=4*230,4GB內存。內存地址編號從0X00000000到0XFFFFFFFF(十六進制表示)指針的概念指針變量保存某個內存空間的地址,并對該內存空間中的值進行操作。指針變量的定義方式為:數據類型名*指針變量名;或者數據類型名*指針變量名=地址值;1.指針變量的定義與使用指針變量指向的變量的數據類型指針變量聲明符保存的是某個變量的地址int*pInt;//指向int型變量的指針char*pStr=NULL;//NULL為空指針,stdio.hint*pInt1,*pInt2;9.1.1指針知識點舉例:doublenum=3.14;double*pDouble=#//定義一個指向double型變量num的指針pDouble1.指針變量的定義與使用指針變量pDouble指向num示意圖&num3.14pDoublenum&取地址運算符,num的地址pDouble指向num9.1.1指針知識點指針變量占用的內存大小,僅與地址信息的大小有關,與類型無關。#include<stdio.h>intmain(){inta=100;charc='C';doubled=3.14;int*pInt=&a;char*pStr=&c;double*pDouble=&d;//分別輸出int指針、字符指針、浮點型指針占用的字節數printf("%d%d%d",sizeof(pInt),sizeof(pStr),sizeof(pDouble));return0;}1.指針變量的定義與使用運行結果(64位系統,8個字節)8889.1.1指針知識點(1)取內容與取地址通過變量的地址/指針,同樣可以訪問到該變量的值。#include<stdio.h>intmain(void){ int*p,a=3; p=&a;
//兩種獲取變量a的方式,*p和a等價。 printf("*p的值為:%d,a的值為:%d\n",*p,a); *p=6;//通過指針p可以修改a的值 printf("*p的值為:%d,a的值為:%d\n",*p,a); return0;}2.指針變量的運算取內容,*p:p指向的變量a的值,等價取地址,&a:a的地址運行結果:*p的值為:3,a的值為:3*p的值為:6,a的值為:6&a3
pa*p9.1.1指針知識點(2)賦值運算doublenum=3.14,value=0.618;double*pDouble1=&num,*pDouble2;//(a)pDouble1=&value;//(b)修改pDouble1的值,讓其指向value變量pDouble2=pDouble1;//(c)2.指針變量的運算(a)(b)(c)9.1.1指針知識點(3)加法、減法和比較運算指針變量還可以進行加法、減法和比較運算,一般當指針變量指向數組中的元素時,才有實際的含義。2.指針變量的運算9.1.1指針知識點指針變量只能與整數常量i進行加減法運算,加或減同類型數據長度的i倍,指針往后或往前移動i個同類型的數據。指針pI的加減運算圖#include<stdio.h>intmain(){
inta=30,*p=&a,*pI=&a;
doubleb=3.14,*pD=&b;
charc='C',*pC=&c;
//前3個輸出語句,輸出各個類型占用的字節數
printf("sizeof(int)is%d\n",sizeof(int));
printf("sizeof(double)is%d\n",sizeof(double));
printf("sizeof(char)is%d\n",sizeof(char));
printf("初始值,pI:%#X,pD:%#X,pC:%#X\n",pI,pD,pC);//第4個輸出,先輸出各個指針的最初值
pI--;pD=pD-1;pC--;//第5個輸出,輸出-1后的值
printf("地址-1后,pI:%#X,pD:%#X,pC:%#X\n",pI,pD,pC);
pI+=2;pD+=2;pC+=2;//第6、7個輸出
printf("地址+2后,pI:%#X,pD:%#X,pC:%#X\n",pI,pD,pC);
printf("*pI:%d,*pD:%f,*pC:%c\n",*pI,*pD,*pC);
if(p==pI)printf("p和pI值相同,指向同一變量。");//第8個輸出,比較p和pI指針
elseprintf("p和pI值不同。");
return0;}9.1.1指針知識點運行結果:sizeof(int)is4sizeof(double)is8sizeof(char)is1初始值,pI:0X62FE04,pD:0X62FDF8,pC:0X62FDF7地址-1后,pI:0X62FE00,pD:0X62FDF0,pC:0X62FDF6地址+2后,pI:0X62FE08,pD:0X62FE00,pC:0X62FDF8*pI:6487544,*pD:0.000000,*pC:p和pI值不同。(3)加法、減法和比較運算%#X是輸出以0X開頭的十六進制地址。9.1.2指針案例分析案例9.1.1指針變量運算案例分析#include<stdio.h>intmain(void){ int*p,*pI,a=3; double*pD,num=0.618; pI=&a;//p指向a printf("*pI的值為:%d,a的值為:%d\n\n",*pI,a);
//修改a變量的值,*p的值也跟著改變 a=33; printf("*pI的值為:%d,a的值為:%d\n\n",*pI,a);
//修改*p變量的值,a的值也跟著改變 (*pI)++; printf("*pI的值為:%d,a的值為:%d\n\n",*pI,a); //同類型的指針可以相互賦值,兩者指向同一個變量a p=pI; printf("*p的值為%d,*pI的值為%d,a的值為%d\n",*p,*pI,a); //以十六進制形式輸出p和pI的值,均為a的地址 printf("a的地址為%#0X;",&a); printf("p和pI的值為%#0X和%#0X\n\n",p,pI);
pD=# //*pD就是num的值0.618,*p就是a的值34 *pD=*pD+*p; //執行完上面代碼后,*pD和num的值均變為了34.618 printf("*pD的值為:%f,num的值為:%f",*pD,num);return0;}*pI的值為:3,a的值為:3*pI的值為:33,a的值為:33*pI的值為:34,a的值為:34
*p的值為34,*pI的值為34,a的值為34a的地址為0X62FE04;p和pI的值為0X62FE04和0X62FE04
*pD的值為:34.618000,num的值為:34.618000課堂練習題9.1.1寫出執行下面程序后的輸出結果#include<stdio.h>intmain(){ inta=2,b=3; int*p1=&a,*p2=&b; printf("p1指向的值為:%d,p2指向的值為%d\n",*p1,*p2); p2=p1; *p2=b; printf("p1指向的值為:%d,a的值為%d",*p1,a); return0;}9.1.3指針課堂練習題課堂練習題9.1.2查找下面程序中的2處錯誤。輸入a和b,并定義指針p1和p2分別指向a和b,通過取指針值的方式計算a和b的和,并輸出和。#include<stdio.h>intmain(){ inta,b; int*p1,*p2; p1=&a,p2=&b; scanf("%d%d",&a,&p2); printf("a+b=%d",p1+*p2); return0;}課堂練習題9.1.3參照案例9.1.1,自行設計一個對指針操作的程序,并分析程序運行的結果。9.1.3指針課堂練習題9.2指針與函數123指針變量作為函數參數數組名作為函數參數知識點指針與函數案例分析案例分析指針與函數相關練習題練習題指針變量作為函數的參數時:將函數外部某些變量的地址傳遞到函數內部,在函數內部通過這些外部變量的地址操作這些外部變量。1.指針變量作為函數的參數9.2.1指針與函數知識點案例9.2.1編寫calculate函數來計算兩個double類型變量a和b的和與差,并將和sum與差diff返回給main函數。9.2.1指針與函數知識點對于需要函數返回多個值的情況:可以將這兩個變量sum和diff定義為全局變量(案例8.2.1);還可以將這兩個變量作為函數的入參。參數該如何傳遞?9.2.1指針與函數知識點#include<stdio.h>voidcalculate(intsum,intdiff,inta,intb){ sum=a+b; diff=(a>b?a-b:b-a); printf("Incalculate,sumis%d,diffis%d\n",sum,diff);}intmain(){ inta,b,sum=0,diff=0; printf("請輸入整型a和b的值:"); scanf("%d%d",&a,&b); calculate(sum,diff,a,b); printf("Inmain,sumis%d,diffis%d",sum,diff); return0;}請輸入整型a和b的值:2310↙Incalculate,sumis33,diffis13Inmain,sumis0,diffis0案例9.2.1程序代碼(錯誤實例)calculate()函數中計算出來sum和diff的值,這個結果并沒有返回給calculate()函數的調用者main()。分析原因(1)calculate與main中的sum和diff,不同變量,作用域不同、所占內存空間不同。(2)sum、diff、a、b的值單向依次傳給了calculate()的形式參數。以值傳遞,傳遞的是數值。9.2.1指針與函數知識點#include<stdio.h>voidcalculate(int*pSum,int*pDiff,inta,intb){ *pSum=a+b; *pDiff=(a>b?a-b:b-a);}intmain(){ inta,b,sum=0,diff=0; printf("請輸入整型a和b的值:"); scanf("%d%d",&a,&b); calculate(&sum,&diff,a,b); printf("sumis%d,diffis%d",sum,diff); return0;}請輸入整型a和b的值:2310↙sumis33,diffis13案例9.2.1程序代碼(正確實例)main()函數將sum和diff的地址值傳給形參calculate中的pSum、pDiff;calculate中*pSum和*pDiff就是sum和diff。以值傳遞,傳遞的是地址信息。總結,通過函數調用改變某個變量的值,需要滿足三個條件:①首先在主調函數中,傳入函數的實際參數需要是該變量地址;②其次函數的形參需要是與該變量同類型的指針;③最后在函數內部,改變形參所指向的變量的值。用指針變量作為函數參數的方式,也可以實現函數返回多個變量的情況1.指針變量作為函數的參數9.2.1指針與函數知識點數組名實際上就是一個指針常量,主調函數將數組名傳遞給被調函數時,僅僅是數組的首地址,在被調函數中無法獲得數組元素的個數,還需要一個整型參數來表示數組的元素個數。2.數組名作為函數的參數9.2.1指針與函數知識點要求:輸入兩個整數a,b,編寫swap函數,通過調用swap函數實現a和b的交換。問題分析:如果希望通過函數調用改變a和b的值,需要滿足三個條件:①首先在主調函數中,傳入函數的實際參數需要是a和b的地址;②其次函數的形參需要是同類型的指針;③最后在函數內部,改變形參所指向的變量的值。案例9.2.2定義函數交換兩個變量的值9.2.2指針與函數案例分析掃碼觀看視頻#include<stdio.h>voidswap(int*pA,int*pB){ inttmp; tmp=*pA; *pA=*pB; *pB=tmp;}intmain(){ inta,b; printf("請輸入整型a和b的值:"); scanf("%d%d",&a,&b); swap(&a,&b); printf("Afterswap,ais%d,bis%d",a,b); return0;}案例9.2.2
代碼請輸入整型a和b的值:2350↙afterswap,ais50,bis23ab2350pApB*pA*pBtmp2350239.2.2指針與函數案例分析案例9.2.3編寫冒泡排序函數,對一個整型數組進行排序,并編寫代碼驗證排序的正確性。9.2.2指針與函數案例分析冒泡排序動畫演示16216517590160將視頻中5口之家的身高,存到數組hhh[0]h[1]h[2]h[3]h[4]奶奶身高媽媽身高爸爸身高寶寶身高爺爺身高9.2.2指針與函數案例分析案例9.2.3冒泡排序函數冒泡排序的原理是:從前往后,依次比較相鄰元素大小,
若相鄰元素順序不符合要求,則交換兩個元素,
直到所有的元素都有序,排序結束。n個數據,排序n-1輪。依據排序原理,冒泡排序類似水中冒泡,如果要求數據從小到大排序,較大的數慢慢冒出來,冒到數列的后面。如果從大到小排序,較小的數慢慢冒出來,冒到數列的后面。
16216517590160第1次比較:16216517590160第2次比較:162165
17590160第3次比較:162
16590175160第4次比較:162
165901601755個數第一輪比較比較4次
162
16590160175第1次比較:
162165
90160175第2次比較:
162
90165160175第3次比較:162
90
1601651755個數第二輪比較比較3次已有序已有序
162
90
160165175第1次比較:
90162
160165175第2次比較:901601621651755個數第三輪比較比較2次已有序
90160162165175第2次比較:90160
1621651755個數第四輪比較比較1次即可排序成功已有序#include<stdio.h>intmain(void){inti,j,n,t,h[10]={162,165,175,90,160};n=5;
for(j=0;j<n-1;j++){
//第一輪比較if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}
for(j=0;j<n-2;j++){
//第二輪比較if(a[j]>a[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}
for(j=0;j<n-3;j++){
//第三輪比較
if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}for(j=0;j<n-4;j++){//第四輪比較if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}return0;}#include<stdio.h>intmain(void){inti,j,n,t,h[10]={162,165,175,90,160};n=5;
i=1;
for(j=0;j<n-i;j++){
//第一輪比較if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}
i=2;for(j=0;j<n-i;j++){
//第二輪比較if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}
i=3;
for(j=0;j<n-i;j++){
//第三輪比較
if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}
i=4;
for(j=0;j<n-i;j++){//第四輪比較if(h[j]>h[j+1]){ t=h[j];h[j]=h[j+1];h[j+1]=t;}}return0;}引入變量i冒泡排序算法-代碼段
inti,j,t;for(i=1;i<n;i++)for(j=0;j<n-i;j++) if(array[j]>array[j+1]){ t=array[j]; array[j]=array[j+1]; array[j+1]=t; }intmain(void){inti,a[10];for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");return0;}voidsort(int*array,intn){
int
i,j,t;for(i=1;i<n;i++)for(j=0;j<n-i;j++) if(array[j]>array[j+1]){ t=array[j]; array[j]=array[j+1]; array[j+1]=t; }}案例9.2.3冒泡排序函數983467再來看一個實例,數組aaa[0]a[1]a[2]a[3]a[4]a[5]采用冒泡排序算法,打印出每輪排序后數據序列有沒有發現什么問題?如何對代碼進行優化?案例9.2.3冒泡排序算法優化voidsort(int*array,intn){
int
i,j,t,flag=0;for(i=1;i<n;i++){
flag=0;for(j=0;j<n-i;j++) if(array[j]>array[j+1]){ t=array[j]; array[j]=array[j+1]; array[j+1]=t;
flag=1; }
if(flag==0)break;}}案例9.2.3冒泡排序算法優化算法輸入n(n<10),再輸入n個數,用選擇法將它們從小到大排序后輸出。
每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到全部待排序的數據元素排完。設n=5,輸入的5個數為:35281案例9.2.4選擇法排序第1輪:
1
5283
第2輪:12
583第3輪:123
8
5
第4輪:1235
8
下標值0123435281下標值0123435281第1輪:
1
5283
從0~4中選擇最小的,放在0位置
第2輪:12
583
從1~4中選擇最小的,放在1位置第3輪:1238
5
從2~4中選擇最小的,放在2位置
第4輪:1235
8
從3~4中選擇最小的,放在3位置min_index=0;for(j=1;j<n;j++)if(a[j]<a[min_index])min_index=jtmp=a[min_index];a[min_index]=a[0];a[0]=tmp;min_index=1;for(j=2;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[1];a[1]=tmp;min_index=2;for(j=3;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[2];a[2]=tmp;min_index=3;for(j=4;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[3];a[3]=tmp;案例9.2.4選擇法排序5個數據,排序4輪,n個數據,排序n-1輪for(i=0;i<n-1;i++){//外循環n-1次min_index=i;for(j=i+1;j<n;j++)if(a[j]<a[min_index])min_index=j;
tmp=a[min_index];a[min_index]=a[i];a[i]=tmp;}
針對n個元素的數組兩層循環(1)外循環外循環,即執行n-1輪選擇。則循環變量k取值從0到n-2(2)內循環即每一輪做的事兒:從i到n-1中選擇最小值并與i位置的元素交換min_index=0;for(j=1;j<n;j++)if(a[j]<a[min_index])min_index=jtmp=a[min_index];a[min_index]=a[0];a[0]=tmp;min_index=1;for(j=2;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[1];a[1]=tmp;min_index=2;for(j=3;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[2];a[2]=tmp;min_index=3;for(j=4;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[3];a[3]=tmp;案例9.2.4選擇法排序#include<stdio.h>voidselect_sort(inta[],intn){inti,j,min_index,tmp;for(i=0;i<n-1;i++){//外循環n-1次
min_index=i;for(j=i+1;j<n;j++)if(a[j]<a[min_index])min_index=j;tmp=a[min_index];a[min_index]=a[i];a[i]=tmp;}}5↙35281↙12358/*從i到n-1中找出最小值對應的下標*//*將最小值與i位置交換*/如果從大到小排序select_sort該如何修改?運行結果intmain(void){inta[10]={0};inti,n;scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);
select_sort(a,n);for(i=0;i<n;i++)printf("%d",a[i]);return0;}案例9.2.4選擇法排序設已有一個10個元素的整型數組a,且按值從小到大有序排列。輸入一個整數x,然后在數組中查找x,如果找到,輸出相應的下標,否則,輸出“NotFound”。補充:二分法查找法
首先想到的是:順序查找算法,該算法簡單明了,其查找過程就是對數組元素從頭到尾的遍歷過程。但是,當數組很大時,查找的效率不高。二分查找的效率較高,但前提是數組元素必須是有序的。二分法查找(流程圖)lowhighmidx<midx>midhighlowvoidbinary_search(inta[],intn,intx){intlow=0,high=n-1,mid;/*開始時查找區間為整個數組*/while(low<=high){/*循環條件*/mid=(low+high)/2;/*中間位置*/if(x==a[mid])break;/*查找成功,中止循環*/elseif(x<a[mid])high=mid-1;/*新查找區間為前半段,high前移*/elselow=mid+1;/*新查找區間為后半段,low后移*/}if(low<=high)printf("Indexis%d\n",mid);elseprintf("NotFound\n");}二分法查找
(數組名作為函數參數)9.2.3指針與函數課堂練習題課堂練習題9.2.1運行下面的代碼,查看swap1函數是否可以交換a和b變量的值?并分析原因。#include<stdio.h>voidswap1(int*pA,int*pB){ int*tmp; tmp=pA; pA=pB; pB=tmp;}intmain(){ inta,b; printf("請輸入整型a和b的值:"); scanf("%d%d",&a,&b); swap1(&a,&b); printf("Afterswap,ais%d,bis%d",a,b); return0;}9.2.3指針與函數課堂練習題課堂練習題9.2.2編寫函數,求兩個整數的和與差,可采用傳入和與差的指針的形式。輸入兩個整數a和b,編寫函數calc來計算a-b和a+b。課堂練習題9.2.3:編寫函數,通過身份證號計算年齡。函數有兩個形式參數:一個是存儲身份證號的字符數組,另一個為整型指針,指向的是保存年齡的變量。9.3指針與數組123采用指針訪問數組指針間的比較運算知識點指針與數組案例分析案例分析指針與數組相關練習題練習題9.3.1指針與數組知識點數組名:數組的首地址,第一個元素的地址。若數組array元素類型為Type,則array值就和&array[0]一致,array的類型為Type*類型的指針常量。系統在為數組分配一塊連續的內存空間后,數組的首地址就已經確定了,除非銷毀,不會改變,所以為指針常量。為什么數組名是一個指針常量?9.3.1指針與數組知識點舉例:int*p,array[5]={30,20,50,10,40};p=array;p的值為&array[0],*p為array[0]p+i表示相對于當前指針p往后偏移i個整數的位置(1)采用指針訪問數組
array[0]array[1]array[2]array[3]array[4]3020501040
arrayarray+1
array+2array+3array+4p
p+1p+2p+3
p+49.3.1指針與數組知識點(1)采用指針訪問數組采用指針獲取數組元素、地址的方式元素獲取內容array[0]array[1]array[2]array[3]array[4]獲取元素的值array[0]*array*pp[0]array[1]*(array+1)*(p+1)p[1]array[2]*(array+2)*(p+2)p[2]array[3]*(array+3)*(p+3)p[3]array[4]*(array+4)*(p+4)p[4]獲取元素的地址&array[0]arrayp&array[1]array+1p+1&array[2]array+2p+2&array[3]array+3p+3&array[4]array+4p+4參見9.3.2章節中案例9.3.1的代碼及運行結果數組名可以作為指針來使用,指針變量可以作為數組形式來使用。9.3.1指針與數組知識點(1)采用指針訪問數組指針變量與數組名,兩者有什么區別呢?(1)p為指針變量,數組array是指針常量。p=array+i,array=array+i。(2)作為sizeof運算符的操作數時sizeof(array):為array所代表的整個數組占用的總字節數。sizeof(p):為p指針占用的字節數數組名不可以作為賦值=左邊的操作數。9.3.1指針與數組知識點(1)采用指針訪問數組舉例:intarray[5]={30,20,50,10,40},*p=array+2;p-1
是?p+2是?利用指針p,可以隨機從某一個元素開始往前往后訪問數組元素。array[2]前面一個元素,p-1為&array[1]p+2為&array[4]9.3.1指針與數組知識點(2)指針間的比較運算當兩個指針均指向同一個數組中的元素時,兩個指針可以進行兩類運算:
關系運算:
><≠相減的運算9.3.1指針與數組知識點(2)指針間的比較運算舉例:intarray[5]={30,20,50,10,40};int*p1=&array[3],*p2=array,*p;3020501040arrayp1p2①
以下式子成立:p1>p2、p2<p1、p1≠p2基于上面的比較運算,使用指針p作為循環變量,p:[array,&array[4]],p++,可以遍歷數組array的所有元素。for(p=array;p<=&array[N-1];p++){ printf("%d",*p);}或for(p=array;p<array+N;p++){ printf("%d",*p);}p1-p2為39.3.1指針與數組知識點(2)指針間的比較運算舉例:3020501040arrayp1p2關系運算、相減運算結果備注p1>p2為真p1指向的數組元素的下標大于p2指向的元素的下標,所以p1>p2為真p1<p2為假
p1==p2為假
p1-p23p1和p2之間相差3個存儲單元/3個元素指針間的比較運算表9.3.2指針與數組案例分析案例9.3.1指針與數組關系的應用#include<stdio.h>#defineN10intmain(){
int*p,array[N],i;
p=array;
for(i=0;i<N;i++){
scanf("%d",array+i);
}
//輸出元素的地址,每兩個一行
for(i=0;i<N;i++){
printf("%#X",(array+i));
if((i+1)%2==0&&i!=9)printf("\n");
}
printf("\n");
//三種通過p指針來獲取元素值的代碼
for(i=0;i<N;i++){
printf("%d",*(p+i));
}
printf("\n");
for(i=0;i<N;i++){
printf("%d",p[i]);
}
printf("\n");
for(p=array;p<=&array[N-1];p++){
printf("%d",*p);
}
return0;}運行結果:231045891357
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識點強化的2025年行政組織理論試題及答案
- 周口公園湖面管理制度
- 公路路政督察管理制度
- 公司食堂獎懲管理制度
- 冷鏈產品交接管理制度
- 客戶服務車輛管理制度
- 公路工程技術創新試題及答案
- 商場宣傳物料管理制度
- 城鎮保潔人員管理制度
- 確保團隊間有效協作的項目管理方法與應用實例試題及答案
- 搶救配合流程和站位規范
- 2025年高考物理考試易錯題易錯點07動量定理、動量守恒定律(3陷阱點7考點4題型)(學生版+解析)
- 雨季行車安全教育
- 行政檢查業務培訓課件
- 消控室考核試題及答案
- 2025年湖南省永州市初中學業水平模擬考試化學試卷(一)(含答案)
- 公司項目薪資管理制度方案
- 統編版2024-2025學年語文三年級下冊期末測試卷(含答案)
- 預防混料管理
- 建筑工程觀感質量檢查評分方法
- 現場工程師人才培養路徑研究
評論
0/150
提交評論