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

全部博文(106)

文章存档

2012年(106)

我的朋友

分类: C/C++

2012-05-08 00:46:09

实验八 指针程序设计(二)

一.实验目的

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

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

二.实验环境

1 硬件:PII以上计算机;

2 软件:WindowsVisual 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用指针数组的处理方法编写一个程序,其中包含一个子函数,功能为从键盘输入四个字符串,找出其值最小的一个字符串。

子函数形式为:int min(char *p[],int n)

(其中:n为字符串的个数,子函数返回值为最小字符串的指针数组元素的下标)

运行结果示例:

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

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

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

运行结果示例:

练习5利用随机数生成一个M*M的二维数组(数据在020范围),以4*4矩阵为例:

分别以上三角和下三角形式显示矩阵;

子函数形式:void out(int *p[]);

求出矩阵两条对角线上所有元素之和;

子函数形式:void add(int *p[]);

将矩阵的第一行与最后一行对应元素交换位置存储,并输出新矩阵的结果。

子函数形式:void exchange(int *p[]);

程序要求:程序中对数组的处理全部使用指针数组方式。

运行结果示例:

*练习6编写一个程序,其中包含一个子函数,功能为将a,b两个字符串中共有的字符存储至数组c中并输出。要求:

l 子函数形式为:void seek(char *a,*b,*c)

指定测试数据:

练习1

#include"iostream.h"

#include"stdio.h"

void main()

{

chara,*p;

inti=0;

p="Thisis a c/c++ program.";

cout<<"字符串为:";

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

cout<<"输入字符:";

cin>>a;

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

if(*p==a)i++;

cout<<"字符"<出现的次数:"<

}

练习2

#include"iostream.h"

#include"stdio.h"

#include"string.h"

void main()

{

void replace(char *str,char c1,char c2);

char s[80],c1,c2;

printf("输入字符串:"); gets(s);

cout<<"输入被替换字符:";cin>>c1;

cout<<"输入新字符:";cin>>c2;

replace(s,c1,c2);

printf("新的字符串:%s\n",s);

}

voidreplace(char *str,char c1,char c2)

{

char *p=str;

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

if(*p==c1)*p=c2;

}

练习3

#include"stdio.h"

#include"string.h"

void main()

{

intmin(char *p[],int n)

chars[4][30],*p[4]=s[0];

inti,m;

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

gets(p[i]);

m=min(p,4);

printf("最小的字符串为:%s",p[m]);

}

intmin(char *p[],int n)

{

intn=0,j;

for(j=0;j<3;j++)

{

if(strcmp(p[j],p[j+1])<0) n=j;

elsen=j+1;

}

return(n);

}

练习4

#include

#include

#include

int strat(char *a,char *sub)

{

char*p1=a,*p2=sub;

inti=0,j,k,m;

m=strlen(p2);

while(*p1!='\0')

{

if(*p1==*p2)

{

for(j=0,k=0;*(p1+j)!='\0',*(p2+k)!='\0';)

{

if(*(p1+j)==*(p2+k))

{

k++;

j++;

}

else

break;

}

if(k==m)

i++;

p1++;

}

else

p1++;

}

returni;

}

void main()

{

chara[20],b[20],*p1=a,*p2=b;

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

gets(a);

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

gets(b);

cout<<"n="<

}

练习5

#define M 4

#include

#include

#include

#include

void out(int *p[])

{

inti,j;

cout<<"上三角形式:"<

for(i=0;i

{

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

cout<<*(p[i]+j)<

cout<

}

cout<<"下三角形式:"<

for(i=0;i

{

for(j=0;j

cout<

for(j=i;j

cout<<*(p[i]+j)<

cout<

}

}

void add(int *p[])

{

inti,sum=0;

for(i=0;i

sum+=*(p[i]+i);

for(i=M-1;i>=0;i--)

sum+=*(p[i]+i);

if(M%2==1)

sum=sum-*(p[(M-1)/2]+(M-1)/2);

cout<<"对角线之和为:"<

}

void exchange(int *p[])

{

inti,j,t;

for(i=0;i

for(j=0;j

{

t=*(p[i]+j);

*(p[i]+j)=*(p[M-1-i]+j);

}

cout<<"新矩阵为:"<

for(i=0;i

{

for(j=0;j

cout<<*(p[i]+j)<

cout<

}

cout<

}

void main()

{

inta[M][M],*p[M]={a[0],a[1],a[2],a[3]},i,j;

srand(time(NULL));

cout<矩阵的内容:"<

for(i=0;i

{

for(j=0;j

{

*(p[i]+j)=rand()%20;

cout<<*(p[i]+j)<

}

cout<

}

out(p);

add(p);

exchange(p);

cout<

}

练习6

#include

#include

void seek(char *a,char *b,char *c)

{

inti,j;

char*p1=a,*p2=b,*p3=c;

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

for(i=0;*(p2+i)!='\0';i++)

if(*p1==*(p2+i))

{

*p3=*p1;

p3++;

}

*p3='\0';

for(p3=c;*p3!='\0';*p3++)

for(i=1;*(p3+i)!='\0';i++)

{

if(*p3==*(p3+i))

{

j=i;

for(;*(p3+j)!='\0';j++)

{

*(p3+j)=*(p3+j+1);

*(p3+j)='\0';

}

}

}

}

void main()

{

chara[10],b[10],c[10],*p1=a,*p2=b,*p3=c;

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

gets(a);

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

gets(b);

seek(p1,p2,p3);

cout<<"包含共有字符的字符串c:"<

}

 

 

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