指针程序设计(三)

原创 2012年03月22日 13:20:24

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

一.实验目的

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);

}

 

 

 

继承与派生 编程题#2: 魔兽世界之二:装备(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)

编程题#2: 魔兽世界之二:装备来源: POJ (http://cxsjsxmooc.openjudge.cn/test/E/)注意: 总时间限制: 1000ms 内存限制: 65536kB描述 魔...
  • happyygdx
  • happyygdx
  • 2017年10月24日 14:56
  • 216

函数和指针程序设计(二)

实验七  函数和指针程序设计(二) 一.实验目的 1. 掌握函数的操作方法; 2. 掌握指针、指针数组访问方式的程序设计。 二.实验环境 1. 硬件:PII以上计算机; 2. 软件:Win...
  • megamirurutia
  • megamirurutia
  • 2012年03月22日 13:18
  • 467

指针实现—三个数交换的排序

#include int main() { void exchange(int *q1,int *q2,int *q3); int a,b,c,*p1,*p2,*p3; s...
  • nyist327
  • nyist327
  • 2014年03月26日 22:35
  • 989

C语言三个数排序(利用指针)

Use pointer to complete the assignment. define array for three integers. Write three functions, whi...
  • xy849288321
  • xy849288321
  • 2012年03月10日 21:25
  • 4340

程序设计的基本要素

数类型有:八基本 类定义运算符有  :算数值 比大小 判真假 取赋值 位运算流控制有:两选择 三循环 流跳转 函调用  说明:数据类型主要有boolean char byte int short lo...
  • ironcat
  • ironcat
  • 2006年09月13日 09:00
  • 908

程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)2:求一元二次方程的根

题目要求: 总时间限制:  1000ms 内存限制: 65536kB 描述 利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - ...
  • whatiwhere
  • whatiwhere
  • 2017年12月03日 17:25
  • 30

《C语言及程序设计》实践项目——指针及其运算

返回:贺老师课程教学链接  C语言及程序设计初步  【程序阅读题】写出以下程序运行的结果,上机对照结果后,解释其过程。(注意用手画内存变化过程,而不要仅凭大脑思考。)#include int mai...
  • sxhelijian
  • sxhelijian
  • 2015年01月09日 07:44
  • 2205

指针 例题:报数

有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。 代码: #include using namespace std; int ...
  • yew1eb
  • yew1eb
  • 2013年03月18日 10:12
  • 1476

三个数的排序--指针法

/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: fun.cpp * 作 者:...
  • wangfei5217
  • wangfei5217
  • 2012年12月18日 12:53
  • 1354

程序设计C 实验三 题目五 求二阶逆矩阵(0285)

Description 输入大小为2*2的距阵。 Input 输出一个大小为2*2的距阵,矩阵每一行相邻的的两个数字之间由一个空格隔开。具体的请详见 Sample Outpu...
  • hzj96421
  • hzj96421
  • 2015年04月09日 19:12
  • 870
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针程序设计(三)
举报原因:
原因补充:

(最多只允许输入30个字)