C语言指针习题.ppt
10.1C程序设计答案答案:C1.若有说明语句若有说明语句:int a10,*p=a;则对数组元素的正确引则对数组元素的正确引用是:用是:)a10 B)pa C)*(p+2)D)p+22.下面程序的运行结果是下面程序的运行结果是:main()char a=“language”,b=“programe”;char*p1=a,*p2=b;int k;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k)printf(“%c”,*(p1+k);A)gae B)ga C)language D)有语法错误有语法错误答案答案:A10.2C程序设计3.下面程序的运行结果是下面程序的运行结果是:main()int x=0,1,2,3,4,5,6,7,8,9;int s,i,*p;s=0;p=&x0;for(i=1;i10;i+=2)s+=*(p+i);printf(“sum=%d”,s);答案:答案:25(1357925)10.3C程序设计4.4.下面程序的功能是删除字符串中的数字字符并输出,填空完成程序。下面程序的功能是删除字符串中的数字字符并输出,填空完成程序。#include”stdio.h”void deln(char*s)int i,j;for(i=0,j=0;si!=0;i+)if(si9)sj=si;j+;(2);main()char itm80;gets(itm);deln(itm);printf(“n%s”,(3);答答 案案:(1)|(2)sj=0(3)itm10.4C程序设计5.下面程序通过行指针下面程序通过行指针p输出数组输出数组a 中任意元素中任意元素值,填空。值,填空。main()int a23=2,4,6,8,2,1;int(*p)3=a,i,j;scanf(“%d,%d”,&i,&j);printf(“a%d%d=%dn”,i,j,(1 );6、下面程序的运行结果是:void sub(int*s,int*y)static int t=3;*y=st;t-;main()int a=1,2,3,4,k,x;printf(“n”);for(k=0;k4;k+)sub(a,&x);printf(“%d”,x);答案:4,3,2,1,答案:*(*(p+i)+j)10.5C程序设计7.以下程序的功能是查找数组中最大元素的值及下标,填空以下程序的功能是查找数组中最大元素的值及下标,填空main()int a10,*p,*s,i;for(i=0;i10;i+)scanf(“%d”,(1);for(p=a,s=a;(2)*s)s=(3);printf(“max=%d,index=%d”,*s,s-a);(1)a+i(2)p-a(3)p10.6C程序设计8.以下程序的功能是运用指针找出三个整数中的最小值并输出。填空以下程序的功能是运用指针找出三个整数中的最小值并输出。填空main()int*a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;scanf(“%d,%d,%d”,&x,&y,&z);printf(“%d,%d,%dn”,*a,*b,*c);num=*a;if(*a*b)(1);if(num*c)(2);printf(“最小数为:最小数为:%dn”,num);(1)num=*b(2)num=*c10.7C程序设计1.用指针法实现:输入用指针法实现:输入3个字符串,输出其中最大的字符串。个字符串,输出其中最大的字符串。分析:设3个字符数组、1个指针变量,首先使指针变量指向第一个字符数组#include”string.h”main()char str180,str280,str380,*pr;pr=str1;gets(str1);gets(str2);gets(str3);if(strcmp(pr,str2)0)pr=str2;if(strcmp(pr,str3)0)pr=str3;puts(pr);10.8C程序设计2.用指针法实现用指针法实现:输入输入2个字符串,将其连接后输出。个字符串,将其连接后输出。#include”stdio.h”main()char str180,str230,*pr1,*pr2;pr1=str1;pr2=str2;gets(pr1);gets(pr2);puts(pr1);puts(pr2);while(*pr1!=0)pr1+;while(*pr1+=*pr2+)!=0);pr1=str1;puts(pr1);10.9C程序设计3.用指针法实现:输入用指针法实现:输入10个整数,个整数,将其中最大数与最后一个数交换,将其中最大数与最后一个数交换,最小数与第一个数交换最小数与第一个数交换main()int a10,i,max,min,*p1,*p2,m,n;for(i=0;i10;i+)scanf(“%d”,&ai);max=min=a0;m=n=0;p1=&m;p2=&n;for(i=1;i10;i+)if(maxai)min=ai,n=i;for(i=0;i10;i+)printf(“%d ”,ai);printf(“n”);a*p1=a9;a9=max;a*p2=a0;a0=min;for(i=0;i10;i+)printf(“%d ”,ai);