C语言之指针

实验目的:

<1>学会并善于利用指针

<2>了解通过指针引用数组,字符串等

<3>区分指向函数的指针

实验器材:

机房计算机

C语言基础设计教材

实验内容:

<1>对输入的两个整数按大小顺序输出,用函数处理,而且用指针类型的数据做函数参数

<2>用指针方法,对10个整数按大到小排列顺序

<3>输入两个整数,然后让用户选择1或2,选1时调用max函数,输出二者中的大数,选2时调用min函数,输出二者中的小数。

实验步骤:

<1>#include<stdio.h>

int main()

{void swap(int *p1,int *p2);

int a,b;

int *pointer_1,*pointer_2;

printf("please enter a and b:\n");

scanf("%d,%d",&a,&b);

pointer_1=&a;

pointer_2=&b;

if(a<b)

swap(pointer_1,pointer_2);

printf("max=%d,min=%d",a,b);

return 0;

 }

 void swap(int *p1,int *p2)

 {int temp;

 temp=*p1;

 *p1=*p2;

 *p2=temp;

 }

<2>#include<stdio.h>

int main()

{void sort(int x[],int n);

int i,*p,a[10];

p=a;

printf("please enter 10 integer numders:");

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

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

p=a;

sort(p,10);

for(p=a,i=0;i<10;i++)

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

p++;

}

printf("\n");

return 0;

}

void sort(int x[],int n)

{int i,j,k,t;

for(i=0;i<n-1;i++)

   {k=i;

      for(j=i+1;j<n;j++)

       if(x[j]>x[k])k=j;

         if(k!=i)

        {t=x[i];x[i]=x[k];x[k]=t; }

   }

}

<3>#include<stdio.h>

int main()

{int max(int x,int y);

   int min(int x,int y);

   int(*p)(int,int);

   int a,b,c,n;

   printf("please enter a ang b:");

   scanf("%d,%d",&a,&b);

   printf("please choose 1 or 2:");

   scanf("%d",&n);

   if(n==1)p=max;

   else if(n==2)p=min;

   c=(*p)(a,b);

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

   if(n==1)printf("max=%d\n",c);

   else printf("min=%d\n",c);

   return 0;

}

int max(int x,int y)

{int z;

if(x>y)z=x;

else z=y;

return(z);

}

I

nt min(int x,int y)

{int z;

if(x<y)z=x;

else z=y;

return(z);

}

实验结果(附数据和图表):

<1>

<2>

<3>

实验结果分析及结论:

对于<1>:在函数调用时,将实参变量的值传送给形参变量,采取的是值传递,在函数调用之后,p1,p2都不存在

对于<2>:函数中用数组名作为形参, 便于理解,还有在函数中可以用a[i]表示数组元素

对于<3>:调用函数的语句是c=(*p)(a,b);,根据输入的数字决定指针变量指向哪个元素

实验心得体会和建议:

 通过此次实验,学会了用指针处理问题 ,明白了,地址其实是按址访问,地址的意义,会区分指向行的指针,使我对这些知识点更加印象深刻。弄懂实验原理,并且体会到了实验的操作本事是靠自我亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。锻炼自己独立编写程序的能力。

                                     

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LucianaiB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值