交换变量 作业
1、
#include<stdio.h> //头文件 void swap(int *p1,int *p2); //声明函数 int main() //主函数 { int a,b; //定义ab变量 int *p1,*p2; // 定义两个指针 scanf("%d,%d",&a,&b); //输入两个值 p1=&a; //指针指向a p2=&b; //指针指向b swap(&a,&b); //调用函数 printf("%d,%d\n",a,b);}// 打印 void swap(int *p1,int *p2)//定义函数 {int temp; //以下为赋值 temp=*p1; *p1=*p2; *p2=temp; }
9,6
6,9
--------------------------------
Process exited after 6.171 seconds with return value 0
请按任意键继续. . .
总结一下,一开始声明函数的位置写错了,还有swap括号内的变量搞错了,写成了p1,p2.这道题不是很难,但是基础必须掌握好,看来我的知识还是不牢固,容易混淆。以后多做题。
2、
#include<stdio.h> void swap(int *p,int *q) //定义函数 { int *m; printf("%s\n",*m); *m=*p; *p=*q; *q=*m; } int main() { int a,b; scanf("%d,%d",&a,&b); swap(&a,&b); //调用函数 printf("a=%d b=%d\n",a,b); return 0; } 9,6 -------------------------------- Process exited after 10.61 seconds with return value 3221225477 请按任意键继续. . .
此程序可以编译,但是运行不出结果,m是在函数中定义的变量,没有指向一个具体的地址,*m=*p进行的是调用不确定的值与*p进行交换,如果成功可能就是碰巧而已。
3、
#include<stdio.h> void swap(int *p,int *q) //定义函数 { int *m; m=p; p=q; q=m; } int main() { int a,b; scanf("%d,%d",&a,&b); swap(&a,&b); //调用函数 printf("a=%d b=%d\n",a,b); return 0; } 9,6 a=9 b=6 -------------------------------- Process exited after 7.413 seconds with return value 0 请按任意键继续. . .
此程序可以编译也可以运行,但结果却没有交换,仔细想了一下,翻书查找很多,由编译运行的结果可知调用的swap函数中的两个参数的值发生了改变,但是主函数中的a,b的值没有发生改变。这是因为调用函数中只是值传递,swap函数中的值进行了交换,主函数中并没有,只交换了p和q的地址,而p和q中所储存的值并没有交换,所以该函数无法实现交换。
4、
#include<stdio.h> //头文件 int comp(int *p,int *q); //声明函数 int main() //主函数 { int a=9,b=6; int *p;int *q; p=&a;q=&b; comp(p,q); //调用函数 printf("max=:%d\n",comp(p,q));} int comp(int *p,int *q) //定义函数 { if(*p>*q) return *p; else return *q; } max=:9 -------------------------------- Process exited after 0.01175 seconds with return value 0 请按任意键继续. . .
总结一下 ,这道题我在做的时候并没有什么大问题,不过出现括号的问题,通过下面的提示,自己翻译,找到了错误并改正。还有,这次作业感觉略微有点累,但是学习到了很多东西,比如那个为什么错误啊,也找到了答案,上面有说明,这里就不说了。
知识掌握的还是不是很好,还应更努力才行 。