一、指数输入数
#include<iostream>
using namespace std;
void main()
{
int a[
10];
int *p=a;
int i=
0,sum=
0;
while(i<
10)
{
cin>>*(p+i);
sum=sum+*(p+i);
i++;
}
for(i=
0;i<
10;i++)
{
cout<<*(p+i)<<
'\t';
}
cout<<endl;
cout<<
"sum="<<sum<<
'\t'<<
"ave="<<sum/
10.0;
}
二、指针求交集
#include<iostream>
using namespace std;
void creat2array(
int *p1,
int *p2)
{
cout<<
"请输入第一个数组,-1结束:\n";
int n;
for(
int i=
0;;i++)
{
cin>>n;
if(n==-
1)
break;
else
*(p1+i)=n;
}
cout<<
"请输入第二个数组,-1结束:\n";
for(
int i=
0;;i++)
{
cin>>n;
if(n==-
1)
break;
else
*(p2+i)=n;
}
}
void findinter(
int *p1,
int *p2,
int *p3)
{
int k=
0;
for(
int i=
0;i<
10;i++)
{
if(*(p1+i)==
0)
break;
for(
int j=
0;j<
10;j++)
{
if(*(p2+j)==
0)
break;
if(*(p1+i)==*(p2+j))
{
*(p3+k++)=*(p2+j);
break;
}
}
}
}
void printsigle(
int *p)
{
for(
int i=
0;i<
10;i++)
{
if(!*(p+i))
break;
cout<<*(p+i)<<
'\t';
}
cout<<endl;
}
void print(
int *p1,
int *p2,
int *p3)
{
cout<<
"a[]=";
printsigle(p1);
cout<<
"b[]=";
printsigle(p2);
cout<<
"c[]=";
printsigle(p3);
}
void main()
{
int a[
10]={
0},b[
10]={
0},c[
10]={
0};
int *p1=a, *p2=b, *p3=c;
creat2array(p1,p2);
findinter(p1,p2,p3);
printsigle(p3);
for(
int i=
0;i<
10&&*(p3+i);i++)
for(
int j=i+
1;j<
10;j++)
{
if(*(p3+i)==*(p3+j))
{
for(
int k=j;k<
9;k++)
*(p3+k)=*(p3+k+
1);
i=i-
1;
break;
}
}
print(p1,p2,p3);
}
三、回文
#include<iostream>
#include<string>
using namespace std;
void main()
{
string b;
char a[
40];
cin.get(a,
40);
int n=
strlen(a);
cout<<n;
char *p1,*p2;
p1=&a[n-
1];
p2=p1+
1;
while(
true)
{
*p2++=*p1--;
if(p1==a)
{
*p2=*p1;
break;
}
}
*(p2+
1)=
'\0';
cout<<a;
}