Excelsior Li 2023-02-23 21:37 采纳率: 93.9%
浏览 244
已结题

一些pta练习的疑惑

  1. 已知字符B的ASCII码是66,那么也可以通过转义符\,用'\66'来表示字符常量B。
    答案:错
    //是不是要在转义后再加一个语句输出char?

2.假设有变量定义语句float f = 1234567890123.123456;,打印语句printf("f = %f", f); 的输出是f = 1234567954432.000000 。那么可以这样解释这种想象:因为float类型的数据精度是十进制7~8位,第9位以后的数据是随机的,即下次再输出这个数时,第9位以后的数据可能会不一样。
答案:错
//难道是从第八位开始数据不一样吗?

3.答案是60,我以为是61?

#include<stdio.h>
int main()
{
    int a[]={1,2,1};
    int b[][3]={1,2,3,10,20,30,50,60,70};
    printf("%d",b[a[1]][a[2]]++);
    return 0;
}


  • 写回答

2条回答 默认 最新

  • CodeBytes 2023-02-23 21:54
    关注

    该回答引用ChatGPT

    正确答案是错。在C语言中,用反斜杠\来表示转义字符,但是'\66'并不能表示字符常量B,因为ASCII码表中B的值是66,而不是字符\后面的两个数字所表示的值。

    正确答案是错。虽然float类型的数据精度是有限的,但是1234567890123.123456这个数在float类型的范围内是可以准确表示的,因为它并没有超出float类型的精度范围。实际上,输出结果中的数字1234567954432.000000是由于在float类型的表示范围内,该数最接近1234567890123.123456的值被存储下来,因此输出时显示的是这个最接近值。

    正确答案是60。根据代码中的定义,a数组的值为{1,2,1},b数组的值为{{1,2,3},{10,20,30},{50,60,70}},因此b[a[1]][a[2]]的值为b[2][1],即60。同时,由于后缀++运算符的存在,表达式的值为60,但是b[2][1]的值会自增1,变成61。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择