1.通过地址运算符&获得地址值

#include

main()

{

int a,*p1;

p1=&a;

*p1=123;

printf("%d,%d\n",a,*p1);

scanf("%d",p1);

printf("%d,%d\n",a,*p1);

}

 

2.输入a,b,按从小到大的顺序输出

#include

main()

{

int a,b,*p=&a,*q=&b,*t;

scanf("%d,%d",p,q);

if(*p<*q){

t=p;p=q;q=t;

}

printf("a=%d,b=%d\n",a,b);

printf("最大值=%d,最小值=%d\n",*p,*q);

}

3

3.用指针法访问数组元素

#include

main()

{

int a[10],i,*p=a;

for(i=0;i<10;i++)

scanf("%d",p+i);

for(i=0;i<10;i++)

printf("%4d",*(p+i));

printf("\n");

}

 4.从键盘输入10个整数,放入一堆数组a中,然后将该数组中的元素值依次输出

#include

main()

{

int *p,i,a[10];

p=&a[0];

for(i=0;i<10;i++)

scanf("%d",p++);

p=&a[0];

for(i=0;i<10;i++)

printf("%4d",*p++);

printf("\n");

}

 5.将10个数的最小值换到最前面的位置

#include

main()

{

int t,a[10],*p,*q;

for(p=a;p<=a+9;p++)

scanf("%d",p);

for(q=a,p=a+1;p<=a+9;p++)

if(*p<*q)q=p;

printf("最小值:%d\n",*q);

printf("最小值的位置:%d\n",q-a);

t=*a;*a=*q;*q=t;

printf("交换之后的10个数是:\n");

for(p=a;p

printf("%4d",*p);

printf("\n");

}

6.求二维数组元素的最大值

#include

main()

{

int a[3][4]={{5,1,-8,11},{26,-7,10,129},{2,18,7,16}},*p,max;

for(p=&a[0][0],max=*p;p<&a[0][0]+12;p++)

if(*p>max)max=*p;

printf("MAX=%d\n",max);

}

 7.用指针法实现字符串的复制

#include

main()

{

char a[80],b[80];

char *p1,*p2;

gets(a);

for(p1=a,p2=b;*p1!='\0';p1++,p2++)

*p2=*p1;

*p2='\0';

printf("字符串a中的内容:%s\n",a);

printf("字符串b中的内容:%s\n",b);

}

8.将具有10个元素的整数型数组中的元素值按逆序存放后输出

#include

void swap(int *x,int *y)

{

int t;

t=*x;

*x=*y;

*y=t;

}

main()

{

int a[10],i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<=4;i++)

swap(&a[i],&a[10-i-1]);

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

}

9.用一个函数求10个学生成绩的最高分,最低分和平均成绩

#include

float fun(int *x,int n,int *p1,int *p2)

{

int i;

float s=0;

*p1=*p2=x[0];

for(i=0;i

{

s=s+x[i];

if(*p1

else if(*p2>x[i])*p2=x[i];

}

return s/n;

}

main()

{

int i,a[10],max,min;

float ave;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

printf("%4d",a[i]);

ave=fun(a,10,&max,&min);

printf("\n 平均值=%6.2f,最大值=%d,最小值=%d\n",ave,max,min);

}

 10.求10个数中的最大值,通过函数返回最大值元素的地址的方法来实现

#include

int *fun(int *x,int n)

{

int i,*y;

y=x;

for(i=1;i

if(*(x+i)>*y)y=x+i;

return y;

}

main()

{

int a[10],*p,i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

p=fun(a,10);

printf("最大值=%d\n",*p);

}

 

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。