交换变量 作业

 

 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
请按任意键继续. . .

总结一下 ,这道题我在做的时候并没有什么大问题,不过出现括号的问题,通过下面的提示,自己翻译,找到了错误并改正。还有,这次作业感觉略微有点累,但是学习到了很多东西,比如那个为什么错误啊,也找到了答案,上面有说明,这里就不说了。

知识掌握的还是不是很好,还应更努力才行 。

 

posted @ 2017-03-22 13:48  哲夜  阅读(380)  评论(3编辑  收藏  举报