指针程序设计(三)

实验九  指针程序设计(三)

一.实验目的

1. 掌握指针的基本概念与操作方法;

2. 掌握指针、指针函数访问方式的程序设计。

二.实验环境

1. 硬件:PII以上计算机;

2. 软件:Windows、Visual C++ 6.0;

3. 其它:一张软盘或者U盘等可移动的存储设备。

三.实验内容

练习1.编写一个程序,其中包含一个子函数,功能为比较两个字符串,将长的那个字符串的首地址作为子函数的返回值,然后在主函数中输出。要求:

l      子函数形式为:char *fun(char*s1,char *s2);

运行结果示例:

练习2.编写一个程序,功能为读入多个正整数(以输入-1作为结束标志),输出其中的最大值、最小值。

l         要求:所有数据均不得使用整型变量,而全部使用malloc( )函数。

l         提示:申请创建3个空间,分别用一个指针加以指向(例如:int*p,*max,*min;)。

练习3.编写一个程序,其中包含一个子函数,功能为:产生n个0~20之间的随机数,调整数据排列顺序,使得所有的奇数排在非奇数之前,然后输出。

要求:

l         存储随机产生的一组数据时,不得使用数组,而使用calloc( )函数;

l      子函数负责调整数据顺序,函数形式为:int rearrange(int *s,int n);

其中n是数据的总个数,子函数返回奇数的个数。

l         程序中对数据的处理全部使用指针方式。

运行结果示例:

练习4.编写一个程序,其中包含一个子函数,功能为将字符串s2中所有未出现在s1中的字母添加到s1的末尾,然后输出。要求:

l      子函数形式为:char *addat(char *s1,char*s2);即:使用指针型函数的方式定义子函数,函数返回值为字符串s1的地址。

运行结果示例:

练习5.编写一个程序,其中包含一个子函数,功能为统计一个字符串在另一个字符串中出现的次数。要求:

l      子函数形式为:int strat(char *a,char*sub);

l      主函数中使用函数指针变量的方式调用子函数;

运行结果示例:

*练习6.编写一个实现串通配符匹配的函数pattern_index( ),其中的通配符只有”?”,它可以和任一字符匹配成功。例如,pattern_index( “?re”,”thereare”)返回的结果是2。要求:

l         子函数形式为:int pattern_index(char *a,char *sub);

 

练习1:

#include"stdio.h"

#include"iostream.h"

#include"string.h"

void main()

{

       char*fun(char *s1,char *s2);

       char*s1,*s2;

       char*p;

       printf("输入s1字符串:");

       gets(s1);

       cout<<endl;

       printf("输入s2字符串:");

       gets(s2);

       cout<<endl;

       p=fun(s1,s2);

       printf("较长的字符串为:%s",p);

}

char *fun(char *s1,char *s2)

{

       intm,n;

       m=strlen(s1);

       n=strlen(s2);

       if(m>n)return(s1);

       elsereturn(s2);

}

 

练习2:

#include"iostream.h"

#include"stdio.h"

#include"stdlib.h"

void main()

{

       int*p,*max,*min;

       inti;

       p=(int*)malloc(sizeof(float));

       max=(int*)malloc(2);

       min=(int*)malloc(2);

       printf("输入一组正整数(以-1结束):\n");

       cin>>*p;

       *max=*p;

       *min=*p;

       for(i=0;;i++)

       {

              cin>>*p;

              if(*p==-1)break;

              if(*p>*max)*max=*p;

              if(*p<*min)*min=*p;

       }

       cout<<"最大值:"<<*max<<endl;

       cout<<"最小值:"<<*min<<endl;

}

 

练习3:

#include"iostream.h"

#include"stdio.h"

#include"stdlib.h"

void main()

{

       intrearrange(int *s,int n);

       intn,*s,i,m;

       printf("");

       cin>>n;

       s=(*int)calloc(n,sizeof(int));

       printf("");

       for(i=0;i<n;i++,s++)

       {

              *s=rand()%20;

              cout<<*s;

       }

       m=rearrange(s,n);

       printf("%s\n",s);

       cout<<""<<m<<""<<endl;

}

int rearrange(int *s,int n)

{

       int

       for(i=0;i<n;i++)

       {

              if(*(s+i)%2!=0)

              {

                     t=*(s+i);

                     for(j=0;j<i;j++)*s[j+1]=*s[j];

                     m=0;

                     *(s+m)=t;

                     m++;

              }

 

练习4:

#include"iostream.h"

#include"stdio.h"

void main()

{

       char*addat(char *s1,char *s2);

       charstr1[80],str2[80];

       char*s1=str1,*s2=str2;

       cout<<"输入字符串s1:";gets(s1);

       cout<<endl<<"输入字符串s2:";gets(s2);

       cout<<endl<<"结果:"<<addat(s1,s2)<<endl;

}

char *addat(char *s1,char *s2)

{

       char*p=s1;

       for(;*s2!='\0';)

       {

              for(;*s1!='\0';s1++)

              {

                     if(*s1==*s2)break;

                     else*s1=*s2;

              }

              *(s1+1)='\0';

              s2++;

       }

       return(p);

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供PPT文件,但我可以向您提供一些关于C语言程序设计指针的基本信息。指针在C语言中是非常重要的概念,它允许我们直接访问和操作内存地址。以下是一些关于指针的基本知识: 1. 指针的定义:指针是一个变量,其值为内存地址。我们可以使用指针存储变量的地址,并通过解引用操作符(*)来访问或修改该地址上的值。 2. 指针的声明和初始化:指针变量的声明需要指定所指向的数据类型。例如,声明一个指向整数的指针可以这样写:int *ptr;,其中 * 表示指向整数的指针。 3. 取址运算符(&):取址运算符用于获取一个变量的地址。例如,如果有一个整数变量x,可以使用 &x 来获取它的地址。 4. 解引用运算符(*):解引用运算符用于访问指针所指向的内存地址上的值。例如,如果有一个指向整数的指针ptr,可以使用 *ptr 来获取该地址上存储的值。 5. 指针和数组:在C语言中,数组名本身就是一个指向数组首元素的指针。因此,我们可以使用指针来对数组进行操作。 6. 动态内存分配:C语言提供了几个函数(如malloc、calloc和realloc)来在运行时动态分配内存。这些函数返回一个指向分配内存的指针,我们可以使用该指针来访问和操作分配的内存。 这些是关于C语言程序设计指针的一些基本知识点。希望对你有所帮助!如果你有任何更具体的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值