niusouti.com
更多“C51程序中#define 宏定义语句末尾一定要使用分号才能正确编译通过。”相关问题
  • 第1题:

    在宏定义define P13.14159中,用宏名PI代替一个______。


    正确答案:
    本题考查字符替换格式:#define标识符字符串。

  • 第2题:

    若程序有宏定义:#define N l00,则以下叙述中正确的是( )。

    A.宏定义中定义了标识符N的值为整数100

    B.在编译程序对C源程序进行预处理时用l00替换标识符N

    C.对C源程序进行编译时用100替换标识符N

    D.在运行时用100替换标识符N


    正确答案:B
    #defineN100定义了标识符N的替换文本为100,而非N的值为100。即在该命令行后的程序中,所有出现标识符N的地方都将替换为l00,而且这一替换过程是在程序预编译时逊行的。

  • 第3题:

    已知下面的程序段,正确的判断是______。 #define A 3 #define B(A) ((A+1)*a) int a=3; ...... X=3*(A+B(7));

    A.程序错误,不允许嵌套定义

    B.X=93

    C.X=81

    D.程序错误,宏定义不允许有参数


    正确答案:C
    解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

  • 第4题:

    以下叙述中不正确的是

    A.预处理命令行都必须以#号开始

    B.在程序中凡是以#号开始的语句行都是预处理命令行

    C.宏替换不占用运行时间,只占编译时间

    D.在以下定义是正确的:#define PI 3.1415926;


    正确答案:D
    解析:带参数的宏定义如下:#define宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“3.1415926”这个字符串,但宏定义不是C语句,不必在行末加分号。

  • 第5题:

    以下说法正确的是( )。

    A.宏定义是C语句,要在行末加分号

    B.可以使用#undefine提前结束宏名的使用

    C.在进行宏定义时,宏定义不能嵌套

    D.双引号中出现的宏名也要进行替换


    正确答案:B
    解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程序中可以使用#ndefine;④在进行宏定义时,宏定义能层层置换,能够嵌套。

  • 第6题:

    以下叙述中不正确的是______。

    A.C程序中的预处理命令行都以#号开始

    B.宏定义中的宏名可用大写字母或小写字母

    C.宏替换不占用运行时间,只占用编译时间

    D.使用带参数的宏时,参数的类型应与宏定义时的一致


    正确答案:D
    解析:宏替换和函数调用有相似之处,但在替换时,对参数没有类型的要求。

  • 第7题:

    设有定义:#define STR "12345";,则以下叙述中正确的是( )

    A.宏名STR代替的是数值常量12345

    B.宏定义以分号结束,编译时一定会产生错误信息

    C.宏名STR代替的是字符串"12345";

    D.宏名STR代替的是字符串常量"12345"


    正确答案:C

  • 第8题:

    以下说法正确的是( )

    A.宏定义是C语句,所以要在行末加分号

    B.可以使用#undef命令来终止宏定义的作用域

    C.在进行宏定义时,宏定义不能层层置换

    D.对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换


    正确答案:B

  • 第9题:

    以下叙述中,正确的是()

    • A、“#definePRICE=30”定义了与30等价的符号常量PRICE
    • B、预编译处理命令行都必须以“#”开头
    • C、程序中使用带参的宏时,参数类型要与宏定义时一致
    • D、宏名只能包含大写字母和数字字符

    正确答案:B

  • 第10题:

    表示一个语句是宏定义语句的标识符是()。

    • A、include
    • B、#include
    • C、define
    • D、#define

    正确答案:D

  • 第11题:

    以下有关宏定义的叙述,正确的是()

    • A、宏名必须用大写字母表示
    • B、带参数的宏就是一个函数
    • C、宏名不具有类型
    • D、宏定义和其它C语句,其末尾要加分号

    正确答案:C

  • 第12题:

    单选题
    以下叙述中,正确的是()
    A

    “#definePRICE=30”定义了与30等价的符号常量PRICE

    B

    预编译处理命令行都必须以“#”开头

    C

    程序中使用带参的宏时,参数类型要与宏定义时一致

    D

    宏名只能包含大写字母和数字字符


    正确答案: C
    解析: 暂无解析

  • 第13题:

    对于已经被定义过可能抛出异常的语句,在编译时()。

    A.必须使用try/catch语句处理异常

    B.如果程序错误,则必须使用try/catch语句处理异常

    C.不使用try/catch语句会出现编译错误

    D.不使用try/catch语句不会出现编译错误


    正确答案:B

  • 第14题:

    以下叙述中错误的是______。

    A.C语句必须以分号结束

    B.复合语句在语法上被看作一条语句

    C.空语句出现在任何位置都不会影响程序运行

    D.赋值表达式末尾加分号就构成赋值语句


    正确答案:C
    解析:C语言中,只有一个分号的语句称为空语句,程序执行时并不产生任何的动作,但是随意加分号会产生错误,例如D选项所说到情况,这样就产生了错误。

  • 第15题:

    以下叙述中不正确的是( )。

    A.预处理命令行都必须以#号开始

    B.在程序中凡是以#号开始的语句行都是预处理命令行

    C.宏替换不占用运行时间,只占编译时间

    D.定义#define PI 3.1415926;是正确的


    正确答案:D
    解析:带参数的宏定义如下:#define宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“3.1415926”这个字符串,但宏定义不是C语句,行末不加分号。

  • 第16题:

    下述描述正确的是(39)。

    A.在程序的一行中可以出现多个有效的预处理命令行

    B.使用带参宏时,参数的类型应与宏定义时的一致

    C.宏替换不占运行时间,只占编译时间

    D.宏定义不能出现在函数的内部


    正确答案:C
    解析:本题考查程序中宏的一些基本知识。宏的作用是定义一个名字替换,一般给容易发生变化的变量定义宏,这样方便对程序中变量的修改。编译器在编译时将宏和变量进行替换,因此,宏替换不占运行时间,只占编译时间。

  • 第17题:

    以下叙述中错误的是( )。A.C语句必须以分号结束B.复合语句在语法上被看作一条语句SX

    以下叙述中错误的是( )。

    A.C语句必须以分号结束

    B.复合语句在语法上被看作一条语句

    C.空语句出现在任何位置都不会影响程序运行

    D.赋值表达式末尾加分号就构成赋值语句


    正确答案:C
    本题考查的是c语句。“空语句出现在任何位置都不会影响程序运行”这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无休止地进行下去,导致了此循环为死循环。

  • 第18题:

    #define能做简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为( )。A.

    B.

    C.

    D.

    A.A

    B.B

    C.C

    D.D


    正确答案:C
    本题考查带参数宏的格式:#define标识符(形参表)形参表达武。其功能是:把预处理程序中出现的所有带实参的宏名,展开形成由实参组成的表达式。故C正确。

  • 第19题:

    下面叙述错误的是()。

    A.“define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE

    B.C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率

    C.“include”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令

    D.宏定义也是C语句,必须在行末加分号


    正确答案:D

  • 第20题:

    若程序中有宏定义行:#define N 100 则以下叙述中正确的是( )。

    A.宏定义行中定义了标志符N的值为整数100

    B.在编译程序对C源程序进行编译预处理时用100替换标志符N

    C.对C源程序进行编译时用100替换标志符N

    D.在运行时用100替换标志符N


    正确答案:B

  • 第21题:

    若有以下宏定义:  #define  N  2  #define  Y(n)  ((N+1)*n)  则执行赋值语句z=2*(N+Y(5));后,变量z的值是多少?


    正确答案:变量z的值是34

  • 第22题:

    编译预处理包括()。

    • A、文件包含、宏定义和条件编译
    • B、构造工程文件
    • C、语句注释
    • D、编辑源程序

    正确答案:A

  • 第23题:

    单选题
    表示一个语句是宏定义语句的标识符是()。
    A

    include

    B

    #include

    C

    define

    D

    #define


    正确答案: C
    解析: 暂无解析

  • 第24题:

    单选题
    若程序中有宏定义行:#define N 100则以下叙述中正确的是(  )。
    A

    宏定义行中定义了标识符N的值为整数100

    B

    在编译程序对C源程序进行预处理时用100替换标识符N

    C

    上述宏定义行实现将100赋给标识符N

    D

    在运行时用100替换标识符N


    正确答案: B
    解析:
    D项正确,预处理程序对源程序中所有使用宏名的地方进行直接替换。A项错误,宏定义没有类型限制;B项错误,预处理程序进行宏替换,而非编译程序;C项错误,宏定义不是赋值操作,而是进行在预编译时进行替换。答案选择D选项。