第二次作业
1.
1,2 2,1 -------------------------------- Process exited after 6.551 seconds with return value 4 请按任意键继续. . .
#include<stdio.h> main() {void swap(int*p1,int*p2);//声明函数 int a,b;//定义整型变量a,b int*c,*d;//定义整型指针变量c,d scanf("%d,%d",&a,&b);//输入两个数 c=&a;//将指针指向变量a d=&b;//将指针指向变量b swap(c,d);//调用函数 printf("%d,%d\n",a,b);}//打印 void swap(int*p1,int*p2)//定义函数 {int temp;//定义整型变量temp temp=*p1;//将指针指向的变量传给p1 *p1=*p2;//将指针p1指向的变量传给指针p2所指向的变量 *p2=temp;//将temp传给指针p2所指的变量 }
总结:这个函数用的是整型指针变量定义形参,从而实行调用函数,与用整型变量相比较为简便,在输入时的声明函数有逗号,定义函数没有逗号。输入scanf时注意&。
2.void swap (int*p,int*q){int*m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?
#include<stdio.h> void swap(int *p1,int *p2) { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; }
*p1就是a,是整形变量。而*temp是指针变量temp所指向的变量。但temp未进行初始化。对*temp赋值就给了一个其他数据的数,不能工作了。
3.void swap(int*p,int*q){int*m;m=p;p=q;q=m;}为何无法交换?
#include<stdio.h> void swap(int p1,int p2) { int temp; temp=p1; p1=p2; p2=temp; }
在调用函数时,a值传给p1,b值给p2,执行完后p1与p2互换,未影响a与b的值。由于单向传递的值传递方式,不能实现。
4.
#include<stdio.h> int *comp(int *p,int *q)//定义函数 { if(*p>*q)//运用条件判断 { return p;//返回p值 } else { return q;//否则,返回q值 } } int main() { int *c,*p,*q,a,b;//定义指针c,p,q,定义整形a,b scanf("%d,%d",&a,&b);//输入两数 p=&a;//将指针指向a q=&b;//将指针指向b c=comp(p,q);//调用函数赋给c printf("%d\n",*c);//打印 return 0; }
2,3 3 -------------------------------- Process exited after 4.337 seconds with return value 0 请按任意键继续. . .
总结:运用指针很方便,广泛,在使用这一程序时,较以前学过的更加清晰,在写时注意&。