c题目17:写一个swap函数,可以交换2个整数变量的值。(分别用普通方式和指针方式实现,对比结果)

2023-12-15 08:33:49

每日小语

我坐着,观望世界上所有的忧患,所有的压迫和耻辱···看着,听着,一声不响。——惠特曼

自己思考

?最近这段时间新的感悟似乎也没有,但我发现我和别人的思想越来越不同,只能跟极少数人产生共鸣,我还做不到一声不响,我还是会讲出来,可能再过几年我会一声不响。

普通方式?emmm,怎么办这个我似乎不会,我先写指针方式,因为刚刚学完。

swap(int*p1, int*p2) {
    int t;
    t=*p1;
    p1=*p2;
    p2=t;
 
}

刚学完就不会写,问题1:在该函数里设置的变量是否算临时变量?需要!

赋值后前面的*要不要省略?需要!

所以这个代码有问题,只要是指针就得带*。

最终代码(指针)

#include <stdio.h>

void swap(int*p1, int*p2) {
    int t;
    t=*p1;
    *p1=*p2;
    *p2=t;
}

int main() {
    int a,b;
    printf("输入第一个整数:");
    scanf("%d",&a);
    printf("输入第二个整数:");
    scanf("%d",&b);
    //
    swap(&a,&b);//这里传入参数有问题啊,不能直接带入上面的,得自己赋值才可以,牢记
    printf("交换后的数为%d,%d",a,b);//语法问题,这样完全可以
    return 0;
}

这次写的就很舒畅哈哈。撒花花~

忘记还有普通写法,普通我想就是copy一下,但不能改变原来的值,最后也可以达成目的。

#include <stdio.h>

void swap(int p1, int p2) {
    int c,d;
    c=p1;
    d=p2;
    printf("交换后的数为%d,%d",d,c);
}

int main() {
    int a,b;
    printf("输入第一个整数:");
    scanf("%d",&a);
    printf("输入第二个整数:");
    scanf("%d",&b);
    swap(int a,int b);//这里传入参数有问题啊,不能直接带入上面的,得自己赋值才可以,牢记
    return 0;
}

还是传入参数,有黄线,我直接不要了。

最终代码(普通)

#include <stdio.h>

int main() {
    int a,b,c,d;
    printf("输入第一个整数:");
    scanf("%d",&a);
    printf("输入第二个整数:");
    scanf("%d",&b);
    c=b;
    d=a;
    printf("交换后的数:%d,%d",c,d);
    return 0;
}

撒花花,个人目前觉得指针有点无用欸。甚至我这个还可以再简化。

#include <stdio.h>

int main() {
    int a,b;
    printf("输入第一个整数:");
    scanf("%d",&a);
    printf("输入第二个整数:");
    scanf("%d",&b);
    printf("交换后的数:%d,%d",b,a);
    return 0;
}

就这样啦,撒花花~

文章来源:https://blog.csdn.net/qq_74324126/article/details/134967260
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。