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); } 文章链接
发表评论