下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chap8指针
8.1寻找保险箱密码8.2狸猫换太子8.3冒泡排序8.4加密变换问题8.5任意个整数求和问题*本章要点变量、内存单元和地址之间是什么关系?如何定义指针变量,怎样才能使用指针变量?什么是指针变量的初始化?指针变量的基本运算有哪些?如何使用指针操作所指向的变量?指针作为函数参数的作用是什么?如何使用指针实现函数调用返回多个值?如何利用指针实现内存的动态分配?8.1寻找保险箱密码
一个关于特工008寻找保险箱密码的故事…关键点分析得到线索:0217单元的“虎跑号”寄存箱提示地址:1976单元找到目标:“龙井号”寄存箱取出内容:9118.1寻找密码的途径分析密码911存放在某个寄存箱内,如果我们知道这个寄存箱的名字,就能够找到密码
“龙井号”如果不知道密码所在的寄存箱名字,知道该寄存箱的地址也照样能够取出密码1976如果寄存箱的地址也不知道,但是有另外一个地方存放这个寄存箱的地址,就能顺藤摸瓜,间接找到密码02178.1密码存放示意图龙井号9111976虎跑号19760217名字虎跑号龙井号地址02171976内容1976911例8-1利用指针模拟寻找保险箱密码的过程
获取密码的两种方法
intmain(void){ intkey=911;/*变量key存放密码*/
int*addr=NULL;/*变量addr存放地址*/
addr=&key;/*将key的地址赋给addr*/
/*通过变量key输出密码值*/printf("Thekeyis:%d\n",key);/*通过变量key的地址来输出密码值*/
printf("IfIknowtheaddressofthekey,Ialsocangetit:%d\n",*addr);
return0;}Thekeyis:911IfIknowtheaddressofthekey,Ialsocangetit:911
8.1.2地址和指针-指针的概念内存单元地址内容变量intx=20,y=1,z=155;printf("%d",x;)直接访问:通过变量名访问间接访问:通过另一个变量访问把变量的地址放到另一变量中使用时先找到后者再从中取出前者的地址100020x10021y1004155z20001000p2002地址指针变量指针内存单元地址内容变量intx=20,y=1,z=155;printf("%d",x;)100020x10021y1004155z20001000p2002地址指针变量指针变量:存放地址的变量某个变量的地址指向指针变量所指向的变量的类型int*p;p是整型指针,指向整型变量float*fp;fp是浮点型指针,指向浮点型变量char*cp;
cp是字符型指针,指向字符型变量类型名*
指针变量名指针声明符8.1.3指针变量的定义指针变量的定义类型名*
指针变量名int*
p;指针变量名是p,不是*p*是指针声明符intk,*p1,*p2;等价于:intk;int*p1;int*p2;8.1.4指针的基本运算
*间接访问运算符,访问指针所指向的变量*p:指针变量p所指向的变量a3&ap*p如果指针的值是某个变量的地址,通过指针就能间接访问那个变量。1、取地址运算和间接访问运算
&取地址运算符,给出变量的地址int*p,a=3;p=&a;把a的地址赋给p,即p指向a指针变量的类型和它所指向变量的类型相同#include<stdio.h>intmain(void){inta=3,*p; p=&a; printf(“a=%d,*p=%d\n”,a,*p);*p=10;printf("a=%d,*p=%d\n",a,*p);printf("Entera:");scanf("%d",&a); printf("a=%d,*p=%d\n",a,*p);(*p)++; printf("a=%d,*p=%d\n",a,*p);
return0;}例8-2指针取地址运算和间接访问运算
a3&ap*pa=3,*p=3a=10,*p=10Entera:5
a=5,*p=5a=6,*p=6a3&ap*p(1)当p=&a后,*p与a相同(2)int*p;定义指针变量p
*p=10;指针p所指向的变量,即a(3)&*p与&a相同,是地址
*&a与a相同,是变量(4)(*p)++等价于a++
将p所指向的变量值加1*p++等价于*(p++)
先取*p,然后p自加,此时p不再指向a说明inta=3,x,*p;p=&a;x=*p++;b2&bp2*p2a1&ap1*p121#include<stdio.h>intmain(void){inta=1,b=2,t;int*p1,*p2;p1=&a;p2=&b;printf("a=%d,b=%d,*p1=%d,*p2=%d\n",a,b,*p1,*p2);t=*p1;*p1=*p2;*p2=t;
printf("a=%d,b=%d,*p1=%d,*p2=%d\n",a,b,*p1,*p2);
return0;}例8-3通过指针改变变量的值a=1,b=2,*p1=1,*p2=2a=2,b=1,*p1=2,*p2=12、赋值运算a3&ap1&ap2*p1
*p2inta=3,*p1,*p2;p1=&a;把a的地址赋给p1,即p1指向ap2=p1;p2也指向a相同类型的指针才能相互赋值b4&bp2*p2a2&ap1*p16c&a&c例8-4指针赋值intmain(void){inta,b,c,*p1,*p2;a=2;b=4;c=6;
p1=&a;p2=&b;
printf("a=%d,b=%d,c=%d,*p1=%d,*p2=%d\n",a,b,c,*p1,*p2);
p2=p1;p1=&c;
printf("a=%d,b=%d,c=%d,*p1=%d,*p2=%d\n",a,b,c,*p1,*p2);
return0;}*p2*p1
a=2;b=4;c=6;*p1=2,*p2=4a=2;b=4;c=6;*p1=6,*p2=2例8-5intmain(void){inta=1,b=2;int*p1=&a,*p2=&b,*pt;
printf("a=%d,b=%d,*p1=%d,*p2=%d\n",a,b,*p1,*p2);pt=p1;p1=p2;p2=pt;printf(“a=%d,b=%d,*p1=%d,*p2=%d\n”,a,b,*p1,*p2);return0;}8.1.5指针变量的初始化p1b2&bp2*p2a1&a*p1ptb2&ap2*p1a1&bp1*p2pt&aa=1;b=2;*p1=1,*p2=2a=1;b=2;*p1=2,*p2=1对指针的操作/对指针所指向变量的操作*p1和*p2的值都由1和2变成了2和1(1)直接改变指针的值(2)改变指针所指变量的值p1b2&bp2*p2a1&a*p1ap1b2&ap2*p11&b*p2p1b1&bp2*p2a2&a*p18.2狸猫换太子一个关于发生在北宋年间变量替换的故事…关键点分析真宗和李玉未出生的孩子:小王子刘娥的阴谋:用狸猫替换掉孩子筹备工作:设计两套替换行动方案实施结果:行动一失败,行动二成功
intmain(void){intbaby=PRINCE;/*baby代表孩子,
刚出生时是王子
*/
printf("beforechange,babyis");
display(baby);
replace1(baby);/*实施狸猫换太子第一次行动*/
printf("\n");printf("afterfirstaction,babyis");
display(baby);
replace2(&baby); /*实施狸猫换太子第二次行动*/
printf("\n");printf("aftersecondaction,babyis");display(baby);return0;}例8-6指针作为函数参数模拟狸猫换太子#defineCIVET0定义狸猫值为0#definePRINCE1定义王子值为1
voidreplace1(intbaby){baby=CIVET;}voidreplace2(int*baby){*baby=CIVET;}voiddisplay(intwho){if(who==CIVET)printf("狸猫");elseif(who==PRINCE)printf("王子");}beforechange,babyis王子afterfirstaction,babyis王子aftersecondaction,babyis狸猫8.2.2指针作为函数的参数函数参数包括实参和形参,两者的类型要一致,可以是指针类型。如果实参是某个变量的地址,相应的形参就是指针。
intmain(void){inta=1,b=2;int*pa=&a,*pb=&b;
voidswap1(intx,inty),swap2(int*px,int*py),swap3(int*px,int*py);
swap1(a,b);printf(“Aftercallingswap1:a=%db=%d\n”,a,b);
a=1;b=2;
swap2(pa,pb);printf(“Aftercallingswap2:a=%db=%d\n”,a,b);a=1;b=2;
swap3(pa,pb);printf(“Aftercallingswap3:a=%db=%d\n”,a,b);return0;}调用哪个函数,可以交换main()中变量a和b的值?例8-7swap1()a12bx12y21swap1(a,b);voidswap1(intx,inty){intt;t=x;x=y;y=t;}例8-7swap2()swap2(&a,&b);voidswap2(int*px,int*py){intt;t=*px;*px=*py;*py=t;}abpxpy12值传递,地址未变,但存放的变量的值改变了21例8-7swap3()swap3(&a,&b);voidswap3(int*px,int*py){int*pt;pt=px;px=py;py=pt;}abpxpy12值传递,形参指针的改变不会影响实参指针作为函数参数的应用swap2(&a,&b);voidswap2(int*px,int*py){intt;t=*px;*px=*py;*py=t;}要通过函数调用来改变主调函数中某个变量的值:(1)在主调函数中,将该变量的地址或者指向该变量的指针作为实参(2)在被调函数中,用指针类型形参接受该变量的地址
(3)在被调函数中,改变形参所指向变量的值abpxpy1221Aftercallingswap1:a=1,b=2Aftercallingswap2:a=2,b=1Aftercallingswap3:a=1,b=2通过指针实现函数调用返回多个值
例8-8输入年和天数,输出对应的年、月、日。例如:输入2000和61,输出2000-3-1。定义函数month_day(year,yearday,*pmonth,*pday)用2个指针作为函数的参数,带回2个结果intmain(void){intday,month,year,yearday;voidmonth_day(intyear,intyearday,int*pmonth,int*pday);printf(“inputyearandyearday:”);
scanf("%d%d",&year,&yearday); month_day(year,yearday,&month,&day); printf("%d-%d-%d\n",year,month,day); return0; }例8-8voidmonth_day(intyear,intyearday,int*pmonth,int*pday){intk,leap;inttab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31},};
/*建立闰年判别条件leap*/leap=(year%4==0&&year%100!=0)||year%400==0;
for(k=1;yearday>tab[leap][k];k++)yearday-=tab[leap][k];*pmonth=k;*pday=yearday;}inputyearandyearday:200061
2000-3-1monthdaypmonthpday318.3冒泡排序-程序解析
voidswap2(int*,int*);voidbubble(inta[],intn);intmain(void){intn,a[8];inti;printf("Entern(n<=8):");scanf("%d",&n);printf("Entera[%d]:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);
bubble(a,n);
printf("Aftersorted,a[%d]=",n);for(i=0;i<n;i++) printf("%3d",a[i]);
return0;}voidbubble(inta[],intn){inti,j;for(i=1;i<n;i++) for(j=0;j<n-i;j++)if(a[j]>a[j+1])
swap2(&a[j],&a[j+1]);}
voidswap2(int*px,int*py){intt;t=*px;*px=*py;*py=t;}Entern(n<=8):8Entera[8]:73663-522-772Aftersorted,a[8]=-77-5233722668.3.2数组和地址间的关系inta[100],*p;数组名代表一个地址,它的值是数组首元素的地址(基地址)a+i
是距数组a的基地址的第i个偏移3000a[0]地址内容数组元素3002a[1]3198a[99]a[i]aa+1a+99a+i&a[i]*(a+i)sum=0;for(i=0;i<100;i++)sum=sum+a[i];*(a+i)下标运算符[]的含义指针和数组的关系任何由数组下标来实现的操作都能用指针来完成inta[100],*p;p=a;或p=&a[0];
pp+1p+99p+i3000a[0]地址内容数组元素3002a[1]3198a[99]a[i]
aa+1a+99a+i&a[i]
a[i]a+i
*(a+i)p+i
*(p+i)&p[i]
p[i]p=a;sum=0;for(i=0;i<100;i++)sum=sum+p[i];等价等价用指针完成对数组的操作inta[100],*p;移动指针p3000a[0]地址内容数组元素3002a[1]3198a[99]a[i]aa+1a+99a+isum=0;for(p=a;p<=
&a[99];p++)sum=sum+*p;ppp#include<stdio.h>intmain(void){doublea[2],*p,*q;p=&a[0];
q=p+1;printf("%d\n",q-p);printf("%d\n",(int)q-(int)p);return0;}例8-10使用指针计算数组元素个数和数组元素的存储单元数
18指针p和q之间元素的个数指针p和q之间的字节数地址值pq3000a[0]地址内容数组元素3008a[1]aa+1double*p,*q;q-p两个相同类型的指针相减,表示它们之间相隔的存储单元的数目p+1/p-1指向下一个存储单元/指向上一个存储单元其他操作都是非法的指针相加、相乘和相除,或指针加上和减去一个浮点数p<q两个相同类型指针可以用关系运算符比较大小指针的算术运算和比较运算pq3000a[0]地址内容数组元素3008a[1]aa+1#include<stdio.h>intmain(void){inti,a[10],*p;longsum=0;printf("Enter10integers:");
for(i=0;i<10;i++)scanf("%d",&a[i]);for(p=a;p<=a+9;p++)
sum=sum+*p;printf("sum=%ld\n",sum);return0;}例8-11使用指针计算数组元素之和
Enter10integers:
10987654321sum=55p3000a[0]地址内容数组元素3002a[1]3018a[9]a[i]aa+1a+9a+ippp数组元素作为函数实参时,函数形参为变量与变量作为函数实参相同,值传递8.3.3数组名作为函数的参数doublefact(intn);intmain(void){inti,n=5;doublesum; sum=0;for(i=1;i<=n;i++) sum=sum+fact(i);
printf("sum=%e\n",sum);return0;}doublefact(intn){inti; doubleresult=1;
for(i=1;i<=n;i++) result=result*i;returnresult;}intb[5]={1,4,5,7,9};fact(b[i-1]);1!+4!+5!+7!+9!数组名是指针常量,相当于指针作为函数的参数数组名做为实参,形参是指针变量(数组)数组名作为函数的参数intsum(int*array,intn){inti,s=0;for(i=0;i<n;i++)s+=array[i];return(s);}例8-12intmain(void){inti;intb[5]={1,4,5,7,9};printf("%d\n",sum(b,5));return0;}(1)实参是数组名(2)形参是指针变量可以写成数组形式intarray[]*(array+i)intsum(int*array,intn){inti,s=0;for(i=0;i<n;i++)s+=array[i];return(s);}intmain(void){inti;intb[5]={1,4,5,7,9};printf("%d\n",sum(b,5));return0;}b
b[0]b[5]arraysum(b,5)b[0]+b[1]+...+b[4]sum(b,3)b[0]+b[1]+b[2]sum(b+1,3)b[1]+b[2]+b[3]sum(&b[2],3)b[2]+b[3]+b[4]#include<stdio.h>intmain(void){inti,a[10],n;voidreverse(intp[],intn);printf("Entern:");scanf("%d",&n);printf("Enter%dintegers:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);
reverse(a,n);for(i=0;i<n;i++)printf("%d\t",a[i]); return0;}
例8-13将数组元素逆序存放voidreverse(intp[],intn){inti,j,t;for(i=0,j=n-1;i<j;i++,j--){t=p[i];p[i]=p[j];p[j]=t;}}Entern:10Enter10integers:1098765432112345678910数组名做为函数的参数,在函数调用时,将实参数组首元素的地址传给形参(指针变量),因此,形参也指向实参数组的首元素。如果改变形参所指向单元的值,就是改变实参数组首元素的值。或:形参数组和实参数组共用同一段存贮空间,如果形参数组中元素的值发生变化,实参数组中元素的值也同时发生变化。a
a[0]a[5]p指针实现voidreverse(int*p,intn){int*pj,t;for(pj=p+n-1;p<pj;p++,pj--){t=*p;*p=*pj;*pj=t;}}a[0]p数组元素内容指针a[1]a[9]pj#include<stdio.h>intmain(void){inti,a[10],n;voidreverse(intp[],intn);printf("Entern:");scanf("%d",&n);printf("Enter%dintegers:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);
reverse(a,n);for(i=0;i<n;i++)printf("%d\t",a[i]); return0;}8.3.4冒泡排序算法分析相邻两个数比较,小的调到前面,大的调到后面98888854408955554504559444605444966066666908000009i=1i=2i=3i=4i=5a[j]>a[j+1]j=0to4j=0to3j=0to2j=0to6-1-i98888854408955554504559444605444966066666908000009
985460i=1j=0:895460j=1:859460j=2:854960j=3:854690j=4:854609intmain(void){inti,j,n,t,a[10];n=6;for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++)for(j=0;j<n-i;j++) if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }return0;}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){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; }}字符串:字符数组字符指针8.4.1程序解析8.4.2字符数组和字符指针8.4.3常用的字符串处理函数8.4加密问题8.4.1程序解析-加密
#defineMAXLINE100voidencrypt(char*s);intmain(void){charline[MAXLINE];printf("Inputthestring:");gets(line);
encrypt(line);
printf(“Afterbeingencrypted:%s\n",line);return0;}voidencrypt(char*s){for(;*s!='\0';s++)if(*s=='z')*s='a'; else*s=*s+1;}Inputthestring:hellohangzhouAfterbeingencrypted:ifmmp!ibohaipv8.4.2字符串和字符指针
字符串常量"array""point"用一对双引号括起来的字符序列被看做一个特殊的一维字符数组,在内存中连续存放实质上是一个指向该字符串首字符的指针常量charsa[]="array";char*sp="point";charsa[]="array";char*sp="point";printf("%s",sa); printf("%s",sp); printf("%s\n","string");
arraypointstringprintf("%s",sa+2);printf("%s",sp+3);printf("%s\n",string"+1);raynttring数组名sa、指针sp和字符串"string"的值都是地址字符数组与字符指针的重要区别charsa[]="Thisisastring";char*sp="Thisisastring";saThisisastring\0spThisisastring\0如果要改变数组sa所代表的字符串,只能改变数组元素的内容如果要改变指针sp所代表的字符串,通常直接改变指针的值,让它指向新的字符串示例charsa[]="Thisisastring";char*sp="Thisisastring";strcpy(sa,"Hello");sp="Hello";sa=“Hello”;非法数组名是常量,不能对它赋值字符指针-先赋值,后引用定义字符指针后,如果没有对它赋值,指针的值不确定。
char*s;scanf(“%s”,s);char*s,str[20];s=str;scanf(“%s”,s);定义指针时,先将它的初值置为空char*s=NULL不要引用未赋值的指针加密函数的两种实现voidencrypt(chars[]){inti; for(i=0;s[i]!='\0';i++)if(s[i]=='z')s[i]='a'; elses[i]=s[i]+1;}voidencrypt(char*s){for(;*s!='\0';s++)if(*s=='z')*s='a'; else*s=*s+1;}8.4.3常用的字符串处理函数函数原型在stdio.h或string.h中给出1、字符串的输入和输出输入字符串:scanf()或gets()输出字符串:printf()或puts()
stdio.hcharstr[80];i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';(1)scanf("%s",str)输入参数:字符数组名,不加地址符遇回车或空格输入结束,并自动将输入的一串字符和‘\0’送入数组中(2)gets(str)遇回车输入结束,自动将输入的一串字符和‘\0’送入数组中
字符串的输入'\n''''\t'charstr[80];for(i=0;str[i]!=‘\0’;i++)putchar(str[i]);(3)printf("%s",str)printf("%s","hello");(4)puts(str)puts("hello");输出字符串后自动换行输出参数可以是字符数组名或字符串常量,输出遇'\0'结束字符串的输出#include<stdio.h>intmain(){charstr[80];scanf("%s",str);printf("%s",str);printf("%s","Hello");return0;}例8-15字符串输入输出函数示例#include<stdio.h>intmain(){charstr[80];gets(str);puts(str);puts("Hello");return0;}ProgrammingProgrammingHelloProgrammingisfun!
ProgrammingHelloProgrammingProgrammingHelloProgrammingisfun!
Programmingisfun!Hello2、字符串的复制、连接、比较、
求字符串长度字符串复制:strcpy(str1,str2)字符串连接:strcat(str1,str2)字符串比较:strcmp(str1,str2)求字符串长度:strlen(str)string.hstrcpy(str1,str2);将字符串str2复制到str1中
staticcharstr1[20];staticcharstr2[20]=“happy”;字符串复制函数strcpy()happy\0\0strcpy(str1,str2);happy\0str1中strcpy(str1,“world”);str1中:world\0#include“stdio.h”#include“string.h”intmain(void){charstr1[20],str2[20];gets(str2);strcpy(str1,str2);puts(str1);return0;}strcpy()示例12341234
strcat(str1,str2);
连接两个字符串str1和str2,并将结果放入str1中字符串连接函数strcat#include"stdio.h"#include"string.h"intmain(void){charstr1[80],str2[20];gets(str1);gets(str2);strcat(str1,str2);puts(str1);return0;}str1中:
Letus\0str2中:go.\0str1中:
Letusgo.\0str2中:go.\0Letusgo.
Letusgo.strcmp(str1,str2)比较两个字符串str1和str2的大小。规则:按字典序(ASCII码序)如果str1和str2相等,返回0;如果str1大于str2,返回一个正整数;如果str1小于str2,返回一个负整数;staticchars1[20]="sea";
字符串比较函数strcmpstrcmp(s1,"Sea");strcmp("Sea","Sea");strcmp("Sea","Sea");正整数负整数0#include“stdio.h”#include“string.h”intmain(void){intres;chars1[20],s2[20];gets(s1);gets(s2);res=strcmp(s1,s2);printf(“%d”,res);return0;}strcmp()示例12345-4利用字符串比较函数比较字符串的大小
strcmp(str1,str2);为什么定义这样的函数?用strcmp()比较字符串strcmp(str1,str2)>0strcmp(str1,“hello”)<0strcmp(str1,str2)==0str1>str2str1<“hello”str1==str2
比较字符串首元素的地址比较字符串的内容strlen(str)计算字符串的有效长度,不包括‘\0’。staticcharstr[20]=“Howareyou?”strlen(“hello”)的值是:strlen(str)的值是:字符串长度函数strlen512函数功能头文件puts(str)输出字符串stdio.hgets(str)输入字符串(回车间隔)strcpy(s1,s2)s2==>s1strcat(s1,s2)s1“+”s2==>s1若s1“==”s2,函数值为0
strcmp(s1,s2)若s1“>”s2,函数值>0string.h
若s1“<”s2,函数值<0计算字符串的有效长度,strlen(str)不包括‘\0’字符串处理函数小结intmain(){inti;intx,min;scanf("%d",&x);min=x;for(i=1;i<5;i++){scanf("%d",&x);if(x<min)min=x;}
printf("minis%d\n",min);return0;}例8-16求最小字符串#include<string.h>intmain(){inti;charsx[80],smin[80];scanf("%s",sx);strcpy(smin,sx);for(i=1;i<5;i++){scanf("%s",sx);if(strcmp(sx,smin)<0)strcpy(smin,sx);}
printf("minis%s\n",smin);return0;}28-1990
minis–1
toolkeyaboutzoosea
minisabout
8.5任意个整数求和问题*例8-17先输入一个正整数n,再输入任意n个整数,计算并输出这n个整数的和。要求使用动态内存分配方法为这n个整数分配空间。8.5.1程序解析intmain(){ intn,sum,i,*p;
printf("Entern:"); scanf("%d",&n);if((p=(int*)calloc(n,sizeof(int)))==NULL){printf("Notabletoallocatememory.\n"); e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CRISPR技术在耳聋基因研究中的突破
- 2026年成都建筑材料工业设计研究院有限公司招聘备考题库及参考答案详解1套
- 2026年公安县联通公司招聘备考题库完整参考答案详解
- 2026年四川汽车职业技术学院高职单招职业适应性测试模拟试题有答案解析
- 2026年宜宾市公安局公开招聘警务辅助人员备考题库(110人)完整答案详解
- 2026年内蒙古商贸职业学院单招综合素质考试备考试题带答案解析
- 2026年中船西南(重庆)装备研究院有限公司招聘机器人应用软件工程师、算法工程师等岗位备考题库及答案详解1套
- 2026年汕尾职业技术学院单招综合素质考试参考题库带答案解析
- 2025年为枣庄市检察机关公开招聘聘用制书记员的备考题库及参考答案详解1套
- 2026年广州市黄埔军校小学招聘备考题库及一套参考答案详解
- 2024年勤学之星个人事迹材料简介
- GB/T 2423.65-2024环境试验第2部分:试验方法试验:盐雾/温度/湿度/太阳辐射综合
- 人参培训课件
- 旅店突发事件预案
- 国家开放大学《民法学(1)》案例练习参考答案
- 健康中国2030规划纲要考试题库含答案全套
- HDPE缠绕-B型结构壁管施工方案
- 手术室PDCA-提高急诊手术器械物品准备的完善率
- 2023年普通高中学业水平等级性考试(浙江卷)政治(6月)(含解析)
- 模电课程设计(音响放大器)
- 排球社团教案
评论
0/150
提交评论