7282881 2023-10-03 09:15 采纳率: 96%
浏览 3
已结题

C语言输入输出10.3

求计算过程和具体分析1230955824762727572727224722

img

  • 写回答

3条回答 默认 最新

  • 关注

    解释及输出如下:

    第一条printf
    %12hd是以十进制方式输出整形,长度为12,-901有4位,所以左侧补8个空格
    %12hu是以十进制方式输出无符号整数,长度12,
    901的二进制为:0000 0011 1000 0101
    取反:         1111 1100 0111 1010
    -901的二进制: 1111 1100 0111 1011  ---16进制:FC7B
    无符号值就是 15*16^3+12*16^2+7*16+11=64635
    64635占5位,左侧补7个空格
    所以,整体输出为:
    (1)num1=口口口口口口口口-901,num1=口口口口口口口64635
    
    
    第二条printf
    %#12ho是以8进制输出整数,前面补一个0,总长度12,不足位左侧补空格
    -901的二进制: 1111 1100 0111 1011
    改写为3位一组:1  111 110  001  111  011
    8进制即为:    1   7   6    1    7    3
    #的意思是在左侧补齐标志位,也就是多输出一个0,即为0176173,占7位,左侧补5个空格
    
    %12hx是以16进制输出,总长度12,数字中的字母用小写字母,-901的十六进制上面算了,是fc7b,占4位,左侧补8个空格。
    所以,整体输出为:
    (2)num1=口口口口口0176173,num1=口口口口口口口口fc7b
    
    
    第三条printf
    %12.1E是以科学计数法输出浮点型,12是总长度,1是小数点后的位数,后面的四舍五入。
    在不同的编译器中,这个输出略有不同。稍后说明。
    %12.0f是以浮点型输出,小数点后占0位,也就是只保留整数,小数点后四舍五入。2023.103保留整数后即为2023,占4位,左侧补齐8个空格。
    
    %12.1E的第一种情况:%E使得float提升为double类型输出,此时E后面默认3位数字,即E+003,所以输出结果为:
    (3)num2=口口口口2.0E+003,num2=口口口口口口口口2023
    
    %12.1E的第二种情况:精确区分float和double,num2作为float输出,此时E后面默认2位数字,即E+03,所以输出结果为:
    (3)num2=口口口口口2.0E+03,num2=口口口口口口口口2023
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月11日
  • 已采纳回答 10月3日
  • 创建了问题 10月3日