发表更新3 分钟读完 (大约519个字)0次访问
xmu预推免机试
1.给定一个字符串 "a34b102"
,从中提取八进制数字 "34102"
。将这个八进制数字转换为二进制,并计算其二进制表示中1的个数。
C语言解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include <stdio.h> #include <stdlib.h> #include <string.h>
int countOnesInOctalToBinary(char *octalString) { long octalNum = strtol(octalString, NULL, 8); int count = 0;
while (octalNum > 0) { count += octalNum & 1; octalNum >>= 1; }
return count; }
int main() { char input[] = "a34b102"; char octalString[20]; int octalIndex = 0;
for (int i = 0; i < strlen(input); i++) { if (input[i] >= '0' && input[i] <= '7') { octalString[octalIndex++] = input[i]; } } octalString[octalIndex] = '\0';
printf("提取的八进制数字为:%s\n", octalString);
int onesCount = countOnesInOctalToBinary(octalString); printf("八进制转换为二进制后1的个数为:%d\n", onesCount);
return 0; }
|
解决方案详解
问题描述
- 输入:字符串
"a34b102"
。
- 输出:
- 从输入字符串中提取八进制数字
"34102"
。
- 将该八进制数字转换为二进制,并计算其二进制表示中1的个数。
C语言代码详解
countOnesInOctalToBinary
函数:将八进制字符串转换为长整型数值,并使用位操作计算其中1的个数。
main
函数:
- 初始化输入字符串
"a34b102"
。
- 从输入字符串中提取八进制数字部分,并存储在
octalString
中。
- 调用
countOnesInOctalToBinary
函数,计算八进制数字转换为二进制后1的个数。
- 输出提取的八进制数字和计算得到的二进制中1的个数。
运行代码
- 编译并运行这段C程序。
- 输出结果应为:
1 2
| 提取的八进制数字为:34102 八进制转换为二进制后1的个数为:5
|
- 这表明程序正确地从输入字符串中提取了八进制数字,并计算了所需的二进制中1的个数。
```