C语言程序段如下所示: int i1 = -20144; unsigned short usi = i1; int i2 = usi; 假设变量i1、usi、i2分别被分配在-0x10(%ebp) 、-0x12(%ebp) 、-0xc(%ebp)地址单元。在IA-32+Linux+GCC的环境中,执行上述程序段后,相应的调试信息如下: (gdb) x/4xb $ebp-0xc 0xffffd2ac: ① ② ③ ④ 则①、②、③、④处的内容分别是:()A.0x50、0xb1、0x00、0x00B.0x50

题目

C语言程序段如下所示: int i1 = -20144; unsigned short usi = i1; int i2 = usi; 假设变量i1、usi、i2分别被分配在-0x10(%ebp) 、-0x12(%ebp) 、-0xc(%ebp)地址单元。在IA-32+Linux+GCC的环境中,执行上述程序段后,相应的调试信息如下: (gdb) x/4xb $ebp-0xc 0xffffd2ac: ① ② ③ ④ 则①、②、③、④处的内容分别是:()

A.0x50、0xb1、0x00、0x00

B.0x50、0xb1、0xff、0xff

C.0x00、0x00、0xb1、0x50

D.0xff、0xb1、0x50


相似考题
更多“C语言程序段如下所示: int i1 = -20144; unsigned short usi = i1; int i2 = usi; 假设变量i1、usi、i2分别被分配在-0x10(%ebp) 、-0x12(%ebp) 、-0xc(%ebp)地址单元。在IA-32+Linux+GCC的环境中,执行上述程序段后,相应的调试信息如下: (gdb) x/4xb $ebp-0xc 0xffffd2ac: ① ② ③ ④ 则①、②、③、④处的内容分别是:()”相关问题
  • 第1题:

    下面程序的运行结果是【17】。

    #define N 10

    #define s(x)x*x

    #define f(x)(x*x)

    main()

    { int i1,i2;

    i1=1000/s(N); i2=1000/f(N);

    printf("%d %d\n",i1,i2);

    }


    正确答案:
    1000 10

  • 第2题:

    有以下程序:include define f(x) (x * x)main ( ){ int i1 ,i2;i1 = f(8)/f(4) ;i2

    有以下程序:#include <stdio, h>#define f(x) (x * x)main ( ){ int i1 ,i2; i1 = f(8)/f(4) ;i2 =f(4 +4)/f(2 +2); printf("% d,% d\n" ,i1 ,i2);

    A.64,28

    B.4,4

    C.4,3

    D.64,64


    正确答案:C
    解析:程序中i1=f(8)/f(4)宏替换后得到i1=(8*8)/(4*4),结果为4;i2=f(4+4)/f(2+2)宏替换后得到i2=(4+4*4+4)/(2+2*2+2),其结果为3。故本题输出的值为4,3。

  • 第3题:

    下面程序和运行运行结果是【 】。

    define N 10

    define s (x) x * x

    define f(x) (x * x)

    main( )

    { iht i1,i2;

    i1 = 1000/s(N); i2 = 1000/f(N);

    printf("%d %d\n",i1,i2);

    }


    正确答案:1000 10
    1000 10 解析:1000/s(N)<==>1000/10*10=1000,1000/f(N)<==>1000/(10*10)=10。

  • 第4题:

    下列程序的输出结果是______。 includevoid main( ){ char a[]="abcdabcabfgacd"; in

    下列程序的输出结果是______。

    include<iostream.h>

    void main( )

    {

    char a[]="abcdabcabfgacd";

    int i1=0,i2=0,i=0;

    while(a[i])

    {

    if(a[i]=="a")i1++;

    if(a[i]=="b")i2++;

    i++;

    }

    cout<<i1<<""<<i2<<endl;

    }


    正确答案:4 3
    4 3 解析:分析while循环体可以判断出:il用于统计字符串中字符a的数量,i2用于统计字符b的数量。因此,考察数组a的内容可得其数量分别为4和3。

  • 第5题:

    下列程序的输出结果为【】。include void main(){ char a[]="abcdabcabfgacd"; int i1

    下列程序的输出结果为【 】。

    include <iostream. h>

    void main()

    {

    char a[]="abcdabcabfgacd";

    int i1=0,i2=0,i=0;

    while (a[i])

    {

    if (a[i]=='a') i1++;

    if (a[i]=='q') i2++;

    i++;

    }

    cout<<i1<<''<<i2<<end1;

    }


    正确答案:43
    43

  • 第6题:

    有以下程序

    #include <stdio.h>

    #define N 5

    #define M N+1

    #define f(x)(x*M)

    main()

    { int i1,i2;

    i1=f(2);

    i2=f(1+1);

    printf("%d %d\n",i1,i2);

    }

    程序的运行结果是

    A.12 12

    B.11 7

    C.11 11

    D.12 7


    正确答案:B
    解析:根据宏替换的替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。

  • 第7题:

    试题三(共 20 分)

    阅读以下关于中断的叙述,回答问题 1 至问题 3,将答案填入答题纸的对应栏内。

    【说明】

    某计算机中断系统有 4级中断 I1,I2,I3 和I4,中断响应的优先次序为 I1→I2→I3→I4,即先响应 I1,再响应 I2,……,最后响应 I4。每级中断对应一个屏蔽码,屏蔽码中某位为“1”表示禁止中断(关中断) ,若为“0”则表示允许中断(开中断) 。各级中断处理程序与屏蔽码的关系如表 3-1 所示。

    【问题 1】 (6 分)

    若ti 时刻I1、I2 和 I4 级同时产生中断,在各中断处理完成后,tj(ti<tj)时刻发出 I3 级中断申请,CPU 为 I3 服务时,I1 级发出请求,在 CPU 为 I1 服务时,I2 级发出请求。请参照图 3-1 所示的格式,画出CPU的运行轨迹。

    【问题 2】 (8 分)

    若将中断优先次序设置为 I1→I4→I3→I2,即先响应 I1,再响应 I4,……,最后响应 I2。请重新设置各级的屏蔽码,填写表 3-2。

    【问题 3】 (6 分)

    设中断优先次序为 I1→I4→I3→I2。若 ti 时刻 I1、I2 和 I4 级同时产生中断,在各中断处理完成后,tj(ti<tj)时刻发出 I3 级中断申请,CPU为 I3服务时,I1级发出请求,在 CPU为 I1 服务时,I2 级发出请求。请画出这种情况下 CPU的运行轨迹。


    正确答案:




  • 第8题:

    他励直流电动机拖动恒转矩负载进行串联电阻调速,设调速前、后的电枢电流分别为I1和I2,那么(  )。

    A. I1<I2
    B. I1=I2
    C. I1>I2
    D. I1=-I2

    答案:B
    解析:
    由于拖动恒转矩负载,故电磁转矩Tem不变。电磁转矩公式为:Tem=CTΦIa。式中,CT为转矩常数;Φ为每极主磁通均为定值。因此,电枢电流Ia不变。

  • 第9题:

    假设有证书发放机构I1,I2,用户A在I1获取证书,用户B在I2获取证书,I1和I2已交换了各自的公钥。如果用I1《A》表示由I1颁发给A的证书,A可通过( )证书链接获取B的公开密钥。

    A.I1《I2》I2《B》
    B.I2《B》I1《I2》
    C.I1《B》I2《I2》
    D.I2《I1》I2《B》

    答案:A
    解析:
    证书规定有一个统一的第三方CA,即要求交换各自的公钥,而获取双方公钥的过程可理解为证书的验证过程,即双方证书是否有效,签名是否可靠,在证书A机构验证提取自己的信息,到证书B机构验证获取对方的信息。验证证书的可靠性是在当地发证机构进行,因此A的有效性需要在I1验证,并从I2机构获取B的信息,由于已经给出了I1颁发给A的证书为I2《A》,同时验证需要在I1机构进行,即I1《I2》,这里的I2不是指机构,而是证书I2《A》,《A》为A的公钥等信息,主要是证明A的身份可靠性。而获取B的信息需需要在I2机构验证进行,因此为I2《B》,《B》为B用户的公钥等信息。

  • 第10题:

    利用堆栈传递子程序参数的方法是固定的,在子程序中,修改参数()可以改变子程序的返回地址。

    • A、[EBP-4]
    • B、[EBP-8]
    • C、[EBP+4]
    • D、[EBP+8]

    正确答案:C

  • 第11题:

    用一变压器向一负载供电,当增大负载(负载阻值减小)时原绕组中电流I1和二次绕组中电流I2的变化情况为()。

    • A、I2增大,I1也增大
    • B、I2增大,I1减小
    • C、I2减小,I1也减小
    • D、I2减小,I1增大

    正确答案:A

  • 第12题:

    电流互感器的角误差,可用下式表示:Δfi%=()。其中K为电流互感器的额定变比,I1为一次绕组中的电流;I2为二次绕组中的电流。

    • A、[(KI2~I1)/I1]100%;
    • B、(I2~I1)100%/I1;
    • C、I2~I1;
    • D、I2/I1。

    正确答案:A

  • 第13题:

    有以下程序:includedefineN5defineMN+1definef(x)(x*M)main(){ inti1,i2;i1=f(2);i

    有以下程序: #include <stdio.h> #define N 5 #define M N+1 #define f(x) (x*M) main() { int i1,i2; i1=f(2); i2=f(1+1); printf("%d%d\n",i1,i2); } 程序的运行结果是( )。

    A.12 12

    B.11 7

    C.11 11

    D.12 7


    正确答案:B
    解析:题目中第1条要替换的语句i1=f(2);展开后是i1=(2*M);再展开为i1=(2*N+1);最后展开为i1=(2*5/1),结果使i1=11。而第2条语句i2=f(1+1);展开后为i2=(1+1*M);再展开为i2=(1+1*N+1);最后展开为i2=(1+1*5+1),结果使i2=7。故应该选择B。

  • 第14题:

    有以下程序: #define f(x)(x*x)main { int i1,i2; i1 = f(8)/(4);i2 = f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } 程序运行后的输出结果是( )。

    A.64,28

    B.4,4

    C.4,3

    D.64,64


    正确答案:C
    本题考套的是宏定义。对带参数的宏的展开只是将语句中宏名后面括号内的实参字符串代替#define命令行中的形参。本题中“i1=f(8)/f(4)”用"#definef(x)(x*x)"代替得i1=(8*8)/(4*4),结果为4;"i2=f(4+4)/f(2+2)"用“#definef(x)(x*x)”代替得i2=(4+4+4+4)/(2+2+2+2),求得结果为3。故本题输出的值为4,3

  • 第15题:

    有以下程序: #define f(x)(x*x) main() { int i1,i2; il=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } 程序运行后的输出结果是 ______。

    A.64,28

    B.4,4

    C.4,3

    D.64,64


    正确答案:C
    解析:对带参数的宏的展开只是将语句中宏名后面括号内的实参字符串代替#define命令行中的形参。本题中“il=f(8)/f(4)”用“#define  f(x)  (x*x)”代替得il=(8*8)/(4*4),结果为4:  “i2=f(4+4)/f(2+2)”用“#define  f(x)  (x*x)”代替得i2= (4+4*4+4)/(2+2*2+2),求得结果为3。故本题输出的值为4,3。

  • 第16题:

    有以下程序:includedefine N 5define M N+1define f(x)(x*M)main(){int i1,i2;i1=f

    有以下程序: #include<stdio.h> #define N 5 #define M N+1 #define f(x)(x*M) main() {int i1,i2; i1=f(2); i2=f(1+1); printf("%d%d",i1,i2); } 程序的运行结果是( )。

    A.12 12

    B.11 7

    C.11 11

    D.12 7


    正确答案:B
    解析:根据define的定义,可得f(2)=2*5+1=11,f(1+1)=1+1*5+17。

  • 第17题:

    x86,win32,vc++6,默认属性的控制台工程:

    class C1

    {

    public:

    virtual int sum(int i1, int i2)

    {

    return (i1 + i2);

    }

    private:

    double m_var1;

    char m_var2;

    };

    char sz[] = "abcd";

    问题:sizeof(C1) = ?

    sizeof(sz) = ?


    正确答案:
     

  • 第18题:

    假设有证书发放机构I1,I2,用户A在I1获取证书,用户B在I2获取证书,I1和I2已安全交换了各自的公钥,加入用I2《A》表示由I1颁发给A的证书,A可以通过 (41) 证书链获取B的公开密钥。

    A.I1《I2》I2《B》

    B.I2《B》I1《I2》

    C.I1《B》I2《I2》

    D.I2《I1》I2《B》


    正确答案:A
    本题考查证书认证的基础知识。两个认证机构相互交换了各自公钥之后,用户可使用已有的公钥,验证另一个机构的证书,并从中获取另一个机构的公钥,然后使用获取的另一个机构公钥对该机构下的用户证书进行验证,并从中得到用户公钥。可用以下关系式表达:用表示两个证书颁发机构,用A和B表示分别从处获取证书的两个用户。用《A》I1《A》表示由I1颁发给A的证书,关系式如下;

  • 第19题:

    下面程序的运行结果是_____和_____。 include define N 10 define s(x) x * x define

    下面程序的运行结果是_____和_____。

    include<iostream.h>

    define N 10

    define s(x) x * x

    define f(x) (x * x)

    void main( )

    { int i1,i2;

    i1=1000/s(N) ;i2=1000/f(N) ;

    cout < < i1 < < " " < < i2;

    }


    正确答案:1000;10
    1000;10 解析:对于define宏定义语句,系统会在编译前进行替换。本题替换过程如下:
    i1=1000/s(N)
    i1=1000/s(10)
    i1=1000/10 * 10
    i1=1000
    i2=1000/f(N)
    i2=1000/f(10)
    i2=1000/(10 * 10)
    i2=10

  • 第20题:

    阅读下面的C语言程序,请给出正确的输出结果( )。#include#define N 10#define s(x)x*x#define f(x)(x*x)#define g(x)((x)*(x))main( ){int i1,i2,i3,i4;i1=1000/s(N);i2=1000/f(N);i3=f(N+1);i4=g(N+1);printf(“i1=%d,i2=%d,i3=%d,i4=%d\n”,i1,i2,i3,i4);}

    A.i1=1000,i2=10,i3=21,i4=121
    B.i1=10,i2=10,i3=121,i4=121
    C.i1=1000,i2=1000,i3=21,i4=21
    D.i1=10,i2二1000,i3=121,i4=21

    答案:A
    解析:
    本题考查宏概念,以及宏替换相关的基础知识。表达式1000/s(N)宏替换后为:1000/10*10,因此结果为1000,而不是期待的10。表达式1000/f(N)宏替换后为:1000/(10*10),因此结果为10,是期待的结果。表达式f(N+1)宏替换后为:(10+1*10+1),因此结果为21,而不是期待的121。表达式g(N+1)宏替换后为:((10+1)*(10+1)),结果为121,是期待的结果。因此,题中程序运行结果为“i1=1000,i2=10,i3=21,i4=121”。

  • 第21题:

    两电阻相并联,已知R1/R2=1/2,则流入电阻的电流之比I1/I2、功率之比P1/P2分别是()。

    • A、I1/I2=2,P1/P2=2
    • B、I1/I2=2,P1/P2=4
    • C、I1/I2=1/2,P1/P2=1/2
    • D、I1/I2=2,P1/P2=1/4

    正确答案:A

  • 第22题:

    通过堆栈传递参数,在子程序中使用EBP间址取得参数的原因是()。

    • A、EBP没有被占用
    • B、EBP间址速度较快
    • C、EBP间址默认的段是堆栈段
    • D、EBP是基址指针

    正确答案:D

  • 第23题:

    理想变量器电路中,若初、次级匝数比为n,初级电流为i1,次级电流为i2,则下式正确的是()。

    • A、i2=i1/n
    • B、i2=n2i1
    • C、i2=ni1
    • D、i2=i1/n2

    正确答案:C

  • 第24题:

    单选题
    若有函数模板mySwap和一些变量定义如下:templatevoid mySwap(T X,T Y);double d1,d2;int i1,i2;下列对mySwap的调用中,错误的是(  )。
    A

    mySwap(i1,i2)

    B

    mySwap(d1,d2)

    C

    mySwap(i1,d1)

    D

    mySwap<int>(i2,d2)


    正确答案: D
    解析:
    按照函数模板mySwap的定义,变量X和Y应属于同一类型,变量i1和d1属于不同的数据类型,与模板形参类型不匹配,所以不能调用模板。