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

一些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 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真