• 错题集(三)


    以下程序的输出结果是( abc+abc=defdef)

     1 char
     2 cchar(char ch)
     3 {
     4 if(ch>=‘A’&&ch<=‘Z') ch=ch-‘A'+‘a';return ch;
     5 }
     6 main()
     7 { char
     8 s[]="ABC+abc=defDEF",*p=s;
     9 while(*p)
    10 {
    11 *p=cchar(*p);
    12 p++;
    13 }
    14 printf("%s
    ",s);
    15 }

    这道题很简单,遇到大写字母就转换成小写字母。我想重新复习以下ASC码表:

    可以看到,A~Z十进制表示为65~90    a~z十进制表示为97~122。

    2.以下能正确定义二维数组的是( int a[][3]={};  )

    int a[][3];   //可以省略一维,但必须初始化  
    int a[][3]=2{2*3};
    int a[][3]={};
    int a[2][3]={{1},{2},{3,4}};
    第一个如果是定义就必须知道维度,如果不写维度,可以不写第一个维度,但是不能省略第二个维度,但必须初始化。
    第二个2*,瞎写没见过。
    第三个正确可以省略第一个维度,但是不能省略第二个维度,且进行初始化。
    第四个超过指定行数了。
     
    3.
     
    1 int main(){
    2   int a;float b,c;
    3   scanf("%2d%3f%4f",&a,&b,&c);
    4   printf("
    a=%d,b=%d,c=%f
    ",a,b,c);
    5 }
    若运行时从键盘上输入9876543210l,则上面程序在gcc编译器下的输出结果是
    链接:https://www.nowcoder.com/questionTerminal/316082aaacfe4c3f8faf004e3e0fcf6d
    来源:牛客网

    printf函数执行的时候,会先把这三个数字压入栈里,然后再执行打印。压入栈的时候按照数据本身的长度来,首先把c和b压入,并且每一个都是8个字节(printf自动转化为double)。然后再压入a是4个字节。然后再执行打印。打印的时候按照用户指定的格式来出栈。首先打印a,a打印正常。然后又打印4个字节长度的b,在栈里面由于b长度是八个字节,并且b目前是64位的表示方式,数据的后面全是0.(float 变double),电脑是小端存储方式,0存储在距离a近的地方。打印b的时候,打印的4个字节都是0.然后再打印c,c用正常的方式打印,会一下子读取8个字节,正好,读出来的八个字节前面四个字节全是0,自己可以算一下,实在太小了,因此为0.
    栈底                                          栈顶
    高字节。。。。。。。。。。。低字节
    4321     0000      765     0000         98
    4字节   4字节    4字节    4字节      4字节
                 打印c                 打印b      打印a
    附:浮点数(单精度的float和双精度的double)在内存中以二进制的科学计数法表示,表达式为N = 2^E * F;其中E为阶码(采用移位存储),F为尾数。

    float和double都由符号位、阶码、尾数三部分组成,float存储时使用4个字节,double存储时使用8个字节。各部分占用位宽如下所示:

                 符号位     阶码      尾数     长度

    float              1           8         23      32

    double          1         11        52       64

  • 相关阅读:
    lnmp之php5.6.29安装
    lnmp之mysql5.5.17安装
    利用xshell从windows上传文件到虚拟机
    linux命令
    tp中ueditor编辑器的使用
    Thinkphp 3.2.2 验证码check_verify方法,只能验证一次
    选学霸
    低价购买
    友好城市
    榨取kkksc03
  • 原文地址:https://www.cnblogs.com/leoncumt/p/10492164.html
Copyright © 2020-2023  润新知