第二次作业

Posted 何丽婷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次作业相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a,b;
    int *pointer_1,*pointer_2;
    scanf("%d%d",&a,&b);
    pointer_1=&a;    pointer_2=&b;
    swap(pointer_1,pointer_2);
    printf("%d,%d\\n",a,b);
    
 } 
 void swap(int *p1,int *p2)
 {
     int c;
      c=*p1;
     *p1=*p2;
    *p2=c;
     
 }
5 6

6,5

--------------------------------
Process exited after 2.188 seconds with return value 0
请按任意键继续. . .

 改错题 

#include<stdio.h>
void swap(int *p1,int *p2){
    int *p;
    p=p1;
    p1=p2;
    p2=p;
    printf("p1= %d\\n",*p1);
    printf("p2= %d\\n",*p2);

}
int main(){
  int a,b;
  int *c,*d;
  scanf("%d %d",&a,&b);
  c=&a;d=&b;
  swap(c,d);
  printf("a= %d\\n",a);
  printf("b= %d\\n",b);
  return 0;
}
5 6
p1= 6 
p2= 5
a= 5 
b= 6
 
--------------------------------
Process exited after 6.791 seconds with return value 0
请按任意键继续. . .

  原因:由编译运行的结果可知调用的swap函数中的两个参数的值发生了改变,但是主函数中的a,b的值没有发生改变。这是因为调用函数中只是值传递,swap函数中的值进行了交换,主函数中并没有。

总结:1、作用swap函数可以起到交换两个变量的值的作用,同时,使用指针作为形参,实参是pointer_1和pointer_2,在函数调用时,将实参传递给形参,采用值传递的方法,虚实结合,使编程更整齐,美观,便捷。

          2、在编程时,出现了一些知识性的问题,在值传递时,应定义一个整形变量,不可以再定义一个指针,同时,主函数前面应该用int,而不是void。

          3、平时编程时,应该明确每一步是用来干什么的,想我这次出现的错误可以给我一个很好的提醒,在编程时注意变量类型以及一些细小的细节。

#include<stdio.h>

int main(){
void swap(int *p1,int *p2);
  int a,b;
  int *m,*n;
  scanf("%d %d",&a,&b);
  m=&a;n=&b;
  swap(n,n);
  printf("a= %d\\n",a);
  printf("b= %d\\n",b);
  return 0;
}
void swap(int *p1,int *p2){
    int *p;
    *p=*p1;
    *p1=*p2;
    *p2=*p;
    printf("p1= %d\\n",*p1);
    printf("p2= %d\\n",*p2);

}

总结:该代码编译时没有错误,但是不能运行,进行调试如下:

include<stdio.h>
voidswap(int*p1,int*p2){int*p;
//*p=*p1;
//*p1=*p2;
//*p2=*p;
printf("p1= %d\\n",*p1); 
   printf("p2= %d\\n",*p2);
}
int main(){inta,b;
int*c,*d;
  scanf("%d %d",&a,&b); 
 c=&a;d=&b;
  swap(c,d); 
 printf("a= %d\\n",a);  
printf("b= %d\\n",b);return0;
}

 

2 3
p1=2 
p2= 3
a= 2
b= 3
 
--------------------------------
Process exited after 1.964 seconds with return value 0
请按任意键继续. . .

  这个代码能正常运行,可知

//*p=*p1;
语句有毛病

以上是关于第二次作业的主要内容,如果未能解决你的问题,请参考以下文章

第二次在对话框中膨胀片段时出错

第二次作业电梯编程题测试结果

第二次作业

第二次作业

OO第二次博客作业

第二次作业——题目一