C语言求助+讨论
【问题描述】定义函数char change(char c, int n),其对字符c的第n位(n为1~8)进行转换,即c的第n位为0时,转换为1;第n位为1时,转换为0。【输入形式】字符和第几位。
【输出形式】转换后的字符。
【样例输入】A 5
【样例输出】a
https://static.52pojie.cn/static/image/hrline/4.gif
没有金币了,顺便问问怎么获取(好久没来论坛了) 本帖最后由 tfrist 于 2022-12-1 12:11 编辑
抛砖引玉一下! 手头没有C编译器,没办法编译测试。 根据想法写的一个伪代码。n的取值应该为 0-7.
char change(char c, int n)
{
if (c & (1<<n)){
c &= 0xff^(1<<n);
}
else{
c |= 0xff&(1<<n);
}
return c;
} char change(char c, int n)
{
unsigned char r = 0;
unsigned char index = 1 << n;
unsigned char flag = c & index;
if (flag)
r = c & 0xff ^ index;
else
r = c | index;
return r;
} char change(char c, int n) {
return c^(1<<n);
} banchengkemeng 发表于 2022-12-1 12:45
char change(char c, int n) {
return c^(1
短小精悍! tfrist 发表于 2022-12-1 12:52
短小精悍!
异或1是取反,异或0是不变,所以直接异或一个"目标位置是1,其他位置都是0"的数就好了 banchengkemeng 发表于 2022-12-1 12:45
char change(char c, int n) {
return c^(1
学习了,另辟蹊径~ KongKong20 发表于 2022-12-1 12:03
char change(char c, int n)
{
unsigned char r = 0;
运行很成功,就是看不太懂大体思路,麻烦老哥解释下哈 tfrist 发表于 2022-12-1 11:55
抛砖引玉一下! 手头没有C编译器,没办法编译测试。 根据想法写的一个伪代码。n的取值应该为 0-7.
char ...
老哥的答案也是可以的
修改了部分
char change(char c, int n)
{
unsigned char r = 0; //使用的dev,别的编译器应该可以通过的
if (c & (1<<n)){
r=c & 0xff^(1<<n);
}
else{
r=c |= 0xff&(1<<n);
}
return c;
}
banchengkemeng 发表于 2022-12-1 12:45
char change(char c, int n) {
return c^(1
不得不说这个666
“短小精悍”
想听友友的思路呢
页:
[1]
2