资源描述
实验十一 指 针(二)一、实验目的1.掌握指针变量的定义与引用。2.掌握指针与变量、指针与数组的关系。3.掌握用数组指针作为函数参数的方法。4.掌握字符指针和字符串的使用。二、实验内容1阅读、调试、运行程序,比较阅读的结果和运行的结果。(1)#include int b=2;int func(int *a) b+=*a; return(b); void main()int a=2,res=2;res+=func(&b);printf(%dn,res);(2)#includevoid main() static char a=Language,b=programe; char *p1,*p2; int k; p1=a;p2=b; for(k=0;k=7;k+) if(*(p1+k)=*(p2+k) printf(%c,*(p1+k); (3)#includevoid main() int x5=2,4,6,8,10,*p,*pp; p=x; pp=&p; printf(%d,*(p+); printf(%dn,*pp);(4)#includeint sub(int *s);void main() int i,k; for(i=0;i4;i+) k=sub(&i); printf(%2d,k); printf(n);int sub(int *s)static int t=0; t=*s+t; return t;(5)#include#define N 5int fun(char *s,char a,int n) int j; *s=a; j=n; while(*ssj) j-; return j;void main() char cN+1; int i; for(i=1;i=N;i+) *(c+i)=A+i+1; printf(%dn,fun(c,E,N);(6)#includevoid main() char a80,b80,*p=aAbcdDefgGH; int i=0,j=0; while(*p!=0) if(*p=a&*p=z) ai=*p;i+; else bj=*p;j+; p+; ai=bj=0; puts(a);puts(b);(7)#includevoid main()int a33=1,2,3,4,5,6,7,8,9,*p4,*q=p; for(int i=0;i3;i+) pi=&ai0; for( i=0;i3;i+) printf(%4d,*(*(q+i)+i);2. 完善程序,并调试运行(1)下面程序是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串,如level)。#include#include void main()char s81,*p1,*p2;int n;gets(s);n=strlen(s);p1=s;p2= ;while( )if(*p1!=*p2) break;elsep1+; ;if(p1p2) printf(non);else printf(yesn);(2)以下程序通过指针数组p和一维数组a构成如下所示的二维数组的左下半三角结构,然后输出。16 711 12 13 16 17 18 1921 22 23 24 25#include void main()int a15,*p5,i,j,in,n; for(i=0;i5;i+) in=i*(i+1)/2; pi=; for(i=0;i5;i+) n=1; for(j=0;j=i;j+) *(pi+j)=; n+; for(i=0;i5;i+) for(j=0;j+) printf(%-4d,pij); printf(n);(3)下面程序的功能是输出一个字符中以某个字符开始的子字符串。#include stdio.hchar * find(, char c)char *p=s; while(*p!=c&*p!=0) p+; ;void main()char a81,c,*p; scanf(%sn,a); c=getchar(); p=; puts(p);(4)下面程序是按逆序输出各字符串。#include stdio.hvoid main()char *str=Pascal,C language,Basic,Coble; char ; int k; p=str+3; for(k=0;k4;k+) printf(%sn,);3. 修正程序,并调试运行(1)下面程序的功能是输出数组b中的10个元素。#include stdio.hvoid main()int b10=1,2,3,4,5,6,7,8,9,10,k;/*found*/ for(k=0;k10;k+,b+)/*found*/ printf(%4d,*b);(2)本程序的功能是输出二维数组中每行最大的元素。#include stdio.hvoid main()int a44,*s4,i,j; for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d,&aij); for(i=0;i4;i+)/*found*/ si=a+i; for(j=1;j4;j+) if(*siaij)/*found*/ si= aij; for(i=0;i4;i+)/*found*/ printf(%4d,si);
展开阅读全文