您好,欢迎访问三七文档
2写结果#includestdio.hintmain(){intk=5,m=7,n=9;int*pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(%d\n,n);return0;}353写结果2143voidfun(int*x,int*y){printf(%d%d,*x,*y);*x=3;*y=4;}intmain(){intx=1,y=2;fun(&y,&x);printf(%d%d\n,x,y);return0;}4写结果-5,-12,-7#includestdio.hvoidsub(intx,inty,int*z){*z=y-x;}intmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(%d,%d,%d\n,a,b,c);return0;}5写结果3,4#includestdio.hvoidfun(float*a,float*b){floatw;*a=*a+*a;w=*a;*a=*b;*b=w;}intmain(){floatx=2.0,y=3.0;float*px=&x,*py=&y;fun(px,py);printf(%2.0f,%2.0f\n,x,y);return0;}6写结果#includestdio.hvoidsub(floatx,float*y,float*z){*y=*y-1.0;*z=*z+x;}intmain(){floata=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;sub(b-a,pa,pa);printf(%.2f\n,a);return0;}8.007写结果10#includestdio.hintmain(){intarr[]={30,25,20,15,10,5},*p=arr;p++;printf(%d\n,*(p+3));return0;}8写结果6voidfunc(int*a,intb[]){b[0]=*a+6;}intmain(){inta,b[5];a=0;b[0]=3;func(&a,b);printf(%d\n,b[0]);return0;}9写结果xybcd#includestdio.h#includestring.hintmain(){char*p1,str[50]=xyz;p1=abcd;strcpy(str+2,p1+1);printf(%s\n,str);return0;}10写结果w,one#includestdio.hintmain(){char*s[]={one,two,three},*p;p=s[1];printf(%c,%s\n,*(p+1),s[0]);return0;}11写结果abcDDfefDbDvoidss(char*s,chart){while(*s){if(*s==t)*s=t-32;s++;}}intmain(){charstr1[100]=abcddfefdbd,c='d';ss(str1,c);printf(%s\n,str1);return0;}12编程:将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。(请用指针完成)练习13程序:#includestdio.hintmain(){charx[]=computer;char*p;for(p=x;px+7;p+=2)putchar(*p);printf(\n);return0;}14编程:将一个十进制整数转换成二进制数,并把此二进制数的每一位放在一维数组b中,然后输出b数组。(注意:二进制数的最低位放在数组的第一个元素中)练习15程序:#includestdio.hintmain(){intb[16],x,k,r,i;printf(请输入一个整数:);scanf(%d,&x);printf(%d的二进制数是:,x);k=-1;do{r=x%2;k++;*(b+k)=r;x/=2;}while(x!=0);for(i=k;i=0;i--)printf(%d,*(b+i));printf(\n);return0;}16编程:函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。练习17程序:#includestdio.hintmain(){intb[10]={11,5,12,0,3,6,9,7,10,8},n=10,i;voidfun();for(i=0;i10;i++)printf(%d,b[i]);printf(\n);fun(b,n);for(i=0;in;i++)printf(%d,b[i]);printf(\n);return0;}voidfun(int*a,intn){inti,m,t,k;for(i=0;i2;i++){m=i;for(k=i;kn;k++)if(a[k]a[m])m=k;t=a[i];a[i]=a[m];a[m]=t;}}18编程:函数fun的功能,将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位。例如,当s为87653142时,t中的数为7531练习19程序:#includestdio.hvoidfun(longs,long*t){intd;longs1=1;*t=0;while(s0){d=s%10;if(d%2!=0){*t=*t+d*s1;s1*=10;}s/=10;}}intmain(){longs,t;printf(请输入一个数);scanf(%ld,&s);fun(s,&t);printf(结果是%ld\n,t);return0;}20思考请编写函数fun的功能:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如:当s中的数为7654321时,t中的数位64221编程:请编写函数fun,其功能是将s所指字符串中下标为偶数的字符删除,串中剩余字符形成一个新串放在t数组中。例如:s所指字符串内容为:ABCDEFGHIJK,则在t数组中的内容为:BDFHJ练习22程序:#includestdio.h#includestring.hvoidfun(char*s,chart[]){inti,j=0,n=strlen(s);for(i=0;in;i++)if(i%2!=0){t[j]=s[i];j++;}t[j]='\0';}intmain(){chars[50],t[50];printf(请输入一个字符串);gets(s);fun(s,t);printf(删除偶数下标的结果是%s\n,t);return0;}*t23编程:将给定的字符串按逆序存放练习24程序:#includestring.h#includestdio.hintmain(){chara[]=abcdefghi;charfun();intk;fun(a);puts(a);return0;}charfun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;xy;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}25假定输入的字符串中包含字母和*号。请编写函数fun,它的功能是将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,字符串的内容:“****A*BC**D***”,删除后,字符串的内容:“****A*BC**D”。练习26程序:#includestdio.h#includestring.hvoidfun(char*a){inti=0;char*p,*q;p=q=a;while(*p)p++;p--;while(*p=='*')p--;while(q=p){a[i]=*q;i++;q++;}a[i]='\0';}intmain(){chars[80];printf(请输入一个字符串);gets(s);fun(s);printf(删除尾部的星号后);puts(s);return0;}27思考假定输入的字符串中包含字母和*号。请编写函数fun,它的功能是将字符串中的全部*号删除。例如,字符串的内容:“****A*BC**D***”,删除后,字符串的内容:“ABCD”。28程序:#includestdio.h#includestring.hvoidfun(char*a){inti=0;char*p;p=a;while(*p!='\0'){if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';}intmain(){chars[80];printf(请输入一个字符串);gets(s);fun(s);printf(删除所有的星号后);puts(s);return0;}29思考假定输入的字符串中包含字母和*号。请编写函数fun,它的功能是将字符串中的前到部*号删除。(即第一个字符前的星号)例如,字符串的内容:“A*BC**D***”,删除后,字符串的内容:“A*BC**D***”。30程序:#includestdio.h#includestring.hvoidfun(char*a){inti=0;char*p;p=a;while(*p=='*')p++;while(*p!='\0'){a[i]=*p;i++;p++;}a[i]='\0';}intmain(){chars[80];printf(请输入一个字符串);gets(s);fun(s);printf(删除前部的星号后);puts(s);return0;}31思考假定输入的字符串中包含字母和*号。请编写函数fun,它的功能是将字符串中的前导*号全部移到字符串的尾部。例如,字符串的内容:“****A*BC**D***”,删除后,字符串的内容:“A*BC**D*******”。32练习完成程序,请编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串abcdefabcdeabceabcdef,子字符串为cd,则应当输出333完成程序:#includestdio.h#includestring.hintmain(){charstr[81],substr[3];intn;intproc(char*str,char*substr);printf(请输入主字符串:);gets(str);printf(请输入子字符串:);gets(substr);puts(str);puts(substr);n=proc(str,substr);printf(出现的次数n=%d\n,n);return0;}34完成程序(续)intproc(char*str,char*substr){填写程序}35参考答案intproc(char*str,char*substr){inti,j=0;for(i=0;str[i+1]!='\0';i++)if(str[i]==substr[0]&&str[i+1]==substr[1])j++;returnj;}
本文标题:指针练习
链接地址:https://www.777doc.com/doc-5755783 .html