指针程序设计(二)
来源:互联网 发布:链表java 编辑:程序博客网 时间:2024/05/17 21:57
实验八 指针程序设计(二)
一.实验目的
1. 掌握指针的基本概念与操作方法;
2. 掌握字符指针、指针函数访问方式的程序设计。
二.实验环境
1. 硬件:PII以上计算机;
2. 软件:Windows、Visual 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的二维数组(数据在0~20范围),以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<<"字符"<<a<<"出现的次数:"<<i<<endl;
}
练习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<iostream.h>
#include<stdio.h>
#include<string.h>
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="<<strat(p1,p2)<<endl;
}
练习5:
#define M 4
#include<iostream.h>
#include<time.h>
#include<iomanip.h>
#include<stdlib.h>
void out(int *p[])
{
inti,j;
cout<<"上三角形式:"<<endl;
for(i=0;i<M;i++)
{
for(j=0;j<=i;j++)
cout<<*(p[i]+j)<<setw(6);
cout<<endl;
}
cout<<"下三角形式:"<<endl;
for(i=0;i<M;i++)
{
for(j=0;j<i;j++)
cout<<setw(8);
for(j=i;j<M;j++)
cout<<*(p[i]+j)<<setw(6);
cout<<endl;
}
}
void add(int *p[])
{
inti,sum=0;
for(i=0;i<M;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<<"对角线之和为:"<<sum<<endl;
}
void exchange(int *p[])
{
inti,j,t;
for(i=0;i<M;i++)
for(j=0;j<M;j++)
{
t=*(p[i]+j);
*(p[i]+j)=*(p[M-1-i]+j);
}
cout<<"新矩阵为:"<<endl;
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
cout<<*(p[i]+j)<<setw(6);
cout<<endl;
}
cout<<endl;
}
void main()
{
inta[M][M],*p[M]={a[0],a[1],a[2],a[3]},i,j;
srand(time(NULL));
cout<<M<<"*"<<M<<"矩阵的内容:"<<endl;
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
*(p[i]+j)=rand()%20;
cout<<*(p[i]+j)<<setw(6);
}
cout<<endl;
}
out(p);
add(p);
exchange(p);
cout<<endl;
}
练习6:
#include<iostream.h>
#include<stdio.h>
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:"<<c<<endl;
}
- 指针程序设计(二)
- 函数和指针程序设计(二)
- 指针程序设计(三)
- 汇编语言程序设计(二)
- Windows程序设计(二)
- 数组程序设计(二)
- shell程序设计(二)
- 程序结构&&程序设计(二)
- Python程序设计(二)
- windows程序设计(二)
- 指针(二)字符串指针
- OpenMP并行程序设计(二)
- OpenMP并行程序设计(二)
- OpenMP并行程序设计(二)
- OpenMP并行程序设计(二)
- OpenMP并行程序设计(二)
- OpenMP并行程序设计(二)
- OpenMP并行程序设计(二)
- C++ 学习笔记 <1> C++ 语法基础知识
- Object-C难以理解的一些概念
- 探本溯源——深入领略Linux内核绝美风光之系统启动篇(一)
- XMU 1098 N皇后
- 解析Android消息处理机制 ——HandlerThread/Looper & MessageQueue & Message
- 指针程序设计(二)
- dojo 的特效
- [wp7游戏]wp7~~动作类游戏~~集合贴~~
- IOS开发之UISearchBar应用
- 指针程序设计(三)
- 使用Arrays对数组进行排序(一)
- LibGdx生命周期
- 在mfc中调用选取路径对话框
- 感知复合型人才的重要性!