2024-04-24
算法题解
00
请注意,本文编写于 57 天前,最后修改于 54 天前,其中某些信息可能已经过时。

目录

scanf 相关
如何去除无效字符?
如何读入 2 位的 16 进制整数?
printf 相关
如何输出 2 位补零大写 16 进制整数?
代码

(悄悄) 感觉大部分题解写的很长哎 其实 scanf 和 printf 就能完美解决!

知识点如下

scanf 相关

如何去除无效字符?

不确定是什么字符,直接使用 %*c (表示读入一个字符并且不进行赋值)。 如果确定的话,直接往上写!

如何读入 2 位的 16 进制整数?

可以使用 %x 读入一个 16 进制整数。 但是在这里不能这么用,因为他会贪心的一直读取,直到无法读取。故我们要限制他读取位数,使用 %2x,详见 Cppreference

printf 相关

如何输出 2 位补零大写 16 进制整数?

可以使用 %x 输出一个 16 进制整数 ( a-f 小写), 可以使用 %X 输出一个 16 进制整数 ( A-F 大写)。 同样, 我们可以使用场宽来控制位数, 比如 %2X 就可以输出一个 2 位大写 16 进制整数。 但是如果你试一试就可以发现他只会使用空格来补空位,而不是我们预期的 0。 那么这个时候,就可以在场宽上面多加一个 0,表示补零。 综上,我们可以使用 %02X 来输出。

代码

正常版本:

cpp
#include <cstdio> #include <cmath> int a,b,c; int main() { scanf("#%2x%2x%2x",&a,&b,&c); a=abs(255-a),b=abs(255-b),c=abs(255-c); printf("#%02X%02X%02X",a,b,c); }

本文作者:CornWorld

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!