小结.docx
- 文档编号:24325268
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:32
- 大小:21.84KB
小结.docx
《小结.docx》由会员分享,可在线阅读,更多相关《小结.docx(32页珍藏版)》请在冰豆网上搜索。
小结
2使用函数调用,形参为指针,实参为数组,把一个数组逆序存放在输出
#include
voidinv(int*x,intn);
voidmain()
{inti,a[10]={3,7,9,11,0,6,7,5,4,2};
inv(a,10);
for(i=0;i<10;i++)
cout< } voidinv(int*x,intn) {int*p,t,*i,*j,m=(n-1)/2; i=x;j=x+n-1;p=x+m; for(;i<=p;i++,j--) {t=*i;*i=*j;*j=t; } } voidinv(intx[],intn) {intt,i,j,m=(n-1)/2; for(i=0;i<=m;i++) {j=n-1-i; t=x[i];x[i]=x[j];x[j]=t; } } 1: 写出下列程序运行结果: #include voidmain() {int*pn,n=10,m=20; float*pf,px=3.14159,py=2.71828; pn=&n; *pn+=m; cout<<”n现在的值是: ”<<*pn< pf=&px; py+=5*(*pf); cout<<”py现在的值是: ”< } 运行结果是: n现在的值是: 30 pf现在的值是: 18.42623 分析: 指针是通过在变量前加一个“*”来定义,使用用“*”加变量名存取指针所指的值,用运算“&”取变量的地址,但是不能存取无指向的指针所指向内容,这样会导致系统故障。 #include voidmain() {intI,*p,a[]={10,20,30,40,50,60}; p=a; for(I=0;I<5;I++) cout<<”a[“< <<’\t’<<”*(p+”< } 运行结果: a[0]=10*(a+0)=10*(p+0)=10p[0]=10 a[1]=20*(a+1)=20*(p+1)=20p[1]=20 a[2]=30*(a+2)=30*(p+2)=30p[2]=30 a[3]=40*(a+3)=40*(p+3)=40p[3]=40 a[4]=50*(a+4)=50*(p+4)=50p[4]=50 a[5]=60*(a+5)=60*(p+5)=60p[5]=60 3: voidgrt(int*x,int*y,int*z) {cout<<++*x<<‘,’<<++*y<<‘,’<<*(z++)< inta=10,b=40,c=20; voidmain() {prt(&a,&b,&c); prt(&a,&b,&c); } 答案: 11,41,20, 12,42,20 4staticinta[]={1,3,5,7,11,13}; main() {int*p; p=a+3; cout<<*p<<'\t'<<(*p++)< cout<<*(p-2)<<'\t'<<*(a+4)< } 答案11,7 5,11 #include #include voidchange()//1 {inti=0; for(i=0;;i++)//2 if(a[i]>='a'&&a[i]<='z') ;//3 } voidmain() {charp[80]; cout<<"\n"; cin.getline(p,80);//读一行字符,中间可以有空格 change(p); cout< } 如程序运行时得到以下结果: 请输入一行字符: Thisisabook.. THISISABOOK. 答案: (1)char*a或chara[80] (2)a[i]或a[i]! =’\0’ (3)a[i]=a[i]–32 分析: (1) 由指针和字符串关系知: 当实参是数组,形参可以是字符串变量,也可以是字符指针变量。 (2)循环语句结束条件是字符标记’\0’。 (3)大写字母的ASCII码比小室字母的ASCII码小32。 例题12: 下列函数swap实现数据交换功能功能,请填空。 #include voidswap(int*p,int*q) {inttemp; temp=*p; ;//1 ;//2 } voidmain() {inta,b; int*p1,*p2; cout<<"请输入两个正数: "; cin>>a>>b; p1=&a; p2=&b; swap(p1,p2); cout<<"结果a和b的值: "< } 如程序运行时得到以下结果: 请输入两个正数: 1020 结果a和b的值: 20,10 答案: (1) *p=*q (2) *q=temp; 分析: 实参和形参都是指针变量,所以指针变量p1和p指向同一个地址,同样p2和q也指向同一个地址。 函数swap()是交换两个数,故应填写语句*p=*q、*q=temp。 3: 下列函数sort实现对字符串按字典顺序由小到大排序,请填空。 #include #include voidsort()//1 {char;//2 inti,j; for(i=0;i for(j=0;j if(strcmp()//3 {temp=p[j]; ;//4 p[j+1]=temp; } } voidmain(){ char*a[5]={"student","worker","cadre","soldier","apen"}; sort(a,5); for(inti=0;i<5;i++) cout< } 程序运行结果如下: apen cadre soldier student worker 答案: (1)char*p[],intn (2)*temp (3)p[j],p[j+1])>0 (4)p[j]=p[j+1] 分析: (1)由实参得知函数sort()有两个形参,根据上题得char*p[],intn。 (2)有下面语句temp=p[j]可以得到temp是字符中指针。 (3)根据冒泡排序方法和字符串比较函数得到p[j],p[j+1])>0。 (4)字符串指针可以通过赋值语句传递值,字符串变量不能够使用赋值语句传递值。 1. #include voidmain() { inta[]={5,4,3,2,1}; int*p=&a[2]; intm(5),n; for(inti (2);i>=0;i--) { n=(*(p+i)<*a)? *(p+i): *a; cout< } } 答: 1 2 3 2. #include voidmain() { char*p1,*p2; p1="abcqrv"; p2="abcpqo"; while(*p1&&*p2&&*p2++==*p1++) ; intn=*(p1-1)-*(p2-1); cout< } 答: 1 3. #include inta[]={10,9,6,5,4,2,1}; voidmain() { intn(7),i(7),x(7); while(x>*(a+i)) { *(a+i+1)=*(a+i); i--; } *(a+i+1)=x;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小结