按照格式输入并交换输出

按照格式输入并交换输出

http://www.nowcoder.com/questionTerminal/95eb723a3e854376a7eb6d116cc7d875

分析:

本题考查scanf输入格式和两个整数的交换

解法1:

使用临时变量进行两个整数的交换

#include <bits/stdc++.h>
using namespace std;


int main() {

    int a = 0, b = 0, tmp;
    scanf("a=%d,b=%d", &a, &b);
    //使用中间变量tmp来交换两个数字
    tmp = a;
    a = b;
    b = tmp;
    printf("a=%d,b=%d\n", a, b);
    return 0;
}

解法2:

使用位运算来交换两个整数

#include <bits/stdc++.h>
using namespace std;


int main() {

    int a = 0, b = 0;
    scanf("a=%d,b=%d", &a, &b);
    //异或操作可以不需要借助临时变量交换两个数,
    //https://blog.csdn.net/zxm1306192988/article/details/50446399
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("a=%d,b=%d\n", a, b);
    return 0;
}

总结:

本题思路简单,用于练习scanf的输入格式并掌握基本的整数交换方法。

全部评论
大佬,还有一个范围-2的31次方~2的31次方-1的判断 这个判断怎么写?翻了一大部分代码都没看到教怎么写的
点赞 回复 分享
发布于 01-29 23:31 湖北
在前期,想使用位操作符不了解二进制会很难理解,前期,我们可以使用加、减法中的一些规律也可以不需要借助临时变量交换两个数 #include<stdio.h> int main() { int a = 0; int b = 0; scanf("a=%d,b=%d", &a, &b); a = a + b; b = a - b; a = a - b; printf("a=%d,b=%d", a, b); return 0; }</stdio.h>
点赞 回复 分享
发布于 05-26 19:54 河南

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
评论
10
3
分享
牛客网
牛客企业服务