C语言上机实验(指针)
  :
1.熟悉指针变量的含义,熟悉简单变量和指针的关系;
2.熟悉指针变量做为函数的参数;
   
(1)熟悉书中案例,熟悉简单变量和指针的关系,了解指针值的变化;
(2)通过指针变量访问整型变量。
解题思路:先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量,可以到它们所指向的变量,从而得到这些变量的值。
#include <stdio.h>
main()
{ int a=100,b=10;
  int *pointer_1, *pointer_2;
  pointer_1=&a;
  pointer_2=&b; 
  printf(“a=%d,b=%d\n”,a,b);
  printf(“*pointer_1=%d,*pointer_2=
            %d\n”,*pointer_1,*pointer_2);
}
(3)输入ab两个整数,按先大后小的顺序输出ab。(模仿p1193.32
解题思路:用指针方法来处理这个问题。不交换整型变量的值,而是交换两个指针变量的值。
#include <stdio.h>
main()
{ int *p1,*p2,*p,a,b;
  printf(“integer numbers:");
  scanf(“%d,%d”,&a,&b); 
  p1=&a;    p2=&b;
  if(a<b)
  {  p=p1; p1=p2; p2=p; }
  printf(“a=%d,b=%d\n”,a,b);
  printf(“%d,%d\n”,*p1,*p2);
}
(4)对输入的两个整数按大小顺序输出。(程序改错) (答案略)
现用函数处理,而且用指针类型的数据作函数参数。
解题思路:定义一个函数swap,将指向两个整型变量的指针变量作为实参传递给swap函数的形参指针变量,在函数中通过指针实现交换两个变量的值。
1
#include <stdio.h>
main()
{swap(int *p1,int *p2); 
  int a,b;  int*pointer_1,*pointer_2;
  printf("please enter a and b:");
  scanf(“%d,%d”,&a,&b);
  pointer_1=&a;
  pointer_2=&b; 
  if (a<b)  swap(pointer_1,pointer_2);
  printf(“max=%d,min=%d\n”,a,b);
 
}   
swap(int *p1,int *p2)
{ int *temp; (无确定方向)
  *temp=*p1;   
  *p1=*p2;
  *p2=*temp;
}
  2
#include <stdio.h>
main()
{swap(int *p1,int *p2); 
  int a,b;  int*pointer_1,*pointer_2;
  printf("please enter a and b:");
  scanf(“%d,%d”,&a,&b);
  pointer_1=&a;
  pointer_2=&b; 
  if (a<b)  swap(pointer_1,pointer_2);
  printf(“max=%d,min=%d\n”,a,b);
 
}   
swap(int *p1,int *p2)
{ int *temp; (只交换了指针的值)
  temp=p1;   
  p1=p2;
  p2=temp;
c语言指针实验总结}
(5)输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现。
  在函数中通过指针实现交换两个变量的值。
#include <stdio.h>
main()
{ void exchange(int *q1, int *q2, int *q3); 
  int a,b,c,*p1,*p2,*p3;
  scanf("%d,%d,%d",&a,&b,&c);
  p1=&a;p2=&b;p3=&c;
  exchange(p1,p2,p3);
  printf(“%d,%d,%d\n",a,b,c);
 
}
exchange(int *q1, int *q2, int *q3)   
{ void swap(int *pt1, int *pt2); 
  if(*q1<*q2) swap(q1,q2); 
  if(*q1<*q3) swap(q1,q3); 
  if(*q2<*q3) swap(q2,q3); 
}
swap(int *pt1, int *pt2)     
{ int temp;
  temp=*pt1;  *pt1=*pt2;  *pt2=temp;
}