w=*a; *a=*b; *b=w; }
main() {
int x=9,y=5,*px=&x,*py=&y; fun(px,py);
printf(\}
【23】sub(float x,float *y,float *z) {
*y=*y-1.0; *z=*z+x; }
main() {
float a=2.5,b=0,*pa,*pb; pa=&a;pb=&b; sub(b-a,pa,pb); printf(\}
【24】main() {
static char a[]=\ char *p1,*p2; int k; p1=a; p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k)) printf(\}
【25】main() {
int i,k;
for(i=0;i<4;i++) {
k=sub(&i);
printf(\ }
printf(\}
sub(int *s)
{
static int t=0; t=*s+t; }
【26】#include \main() {
char a[]=\ int i=0; p=a;
while(*p) {
if(i%2==0) *p='*'; p++;i++; }
puts(a); }
【27】main() {
int x[]={0,1,2,3,4,5,6,7,8,9}; int s,i,*p; s=0; p=&x[0];
for(i=1;i<10;i+=2) s+=*(p+i);
printf(\ }
5 编程题
【28】编写一个使用指针的C函数,交换数组a和数组b中对应元素。 【29】编写函数,通过指针连接两个字符串。
【30】产生动态数组。编写程序,输入数组大小后,通过动态分配内存函数malloc产生数组。
指针练习题答案
1 填空题
【1】 int *z *z
【2】 (1)char *p; (2)p=&ch ; (3)scanf(”%c”,p);
(4)*p=’A’; (5)printf(“%c”,*p); (6)2 1 2 选择题
【3】B 【4】A 【5】C 【6】D 【7】C 【8】D 【9】B 【10】C 3 改错题
【11】 main( )
{ int a=1,b=2;
printf(“a=%d b=%d\\n”,a,b); swap(&a,&b); printf(“a=%d b=%d\\n”,a,b); }
swap ( int *p1, int *p2) { int p; p=*p1; *p1=*p2;*p2=p; }
【12】void add (int a,int b,int *c) { *c=a+b; /*return c;删除*/ }
main( )
{ int *ap,*bp,a,b,c; ap=&a,bp=&b;
scanf(“%d %d”,ap,bp); add(a,b,&c); printf(“%d\\n”,c); }
4 读程序写结果
【13】︼2︼3︼4<换行>︼2︼5︼0 【14】a=10,b=20<换行>a=10,b=10
【15】1,2<换行>1,2<换行>2,1<换行>2,1 【16】9,8,7,6,5,40,30,20,10, 【17】BAABBB 【18】10,10,10 【19】100 【20】-20,-20 【21】-5,14,19 【22】5,18 【23】1.500000 【24】gae
【25】︼︼0︼︼1︼︼3︼︼6 【26】*2*4*6*8* 【27】sum=25 5 编程题
【28】 #include
swap(int *pa,int *pb) { int temp;
temp=*pa;*pa=*pb;*pb=temp; }
main()
{ int a[5]={1,2,3,4,5};
int b[5]={10,20,30,40,50}; int i;
for(i=0;i<5;i++)
swap(&a[i],&b[i]); for(i=0;i<5;i++)
printf(\ printf(\ for(i=0;i<5;i++)
printf(\ printf(\}
【29】 #include
char *strcat(char *str1,char *str2) { char *p=str1;
while(*p!='\\0') p++; while(*p++=*str2++); return(str1); }
main()
{ char a[50],b[30];
printf(\ printf(\ printf(\}
【30】 #include
#include
{ int *p,n,i;
printf(\
scanf(\