更多“表达式x%y为整除取余运算,若运算对象y是一个浮点数,从程序编译上讲,这是一种______错误。A.FFOE词法B.语法C.语义D.运行”相关问题
  • 第1题:

    表达式中括号不匹配错误可在编译程序______阶段检查出来。

    A.词法分析

    B.语法分析

    C.语义分析

    D.代码优化


    正确答案:B
    解析:编译程序是要把高级语言书写的源程序翻译成与之等价的目标程序,其工作过程可分为6个阶段:
      词法分析:对源程序从前到后逐个字符进行扫描,从中识别出一个个“单词”符号。
      语法分析:在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单元。通过语法分析,确定整个输入串是否构成一个语法上正确的程序。
      语义分析:主要检查源程序是否存在语义错误,进行类型分析和检查。数据类型一般包括类型的载体及其上的运算两方面的内容。只有语法和语义都正确的源程序才能翻译成正确的目标代码。
      中间代码生成:根据语义分析的输出生成中间代码,这是一种简单且含义明确的记号系统,与具体的机器无关。
      代码优化:生成的中间代码往往在时间和空间上有很大的浪费,对其优化,可生成高效的目标代码。优化过程可在中间代码生成阶段进行,也可以在目标代码生成阶段进行。
      目标代码生成:把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编代码。

  • 第2题:

    ● 某C语言程序中,m是一个整型变量,则 (33) 时遇到表达式m+"test"会报错。

    (33)

    A. 词法分析

    B. 语法分析

    C. 语义分析

    D. 程序运行


    正确答案:C

  • 第3题:

    某C语言程序中,x是一个浮点型变量,m是一个值为正整数的整型常量,表达式x%m(x被m除取余数)在(40)时会报错,这是一种(41)错误。

    A.编译

    B.预处理

    C.编辑

    D.运行


    正确答案:A
    解析:程序代码中的错误可分为语法错误和语义错误。程序语言的语法表述的是语言的形式,或者说是语言的样子和结构。程序语言还有更重要的一个方面,就是附着于语言结构上的语义。语义揭示了程序本身的含义、施加于语言结构上的限制或者要执行的动作。程序语言的语义分为静态语义和动态语义。编译时进行的是静态语义的分析,主要包括:检查语言结构的语义是否正确,即是否结构正确的句子所表示的意思也合法;执行规定的语义动作,如表达式的求值、符号表的填写、中间代码的生成等。整除取余运算符“%”的有效运算对象是两个整数。在形式上,只要“%”的两个运算对象存在,其语法就是正确的;在语义上,“%”的运算对象中有浮点数则不符合整除取余运算的含义。因此,这是运算对象与运算符的类型不匹配错误,届于静态语义错误,在编译阶段可以发现该错误。

  • 第4题:

    关于下面的程序 include main() { int x=3,y=0,z=0; if(x=y+z)printf("****"); else p

    关于下面的程序 #include<stdio.h> main() { int x=3,y=0,z=0; if(x=y+z)printf("****"); else printf("$$$$"); }说法正确的是______。

    A.有语法错误不能通过编译

    B.输出****

    C.输出$$$$

    D.可以通过编译,但不能通过连接,无法运行


    正确答案:C

  • 第5题:

    某C语言程序中,x是一个实型变量,y是一个正整数。对于x被y除取余数的表达式“x%y”是一种(36)错误。

    A.语法

    B.语义

    C.运行

    D.词法


    正确答案:B
    解析:程序员编写的源程序中往往会有一些错误,这些错误大致可分为错误和动态错误两类。静态错误应该在编译的不同阶段被检查出来,它又可以分为语法错误和静态语义错误。词法和语法错误是指有关语言结构上的错误,如单词拼写错误就是一种词法错误,表达式中缺少操作数、括号不匹配是语法错误。静态的语义错误是指分析源程序时可以发现的语义下的错误。例如,整除取余运算符“%”的有效运算对象是两个整数。对于表达式“x%y”,在形式上两个运算对象存在,其语法是正确的;在语义上,“%”的运算对象中一个是整型数据而另一个是实型数据,则不符合整除取余运算的含义。因此表达式“x%y”(x是一个实型变量,y是一个正整数)在编译时会报错,这是运算对象与运算符的类型不匹配的错误,属于静态语义错误。所谓动态错误,是指源程序中的逻辑错误。它们发生在程序运行的时候,比如算法逻辑上的错误。动态错误也被称为动态语义错误,如变量取值为0时被用做除数,引用数组元素时下标出界等。

  • 第6题:

    若程序运行时系统报告关键字拼写错误,这属于(34)。

    A.语法错误

    B.运算对象不匹配错误

    C.静态语义错误

    D.动态语义错误


    正确答案:A
    解析:程序中的错误分为语法错误和语义错误两种。一般情况下,语法是关于程序结构的规则,语法错误是形式上的错误,这类错误编译器可以检查出来。括号不匹配和关键字拼写错误是关于语言结构的错误,是两种常见的语法错误。语义错误是程序含义(功能)上的错误,可分为静态语义错误和动态语义错误。静态语义错误编译器可以检查出来。动态语义反映程序的逻辑,这种错误发生在程序运行期间,常见的逻辑错误有0作为除数、死循环和无穷递归等,编译时检查不出这类错误。

  • 第7题:

    当程序运行陷于死循环时,说明程序中存在(34) 。

    A.语法错误

    B.静态的语义错误

    C.词法错误

    D.动态的语义错误


    正确答案:D
    本题考查计算机系统基础知识。无论是对于编译方式还是解释方式来实现高级语言,对于有错误的程序,如果是词法或语法错误,则不能进入运行阶段,运行时寸陷于死循环属于动态的语义错误。

  • 第8题:

    在对源程序进行编译的过程中,( )是正确的顺序。

    A.语义分析、语法分析、词法分析
    B.语法分析、词法分析、语义分析
    C.词法分析、语法分析、语义分析
    D.词法分析、语义分析、语法分析

    答案:C
    解析:
    本题考查程序语言基础知识。
    编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言程序或机器语言程序)。编译程序的工作过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成、符号表管理和出错处理,如下图所示。

  • 第9题:

    某C语言程序中,x是一个浮点型变量,m是一个值为正整数的整型常量,表达式x%m(x被m除取余数)在( )时会报错,这是一种(请作答此空)错误。

    A.词法
    B.语法
    C.语义
    D.运行

    答案:C
    解析:
    程序代码中的错误可分为语法错误和语义错误。程序语言的语法表述的是语言的形式,或者说是语言的样子和结构。程序语言还有更重要的一个方面,就是附着于语言结构上的语义。语义揭示了程序本身的含义、施加于语言结构上的限制或者要执行的动作。程序语言的语义分为静态语义和动态语义。编译时进行的是静态语义的分析,主要包括:检查语言结构的语义是否正确,即是否结构正确的句子所表示的意思也合法;执行规定的语义动作,如表达式的求值、符号表的填写、中间代码的生成等。整除取余运算符“%”的有效运算对象是两个整数。在形式上,只要“%”的两个运算对象存在,其语法就是正确的;在语义上,“%”的运算对象中有浮点数则不符合整除取余运算的含义。因此,这是运算对象与运算符的类型不匹配错误,届于静态语义错误,在编译阶段可以发现该错误。

  • 第10题:

    程序中的错误一般可分为语法错误和语义错误两类,其中,语义错误可分为静态语义错误和动态语义错误。( )属于动态语义错误。

    A.关键词(或保留字)拼写错误
    B.程序运行中变量取值为0时作为除数
    C.表达式的括号不匹配
    D.运算符的运算对象类型不正确

    答案:B
    解析:
    本题考查程序语言基础知识。
    用户编写的源程序不可避免地会有一些错误,这些错误大致可分为语法错误和语义错误,有时也用静态错误和动态错误的说法。动态错误也称动态语义错误,它们发生在程序运行时,例如变量取零时作除数、引用数组元素下标越界等错误。静态错误是指编译时所发现的程序错误,可分为语法错误和静态语义错误,如单词拼写错误、标点符号错、表达式中缺少操作数、括号不匹配等有关语言结构上的错误称为语法错误;而语义分析时发现的运算符与运算对象类型不合法等错误属于静态语义错误。

  • 第11题:

    在 Windows 系统中,执行程序 x.exe 时系统报告找不到 y.dll,原因是( )。

    A.程序 x 中存在语法或语义错误,需要修改与 x 对应的源程序
    B.程序 y 中存在语法错误,需要修改与 y 对应的源程序
    C.程序 y 中存在语义错误,需要修改与 y 对应的源程序并重新编译
    D.程序 x 执行时需要调用 y 中的函数,需要安装 y.dll

    答案:D
    解析:
    .dll文件是一种动态链接库文件,里面有大量的供调用的函数。当执行某文件时,若其调用了dll文件中的函数,则自动去寻找这些dll文件,若找不到,则报错。

  • 第12题:

    单选题
    将以下程序写成三目运算表达式是(  )。if(x<y)min=x:else min=y;
    A

    min=(x>y)?x:y

    B

    min=(x<y)?x:y

    C

    min=(x<y)x:y

    D

    min=(x<y)?x,y


    正确答案: A
    解析:
    条件语句的功能是求x,y中的较小值。条件运算符是C++语言中唯一的三目运算符,用条件运算符表达求较小值的形式为:min=(x<y)? x:y。

  • 第13题:

    ● 若程序运行时系统报告除数为 0,这属于 (24) 错误。

    (24)

    A. 语法

    B. 静态语义

    C. 动态语义

    D. 运算对象不匹配


    正确答案:C


  • 第14题:

    下面的程序的结果是

    main( )

    {int x=3,y=0, z=0;

    if(x=y+z)cout<<"* * * *";

    else cout<<"####";

    }

    A.有语法错误不能通过编译

    B.输出****

    C.可以通过编译,但是不能通过连接,因而不能运行

    D.输出####


    正确答案:D
    解析:注意本题本意是考察x=y+z,但是少写了一个=,因此逻辑表达式变成了赋值语句,故x的值为0,即假,因此程序执行else部分。本题答案为D。

  • 第15题:

    如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为

    A.x.operator++(0).operator*(y);

    B.operator*(x.operator++(0),y);

    C.y.operator*(operator++(x,0))

    D.operator*(operator++(x,0),y)


    正确答案:C
    解析:本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且c1,c2都是该类的对象,则c1.operator+(c2)与c1+c2含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与c1+c2含义相同。同理,运算符*作为成员函数重载,则y*(x++)与 y.operator*(x++)含义相同,后缀++作为友元函数重载,那么x++与operator++(x,0)含义相同,所以选项 C是正确的。

  • 第16题:

    下面的程序 main() { int x=3,y=0,z=0; if(x=y+z)printf("***"); else printf("####"); } _______。

    A.有语法错误不能通过编译

    B.输出****

    C.可以通过编译,但是不能通过连接,因而不能运行

    D.输出####


    正确答案:D
    解析:本题的考查点是运算符在表达式中的处理原则。本题中把y+z的值赋给x,由于y和z都等于0,所以x的值也为0,表达式值为false,输出####。if语句中if后面的表达式—般为逻辑或关系表达式,但也可以是任意的数值类型。

  • 第17题:

    根据运算前后的符号位可判别溢出。设X、Y、Z分别表示两个参加运算的数的符号位及运算结果的符号位,那么若逻辑表达式X.Y.的值与..Z的值进行(38)运算的结果为1,则表示溢出。

    A.与

    B.或

    C.与非

    D.异或


    正确答案:B
    解析:当两个同符号数相加或者两异号数相减时,运算结果若超出固定码长的数据表示范围,就会发生溢出。例如,X=+65D=+1000001B(D、B分别表示十进制数、二进制数),Y=+67D=+1000011B,编码总长度为8位,那么:[X+Y]补=[X]补+[Y]补=01000001+01000011=10000100符号位为1,表示结果为负数,两正数相加得负数,这显然是荒谬的,因为发生了溢出。判断溢出有四种方式:①双符号位法,即用00表示正数,11表示负数,当运算结果的两个符号位上的数不一样时,则表明发生了溢出。承上例:[X+Y]补=[X]补+[Y]补=001000001+001000011=010000100②进位判断法,当数值最高位和符号位向上一位都有进位或者都没有进位的时候(即异或结果为0),表示没有溢出,否则表示有溢出。③根据运算结果的符号位SF和进位标志CF的异或结果来判断,即若SFCF结果为1,表示运算的结果产生溢出。④根据运算前后的符号位进行判别,设X、Y、Z分别表示两个参加运算的数的符号位及运算结果的符号位,那么若逻辑表达式的值为1,则表示溢出。或运算也称为逻辑加,常用符号OR、∪、V或+表示。从上面的分析可见,在做题时要注意将其作为引子举一反三,此次考的是用第④种方法判断溢出,以后考的就可能是其余三种,而将这四种都掌握了,“鱼网”就织得密集结实,做到了未雨绸缪,获胜的把握就更大。

  • 第18题:

    某C语言程序中有表达式x%m(即x被m除取余数),其中,x为浮点型变量,m为整型非0常量,则该程序在( )时会报错,该错误属于( )错误。

    A.编译 B.预处理 C.编辑 D.运行A.逻辑 B.语法 C.语义 D.运行


    正确答案:A,B

  • 第19题:

    ● 编译程序分析源程序的阶段依次是 (21) 。

    (21)

    A. 词法分析、语法分析、语义分析

    B. 语法分析、词法分析、语义分析

    C. 语义分析、语法分析、词法分析

    D. 语义分析、词法分析、语法分析


    正确答案:A

  • 第20题:

    当程序运行陷于死循环时,说明程序中存在( )。

    A.语法错误
    B.静态的语义错误
    C.词法错误
    D.动态的语义错误

    答案:D
    解析:
    本题考查计算机系统基础知识。
    无论是对于编译方式还是解释方式来实现高级语言,对于有错误的程序,如果是词法或语法错误,则不能进入运行阶段,运行时陷于死循环属于动态的语义错误。

  • 第21题:

    某C语言程序中,m是一个整型变量,则( )时遇到表达式m+"test"会报错。

    A.词法分析
    B.语法分析
    C.语义分析
    D.程序运行

    答案:C
    解析:
    本题考查程序语言翻译基础知识。对源程序进行编译的过程可以分为词法分析、语法分析、语义分析、中间代码生成和优化、目标代码生成等阶段。其中,词法分析是分析各种构造形式的单词,如整型常量、浮点常量、标识符、运算符等;语法分析是分析各种构造形式的表达式(算术表达式、关系表达式、逻辑表达式等)和语句(if语句、for语句、while语句等),词法分析和语法分析都是对程序的结构进行分析。语义分析是指分析程序中各种语言成分的含义,如变量、表达式、语句等的含义,是对程序的静态语义(编译时能确定的语义)的分析。程序运行时体现程序的动态语义。

  • 第22题:

    在Windows系统中,执行x.exe时系统报告找不到y.dll,原因是( )。

    A.程序x中存在语法或语义错误,需要修改与x对应的源程序
    B.程序y中存在语法错误,需要修改与y对应的源程序
    C.程序y中存在语义错误,需要修改与y对应的源程序并重新编译
    D.程序x执行时需要调用y中的函数。要要安装y.dll

    答案:D
    解析:
    DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。DLL文件中存放的是各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。本题在执行x.exe文件时找不到y.dll,说明该程序在运行时需要调用y.dll文件,而找不到该文件,就需要安装该文件以使程序运行。

  • 第23题:

    编译程序分析源程序的阶段依次是( )。

    A.词法分析、语法分析、语义分析
    B.语法分析、词法分析、语义分析
    C.语义分析、语法分析、词法分析
    D.语义分析、词法分析、语法分析

    答案:A
    解析:
    编译程序分析源程序的阶段依次词法分析、语法分析、语义分析。