// 151.c
#include<stdio.h> //能实现交换
void fun(int *p,int *q)
{
int t;
t=*p;*p=*q;*q=t;
}
void main()
{
int a=3,b=5;
fun(&a,&b);
printf("%d %d",a,b);
getch();
}
// 152.c
#include<stdio.h> //能实现交换,但第4行不对
void fun(int *p,int *q)
{
int *t;
*t=*p;*p=*q;*q=*t;
}
void main()
{
int a=3,b=5;
fun(&a,&b);
printf("%d %d",a,b);
getch();
}
// 153.c
//寡指针写法实现排序
#include<stdio.h>
void main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},*p,*q,t;
for(p=a;p<a+9;p++)
for(q=p+1;q<a+10;q++)
if(*p<*q)
{
t=*p;*p=*q;*q=t;
}
for(p=a;p<a+10;p++)
printf("%3d",*p);
getch();
}
// 154.c
//寡指针写法实现排序
#include<stdio.h>
void main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},*p,*q,t;
for(p=a;p<a+9;p++)
for(q=a;q<a+9-(p-a);q++)
if(*q<*(q+1))
{
t=*q;*q=*(q+1);*(q+1)=t;
}
for(p=a;p<a+10;p++)
printf("%3d",*p);
getch();
}
// 155.c
//选择排序法
#include<stdio.h>
void main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},*p,*q,*m,t;
for(p=a;p<a+9;p++)
{
m=p;
for(q=p+1;q<a+9;q++)
if(*m<*q)m=q;
t=*p;
*p=*m;
*m=t;
}
for(p=a;p<a+10;p++)
printf("%3d",*p);
getch();
}
// 156.c
//寡指针写法实现排序
#include<stdio.h>
void main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},*p,t;
int i,j;
for(i=1;i<10;i++)
{
t=a[i];
j=i-1;
while(t>a[j]&&j>=0)
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
}
for(p=a;p<a+10;p++)
printf("%3d",*p);
getch();
}
// 157.c
#include<stdio.h>
void main()
{
int a[]={1,2,3,4,5},*p,*q,t;
p=a;
q=a+4;
while(p<q)
{
t=*p;*p=*q;*q=t;
p++;
q--;
}
for(p=a;p<a+5;p++)
printf("%3d",*p);
getch();
}
// 158.c
#include<stdio.h>
void fun(int *a,int n)
{
int *q,t;
if(n==1)return ;
for(q=a+1;q<a+n;q++)
if(*a<*q){
t=*a;*a=*q;*q=t;
}
fun(a+1,n-1);
}
void main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},*p;
fun(a,10);
for(p=a;p<a+10;p++)
printf("%3d",*p);
getch();
}
// 159.c
#include<stdio.h>
void main()
{
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12},
b[12],*p,*q;
p=*a;q=b;
while(p<*a+12)
{
*q=*p;
q++;
p++;
}
for(q=b;q<b+12;q++)
printf("%3d",*q);
getch();
}
// 160.c
#include<stdio.h>
void fun(int a[],int n)
{
int *p,t;
p=a+n-1;
t=*p;
while(p>a)
{
*p=*(p-1);
p--;
}
*p=t;
}
void main()
{
int n=5,a[]={1,2,3,4,5},*p;
while(n)
{
fun(a,5);
for(p=a;p<a+5;p++)
printf("%3d",*p);
printf("\n");
n--;
}
getch();
}