指针习题

int a;
int *pa=&a;
int **pa=&pa;
类型 函数名(形参表列)
{
}
类型 数组名[常量]
int *a[10]
int x[10]
指针指向数组
前提
int a[10];
int *pa=a;//int *pa=&a[0];
pa+i<>&a[i]<=>&pa[i]<=>a+i
*(pa+i)<
>a[i]<=>pa[i]<=> * (a+i)
遍历数组
int a[10];
int *pa=a;//int *pa=&a[0];
for(;pa=a+10;pa++)
{scanf("%d",pa);
//printf("%d",*pa);
}


习题1
int a,b,c,t;
int *pa,*pb,*pc;
pa=&a;pb=&b;pc=&c;
scanf();
if(a>b)
{t=a;a=b;b=t;}
if(*pa>*pb)
{t=*pa;*pa=*pb;*pb=t;}
习题3
void main()
{void input(int a[],int size)//void input(int *,int)
int a[10];
input(a,10);
change(a,10);
output(a,10);
}
void input(int a[],int size)//void input(int *,int)
{int *pa=a;
for(;a<p+size;a++)
scanf("%d",a);
}
void output(int a[],int size)//void input(int *a,int size)
{int *pa=a;
for(;a<p+size;a++)
printf("%d",*a);
}
void output(int a[],int size)//void input(int *a,int size)
{int i;
for(i=0;i<size;i++)
printf("%d",a[i]);
}
void change(int a[],int size)
{int min=*a;
int p=a;
int i=0;
int t=0;
for(;a<p+size;a++,i++)
{if(min>a)
{min=a;
t=i;
}
}
if(t!=0)
{x=a[t];
a[t]=a[0];
a[0]=x;
//exchange(&a[t],&a[0]);
}
}
void change1(int a[],int size)
{//int min=a;
int i;int t=0,x;
void exchange(int pa,pb);
for(i=0;i<size;i++)
{/if(min>a[i])
{min=a[i];
t=i;
}
/
if(a[t]>a[i])//if(
(a+t)>
(a+i))
t=i;
}
}
if(t!=0)
{x=a[t];a[t]=a[0];a[0]=x;
//exchange(&a[t],&a[0]);
}
t=0;
for(i=0;i<size;i++)
{if(a[t]<a[i])//if(
(a+t)>
(a+i))
t=i;
}
if(t!=size-1)
{/
x=a[t];a[t]=a[size-1];a[size-1]=x;
/
exchange(&a[t],&a[size-1]);
}
}
void exchange(int *pa,int *pb)
{int t;t=*pa;
*pa=*pb;*pb=t;
}
习题2
{int a[10]={1,2,3,4,5,6,7,8,9,10},b[10];
int m;
scanf("%d",&m);
}
void fun(int *pa,int *pb,int size,int m)
{int i;
for(i=0;i<m;i++)
pb[i]=pa[size-m+i];
for(i=m;i<size;i++)
pb[i]=pa[i-m];
}
void fun1(int *pa,int *pb,int size,int m)
{int a=pa,i;
pa=a+size-m;
for(i=0;i<m;i++)
pb++=pa++;
/

for(i=0;i<m;i++pa++,pb++)
*pa=pb;/
pa=a;
for(i=0;i<size-m;i++)
*pa++=*pa++;

数组元素逆置
{int a[10]={1,2,3,4,5,6,7,8,9,10};
void fun1(int *pa,int size);
void output(int a[],int size);
fun1(a,10);
output(a,10);
}
void fun(int pa[], int size)
{int i,j=size-,t;
for(;i<j;i++,j–)
{t=pa[i];pa[i]=pa[j];pa[j]=t;
}
}
void fun1(int *pa,int size);
{int *pb=pa+size,t;
for(;pa<pb;pa++,pb–)
{t=*pa;*pa=*pb;*pb=t;
}
}
void output(int a[],int size);//void input(int *a,int size)
{int *p=a;
for(;a<p+size;a++)
printf("%d",*a);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值