Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107858
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类:

2012-05-08 00:48:39

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

一.实验目的

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

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

二.实验环境

1 硬件:PII以上计算机;

2 软件:WindowsVisual C++ 6.0

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

三.实验内容

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

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

运行结果示例:

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

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

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

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

要求:

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

l 子函数负责调整数据顺序,函数形式为:int rearrange(int *sint 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<

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

gets(s2);

cout<

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<

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

}

练习3

#include"iostream.h"

#include"stdio.h"

#include"stdlib.h"

void main()

{

intrearrange(int *sint n);

intn,*s,i,m;

printf("");

cin>>n;

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

printf("");

for(i=0;i

{

*s=rand()%20;

cout<<*s;

}

m=rearrange(s,n);

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

cout<<""<

}

int rearrange(int *sint n)

{

int

for(i=0;i

{

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

{

t=*(s+i);

for(j=0;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<输入字符串s2";gets(s2);

cout<结果:"<

}

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

}

 

 

 

阅读(360) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~