c语言问题:输入一个字符,将这个字符的第6位和第5位与其第2位和第1位互换,然后以十进制整数的方式输出交换数位后的字符。 如:输入字符A,其二进制表示为:01000001,它的第6位至第5位为:10, 它的第2位至第1位为:00。互换后得到的字节为:00000101,按十进制整数输为:5 又如:输入字符$,其进制表示为:00100100,它的第6位至第5位为:01,它的第2位至第1位为:10。互换后得到的字节为:01000010,按十进制整数输出为:66
时间: 2023-05-25 21:04:53 浏览: 161
```c
#include <stdio.h>
int main() {
char c;
scanf("%c", &c);
int binary = (int) c;
// 将第6位和第5位与第2位和第1位互换
binary = ((binary & 0b11100000) >> 5) | ((binary & 0b00000011) << 5)
| ((binary & 0b00011100) << 1) | ((binary & 0b00000000) >> 1);
printf("%d", binary);
return 0;
}
```
思路:
1. 输入一个字符;
2. 将字符转换成整数,得到其对应的二进制数;
3. 提取第6位至第5位和第2位至第1位,两者互换;
4. 提取第4至第2位,向左移一位,将第1位变成第2位;
5. 提取第1位,向右移一位,将第2位变成第1位;
6. 将交换后的二进制数转化为十进制,输出。
相关问题
用C语言问题:输入一个字符,将这个字符的高4位与其低4位互换,然后以十进制整数的方式输出交换数位后的字符。如:输入字符A,其二进制表示为:01000001,它的高4位为:0100,它的低4位为:0001。互换后得到的字节为:00010100,按十进制整数输出为:20 又如:输入字符$,其二进制表示为:00100100,它的高4位为:0010,它的低4位为:0100。互换后得到的字节为:01000010,按十进制整数输出为:66
```c
#include <stdio.h>
int main()
{
char c;
scanf("%c", &c);
unsigned char t = (unsigned char)c; // 将输入的字符转换为无符号字符
t = (t << 4) | (t >> 4); // 高四位与低四位互换
printf("%d", t); // 按十进制整数输出
return 0;
}
```
用c语言来编程:输入两个字符串 str1,str2,判断如果字符串str1大于str2 ,则互换两个字符串的值,然后将互换的两个字符串连接起来后,再输出字符串。
好的,让我来回答您的问题。这是一个可以用C语言编写的程序,用来比较并互换两个字符串的值,然后连接起来并输出。可以像这样实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void swap(char* str1, char* str2);
void concatenate(char* str1, char* str2, char* result);
int main() {
char str1[MAX_LEN], str2[MAX_LEN], result[MAX_LEN];
printf("请输入第一个字符串:");
fgets(str1, MAX_LEN, stdin);
printf("请输入第二个字符串:");
fgets(str2, MAX_LEN, stdin);
if (strcmp(str1, str2) > 0) {
swap(str1, str2);
}
concatenate(str1, str2, result);
printf("连接后的字符串为:%s\n", result);
return 0;
}
void swap(char* str1, char* str2) {
char temp[MAX_LEN];
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
void concatenate(char* str1, char* str2, char* result) {
strcpy(result, str1);
strcat(result, str2);
}
```
程序中,我们先定义了三个长度为 `MAX_LEN` 的字符数组 `str1`、`str2` 和 `result`,用于存放输入的两个字符串和连接后的结果。然后通过 `fgets` 函数从标准输入读取两个字符串。
接下来使用 `strcmp` 函数比较两个字符串的大小,如果 `str1` 大于 `str2`,则调用 `swap` 函数互换两个字符串的值。在 `swap` 函数中,我们定义了一个临时数组 `temp`,通过 `strcpy` 和 `strcmp` 函数实现字符串的互换。
最后调用 `concatenate` 函数将两个字符串连接起来,并将连接后的结果存放在 `result` 数组中。在 `concatenate` 函数中,我们使用 `strcpy` 和 `strcat` 函数将 `str1` 和 `str2` 连接起来。
最终通过 `printf` 函数将连接后的字符串输出。
阅读全文
相关推荐
















