关闭

指针程序设计(三)

标签: fun存储windowsinifloatc
249人阅读 评论(0) 收藏 举报
分类:

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

一.实验目的

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28512次
    • 积分:856
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章存档
    最新评论