You need to enable JavaScript to run this app. C语言实现字符串字符、ASCII码、8位二进制编码输出的作业调试
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现字符串字符、ASCII码、8位二进制编码输出的作业调试

原代码核心问题排查
  • 输入适配缺陷:使用scanf("%s", string)读取字符串,遇到空格即截断,无法支持"every sentence"这类带空格的测试输入
  • 格式输出缺失:未按照要求做前导零补位,无法输出3位定长ASCII值、8位定长二进制编码
  • 二进制逻辑错误:采用逐次取余、除2的方式计算二进制输出,生成的位序列是低位在前,且未做8位长度强制补零,和要求的正向定长二进制格式完全不符;转换过程中直接修改原字符串存储的字符值,会永久破坏输入内容
  • 冗余无关逻辑:自行添加的按10字符分组、打印SO/S/T标记的逻辑,和作业要求的[字符 三位ASCII: 8位二进制]输出规范无关联,属于偏离需求的冗余代码;要求用户手动输入字符串长度n,多余的交互步骤反而容易造成输入错位
  • 内存与规范风险:字符串数组仅分配20字节长度,配合手动输入字符数n的逻辑,极易触发数组越界;采用非标准的void main()写法,不符合C语言标准语法
符合作业要求的修正实现
#include <stdio.h>
int main(void)
{
    char string[100];
    int count = 0;
    // 读取整行带空格的字符串,避免scanf截断空格
    printf("请输入目标字符串:\n");
    fgets(string, sizeof(string), stdin);
    // 逐字符遍历处理
    while (string[count] != '\0' && string[count] != '\n')
    {
        // 输出格式严格匹配要求:字符 三位补零ASCII值: 8位补零二进制
        printf("%c ", string[count]);
        // 打印3位补零的ASCII十进制值
        printf("%03d: ", string[count]);
        // 从最高位到最低位逐位计算,固定输出8位二进制
        for (int bit_idx = 7; bit_idx >= 0; bit_idx--)
        {
            printf("%d", (string[count] >> bit_idx) & 1);
        }
        printf("\n");
        count++;
    }
    return 0;
}
运行验证说明
  • 输入字符C(ASCII值67)时,程序输出固定为C 067: 01000011,完全匹配格式要求
  • 输入"every sentence"这类带空格的字符串时,可完整读取所有字符,空格字符也会按照其ASCII值(32)对应输出为 032: 00100000
  • 所有输出固定满足补位规则,不会出现二进制位数不足、ASCII值缺前导零的问题

内容的提问来源于stack exchange,提问作者Harman Jit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 15:24:04