第二次作业(1.swap函数 2.comp)

#include<stdio.h>
int main()
{void swap(int*n,int*m);//声明函数 
int a,b;
scanf("%d%d",&a,&b); 
swap (&a,&b); 
printf("%d,%d",a,b);//输出交换后的结果
}
void swap (int*n,int*m)//函数名为swap     形参是mn的整形变量 
{ int k;//定义新变量k 其作用为交换变量 
k=*n;
*n=*m;
*m=k;

}

1456 2
2,1456
--------------------------------
Process exited after 20.13 seconds with return value 0
请按任意键继续. . .

总结

编译代码时要规范书写,不然会出现很多错误,很麻烦 例如取址符的添加

取变量时要注意为整形变量

swap的作用为交换变量的值

*n和*m的交换要注意不要弄返

以后要多加练习 运行代码 目前还不熟练

 

 

 

 

 

 

 

作业2:void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?

    如果想交换两数的地址,根据已经学过的知识我们可以尝试下面的方法:

int a,b,*p,*q,t;
p=&a;
q=&b;
{
t=p;
p=q;
q=t;
}

而*m 代表m指针    而在c语言当中 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须进行初始化,指针的 初始值必须是一个地址,决不允许赋予任何其他数据, 通常是一个数据的地址或地址 变量或空指针。  指针变量未被初始化,指针变量就不会被分配存储空间。在程序中如果使用了未被分配 空间的指针,就会出现难以查找的错误。因此 题目给出的例子是无法进行交换的。

void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换?

在上述程序中很明显 它只把放地址变量的单元交换了,这里也不叫交换了地址,变量的地址还是原来的,实参是没有发生变化的,因此无法进行交换。

 

作业3:构建comp函数,实现两个整数比较,比较大的值通过返回值返回给main。要求comp的参数和返回值都是指针类型数据。

#include<stdio.h>
int main()
{
    int comp(int *x,int *y);
    int a;int b;
    int *p1;int *p2;
    scanf("%d,%d",&a,&b);
    printf("%d\n",comp(&a,&b));
}
int comp(int *x,int *y)
{
    if(*x>*y)
    return *x;else return *y;
}

总结:以上程序实现了比较两个整数的大小,并且用到了指针类型数据。

在编写代码时 一定要注意格式的要求,例如标点,不然改起来很麻烦

在运行程序时 要先编译 后运行,  养成良好的习惯  便于检查错误

在c语言的学习中 要善于动脑  多敲代码 争取更加熟练

要多积累经验 例如 运行程序时 的 错误提示 要多积累 方便以后的学习 

posted on 2017-03-22 17:27  zhaoxiZhang  阅读(288)  评论(0编辑  收藏  举报