一、指数输入数
#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;
}