实验八 指针程序设计(二)
一.实验目的
1. 掌握指针的基本概念与操作方法;
2. 掌握字符指针、指针函数访问方式的程序设计。
二.实验环境
1. 硬件:PII以上计算机;
2. 软件:Windows、Visual C++ 6.0;
3. 其它:一张软盘或者U盘等可移动的存储设备。
三.实验内容
练习1.用指针变量的处理方法编写一个程序,功能为统计某一字符在字符串“This is a c/c++
program.”中出现的次数。
要求:程序中不得出现数组。 运行结果示例:
练习2.用指针变量的处理方法编写一个程序,其中包含一个子函数,功能为将字符串s中
的字符c1用字符c2替换。
子函数形式为:void replace(char *str,char c1,char c2); 运行结果示例:
练习3.编写一个程序,其中包含一个子函数,功能为将字符串s2中所有未出现在s1中的
字母添加到s1的末尾,然后输出。要求:
?
子函数形式为:char *addat(char *s1,char *s2);即:使用指针型函数
的方式定义子函数,函数返回值为字符串s1的地址。 运行结果示例:
练习4.编写一个程序,功能为读入多个正整数(以输入-1作为结束标志),输出其中的最
大值、最小值。
?
要求:所有数据均不得使用整型变量,而全部使用malloc( )函数。
提示:申请创建3个空间,分别用一个指针加以指向(例如:int *p,*max,*min;)。
?
练习5.编写一个程序,其中包含一个子函数,功能为统计一个字符串在另一个字符串中出现的次数。要求:
?
子函数形式为:int strat(char *a,char *sub); 主函数中使用函数指针变量的方式调用子函数;
?
运行结果示例:
练习6.用指针数组的处理方法编写一个程序,其中包含一个子函数,功能为从键盘输入四
个字符串,找出其值最小的一个字符串。 子函数形式为:int min(char *p[],int n);
(其中:n为字符串的个数,子函数返回值为最小字符串的指针数组元素的下标) 运行结果示例:
答案
1.t
#include
int i=0,j=0;
char c,*a=\ cout<<\字符串为:\ cout<<\输入字符:\ cin>>c;
cout<<\字符\出现的次数:\ for(i=0;i<24;i++) if(*(a+i)==c) j++; cout< #include void replace(char *str,char c1,char c2) { int i; for(i=0;i<20;i++) if(*(str+i)==c1) *(str+i)=c2; } void main() { char s[20],s1,s2,*p; p=s; printf(\输入字符串:\ gets(s); cout<<\输入被替换的字符:\ cin>>s1; cout<<\输入新字符:\ cin>>s2; cout<<\新的字符串:\ replace(p,s1,s2); cout< #include char *addat(char *s1,char *s2) { char *p; while (*s2) {p=s1; while(*p&&*s2!=*p)p++; if((p-s1)==strlen(s1)) { *p=*s2; *(p+1)='/0'; } s2++; } return s1; } void main() { char s1[20],s2[20]; printf(\输入字符串s1:\ gets(s1); printf(\输入字符串s2:\ gets(s2); cout<<\结果:\} 4. #include int *p,*max,*min; p=(int*)malloc(sizeof(int)); max=(int*)malloc(sizeof(int)); min=(int*)malloc(sizeof(int)); cout<<\输入一组正整数(以-1结束):\ cin>>*p; *max=*min=*p; while(*p!=-1) { cin>>*p; if(*p>*max)*max=*p; if(*p<*min&&*p>0)*min=*p; } cout<<\最大值:\ cout<<\最小值:\ free(p); free(max); free(min); } 5. #include int strat(char *a,char *sub) { int i,k,x,y,t=0; x=strlen(a); y=strlen(sub); for(i=0;i