Error[8]: Undefined offset: 96, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(


一、下列叙述中正确的是(  )。


(A)机器数补码的符号位取反即是偏移码

(B)机器数原码除符号位外各位取反即是反码

(C)机器数反码的最后(即最右边)一位上加1即是补码

(D)机器数原码、反码、补码均相同

       【解析】偏移码(移码)通过将补码符号位取反得到相应的移码


正数的原码、反码、补码均相同;负数的反码是原码除符号位外各位取反,负数的补码是反码的末位+1。


       【答案】(A)


二、计算机内部表示指令和数据应采用(  )。


(A)ASCII码

(B)二级制与八进制

(C)二进制、八进制、与十六进制

(D)二进制

       【解析】计算机内部均使用二进制表示各种信息,但计算机在与外部沟通中会采用人们比较熟悉和方便阅读的形式。


       【答案】(D)


三、下列叙述中错误的是(  )。


(A)静态地址重定位要求程序必须占用连续固定的内存空间

(B)动态地址重定位要求程序必须占用连续固定的内存空间

(C)动态地址重定位是在程序执行期间进行的

(D)静态地址重定位是在程序执行之前进行的

       【答案】(B)


四、流程图是描述算法的很好的工具,流程图一般由几种基本图形组成。


其中输入输出框的图形是(  )。


(A)平行四边形

(B)长方形(C)椭圆形(D)菱形

       【解析】

       【答案】(B)


五、以下不能用于描述算法的是(  )。


(A)文字叙述

(B)程序语句(C)伪代码和流程图(D)E-R图

       【解析】算法的描述有伪代码、流程图、N-S结构图等方法。


E-R图是实体联系图,属于数据模型,不能用于描述算法。


       【答案】(B)


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


(A)算法正确的程序可以有零个输入

(B)算法正确的程序最终一定会结束

(C)算法正确的程序可以有零个输出

(D)算法正确的程序对于相同的输入一定有相同的结果

       【解析】算法的特征:输入,一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件;输出,一个算法有一个或者多个输出,以反映数据加工的结果。


       【答案】(C)


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


(A)使用3种基本结构构成的程序只能解决简单问题

(B)结构化程序由顺序、分支、循环3种基本结构组成

(C)C语言是一种结构化程序设计语言

(D)结构化程序设计提倡模块化的设计方法

       【解析】结构化程序设计由3种基本控制结构组成:顺序结构、选择结构、循环结构。


由这3种基本结构组成的算法结构可以解决任何复杂的问题,由它们所构成的算法称为结构化算法,由它们所构成的程序称为结构化程序。


       【答案】(A)


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


(A)在进行模块化程序设计的时候,应首先完成每个模块的编写、调试,再集中考虑主程序的算法

(B)同一程序的各模块可由一组人员同时进行编写、调试,可提高编写程序的效率

(C)模块化的程序设计是采用自顶向下、逐步细化的原则

(D)程序的每个模块都可通过3种基本结构实现

       【解析】

       【答案】(A)

九、以下选项中叙述正确的是(  )。


(A)函数体必须由“{”开始

(B)C程序必须由main语句开始

(C)C程序中的注释可以嵌套

(D)C程序中的注释必须在一行内完成

       【解析】函数定义由两部分组成:函数头和函数体。


函数头包括函数名、函数类型、函数参数名和参数类型。


例如,int max(int x, int y)为函数头,max为函数名,函数类型为int,函数参数名为x,y,参数类型也为int型。


用“{}”括起来的部分称为函数体,“{”表示函数体的开始,“}”表示函数体的结束。


程序总是从main函数开始执行的,不是main语句。


       【答案】(A)

十、以下选项中不合法的标识符是(  )。


(A)&a

(B)FOR(C)print(D)_00

       【解析】标识符就是一个名称,用来表示常量、变量、函数以及文件等名称。


合法的标识符由字母(C语言中区分大小写)、数字和下划线组成, 并且必须以字母或下划线开头


另外,任何编程中,关键字不能作为标识符。


“for”表示一个循环语句,是关键字,但是C语言中区分大小写,所以“FOR”可以作为标识符。


       【答案】(A)


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


(A)C语言中的关键字不能作变量名,但可以作为函数名

(B)C标识符的长度不能任意长,最多只能包含16个字符

(C)标识符总是由字母、数字和下划线组成,且第一个字符不得为数字

(D)用户自定义的标识符必须“见名知意”,如果随意定义,则会出现编译错误

       【解析】C语言中的关键字既不能作变量名,也不能作用户函数名。


C语言中没有最大长度的限制。


       【答案】(C)


二、以下选项中能表示合法常量的是(  )。


(A)1,200

(B)1.5E2.0(C)'\'(D)"单引号7"

       【解析】阶码的表示必须为整数。


"\007"的双引号内的内容是字符串,但\ddd是需要记忆的特殊转义字符形式。


       【答案】(C)


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


(A)数值型常量有正值和负值的区分

(B)常量可以用一个符号名来代表

(C)定义符号常量必须用类型名来设定常量的类型

(D)常量是程序运行过程中值不能被改变的量

       【解析】常量分为3类:整型常量、实型常量和字符型常量,其中整型常量和实型常量又称为数值型常量。


字符型常量,用带有#define 标识符 常量的字符表示。


符号常量是一种特殊的常量,其值和类型是通过符号常量的定义命令决定的,一般形式为:

         (B)1e0

         #define 是一条预处理命令,又称为宏定义命令,其功能是把命令格式中的标识符定义为其后的常量值。


         在C语言的预编译处理中,可以用符号名代表一个常量,定义时不必指定常量类型。


       【答案】(C)


四、以下选项中可用作C程序合法实数的是(  )。


(A)3.0e0.2

(C)E9(D)9.12E(B)八进制

       【解析】实型常量在C语言中又称浮点数,浮点数均为有符号浮点数。


其值有两种表达形式,分别为十进制小数形式和指数形式。


指数形式为:

         十进制数(尾数) 阶码标识“e”或“E” 阶码(必须由数字且只能为整数,可以带符号)

         E79(阶码标志E之前无数字)和2.7E(无阶码)是不合法的实型数据。


       【答案】(B)


五、C源程序中不能表示的数制是(  )。


(A)十六进制

(C)十进制(D)二进制(B)0118

       【解析】程序中是根据前缀来区分各种进制数的,十进制整型常量没有前缀,八进制整型常量以0为前缀,十六进制整型常量以0X或0x作为前缀。


       【答案】(D)


六、以下选项中,能用作数据常量的是(  )。


(A)115L

(C)1.5e1.5(D)o115(B)8

       【解析】整型常量的无符号数也可用后缀U或u来表示。


例如,358u、0x38Au、235Lu(L表示long型)均为无符号数。


前缀、后缀可同时使用,以表示各种类型的数。


0118表示八进制,但是不能含有8。


       【答案】(D)


七、C语言中double型数据占字节数为(  )。


(A)4

(C)12(D)16名称

       【解析】double型数据在内存中占8个字节,float型数据占4个字节,int型数据占2个字节,char型数据占1个字节。


       【答案】(B)

算术运算符
运算符运算规则运算对象运算结果类别
%取余整型整型双目(B)c=c+32


八、已知大写字母“A”的ASCII码值是65,小写字母“a”的ASCII码值是97。


以下不能将变量c中的大写字母转换为对应小写字母的语句是(  )。


         printf(格式控制串,输出表列)

(A)c=('A'+c)%26-'a'

(C)c=c-'A'+'a'(D)c=(c-'A')%26+'a'

       【解析】小写字母比对应的大写字母的ASCII码值大32。


已知变量c中的字母是大写,那么就需要将c中的字符+32就能得到对应小写字母,(B)和(C)正确。


变量c中已知是大写字母,其ASCII码值 c\geqslant 65" src="https://latex.codecogs.com/gif.latex?97%3E%20c%5Cgeqslant%2065" />。


因为c-'A'的ASCII码差值不会大于26(26个字母),除以26无法整除,得到的余数就是差值,即取余数与否没有影响。


       【答案】(A)

C语句 数据的输出——printf函数

         printf函数的作用是向终端(屏幕或系统隐含指定的输出设备)输出若干个任意类型的数据。


printf函数的调用格式

         printf函数的调用格式如下:

         printf("%d %x", a,b) 

printf函数格式字符

         组成格式控制串的字符通常由格式说明、转义字符和按原样输出的字符3部分组成。


格式说明由“%”开头,后跟格式字符,用来指定数据的输出格式。


转义字符以“\”开始,用来实现换行、跨越制表位或输出单引号、双引号等特殊字符,如"\n"实现回车换行。


除以上两类字符之外,在格式串中的其他字符将按照原样输出,用来在输出结果中增加其他信息。


printf函数的格式字符

         printf函数中格式控制的一般形式如下:

         % + 附加格式字符 + 

格式字符
说明d,i
以带符号的十进制形式输出整数(正数不输出符号)
c
以字符形式输出,只输出一个字符f
以小数形式输出单、双精度数,隐含输出6位小数
转义字符表
字符形式
功能十进制ASCII码值\n
换行10
(B)14.000000

十九、若有以下程序:

#include
main()
{	char c1,c2;
	c1 = 'C'+'8'-'3';c2 = '9'-'0';
	printf("%c %d\n",c1,c2);
}

          则程序的输出结果是(  )。


(A)H '9'

(B)H 9

(C)F '9'

(D)表达式不合法,输出无定值

       【解析】不用记'0'的ASCII码值是48,因为码值也是连续的,'8'和'3'之间的ASCII码差值也是5,‘C’往后面数5位就是c1。


       【答案】(B)        

        

不同数据类型之间的转换

         一个运算符两边的运算数的数据类型不同,那么,先要转换为相同的类型,此过程由编译系统自动完成。


这种转换分为两种情况:

         (1)运算符两边是不同精度同一种数据类型时,编译器进行同一类型间的转换。


         在VC中,float型数据与double型数据一起运算,所有的float型数据在运算中都自动转换成double型数据;int -> long。


         (2)参与运算的运算数类型不同,则先将它们转换成同一种类型,然后进行运算。


         int -> double(float)

         在赋值运算中,赋值号两边运算数的数据类型不同时, 赋值号右边运算数的数据类型将转换为左边运算数的数据类型。


二十、有以下程序:

#include
#include

main()
{	int a =1,b = 4,c = 2;
	double x = 10.5,y = 4.0,z;
	z = (a+b)/c+sqrt(y)*1.2/c+x;
	printf("%f\n",z);
}

          则程序的输出结果是(  )。


         (类型说明符)(表达式)

(A)13.700000

(C)15.400000(D)14.900000

       【解析】a+b=5,5/2 = 2(int型),sqrt(y) = 2.0(double型),2.0*1.2/2=1.2(double型),z = 2.0(int型自动转换成double型)+1.2+10.5=13.7。


       【答案】(A)

        

强制类型转换

         强制类型转换的一般形式:

double x = 5.16894; printf("%f\n", (int)(x*1000+0.5)/(double)1000);

         需转换的表达式如果不是单个变量,则要用括号将其括起来。


二十

一、若有以下程序段:

(B)5.175000

          则程序段的输出结果是(  )。


(A)5.70000

(C)5.169000(D)5.168000(B)1/(a*b*c)

         【答案】(C)

二十

二、若在程序中变量均已定义成int型,且已赋大于1的值,则下列选项中能正确表示代数式的表达式是(  )。


         变量 = 表达式

(A)1.0/a/b/c

(C)1.0/a*b*c(D)1/a/b/(double)c

       【解析】由于a、b、c均大于1,所以表达式小于1,需要用浮点型表示。


B选项由于变量于常量均为整型,不会自动转换为浮点型,所以B选项错误。


 

       【答案】(A)

算术运算符的优先级和结合性

         如果一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。


通常,算术运算符的优先级是取负值运算符>乘除运算符>加减运算符。


结合性是指当一个 *** 作对象两侧的运算符具有相同的优先级时,该 *** 作对象是先与左边的运算符结合,还是先与右边的运算符结合。


C语言中各运算符的结合性分为两种,即左结合性(自左向右)和右结合性(自右至左)。


除单目运算符、赋值运算符(=)和条件运算符是右结合性,其他运算都是左结合性。


赋值运算符和赋值表达式

         由“=”连接的式子称为赋值表达式。


其一般形式如下:

         变量 operater = 表达式

复合的赋值表达式

         符合的赋值表达式就是在赋值运算符之前其他的运算符而构成的表达式。


复合赋值表达式的一般形式:

         operater代表赋值或其他运算符

         变量 = 变量 operater(表达式)

         它等价于:

(B)552

         “a + = 2”等价于“a = a + 2”,其含义是把a的值加上2,然后再赋给a。


二十

三、设a、b、c是整型变量且均已赋值,则以下选项中的错误的赋值语句是(  )。


(A)a = (b = 3) = 1;

(B)a = (b = 2) + c;

(C)a = b = c + 10;

(D)a = 1 + (b = c = 2);

       【解析】括号的优先级最高,赋值运算符有右结合性,A选项中3赋值给b,按照赋值运算符的右结合性,应先考虑(b = 3) = 1,而(b = 3) 是表达式或者说是值,不是变量不能被赋值。


       【答案】(A)

二十

四、若有定义语句int a = 12;,则执行语句a += a -= a*a;后,a的值是(  )。


[+++]

(A)-264

(C)144(D)264

       【解析】按照右结合性,应该先计算a -= a*a,考虑优先级a*a=12*12=144,其表达式等价于a = a - 144,计算完后,a = -132。


再考虑,a += -132。


       【答案】(A)

自增和自减运算符

         自增1运算符记为“++”,其功能是使变量的值自动加1,如“a++”或“++a”。


自减1运算符记为“--”,其功能是使变量值自动减1,如“a--”或“--a”。


自增和自减运算符的用法

         (1)前置运算,运算符放在变量之前,如“++a”和“--a”;(2)后置运算,如“a++”和“a--”。


这两种用法的过程不同,但共同特点是,变量的值都会在运算后发生变化。


#include
void main()
{	int a;
	a = 5;
	printf("a = %d\n",++a);
	printf("a = %d\n",a++);
	printf("a = %d\n",a);
}

         程序执行过程

         对于表达式++a来说,由于前置运算的规则是先增1后运算,所以,先执行a = a + 1,即此时a的值变成了6,并将该值输出至屏幕。


         对于表达式a++来说,由于后置运算的规则是先运算后增1,所以,程序是先执行printf语句,将a的值输出到屏幕,即a的值还是6。


然后再执行a = a + 1,这时a的值还是7。


         最后一条语句将上面a的最终值显示在屏幕上。


 

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
计算机二级C语言题库_C_内存溢出

计算机二级C语言题库

计算机二级C语言题库,第1张


一、下列叙述中正确的是(  )。


(A)机器数补码的符号位取反即是偏移码

(B)机器数原码除符号位外各位取反即是反码

(C)机器数反码的最后(即最右边)一位上加1即是补码

(D)机器数原码、反码、补码均相同

       【解析】偏移码(移码)通过将补码符号位取反得到相应的移码


正数的原码、反码、补码均相同;负数的反码是原码除符号位外各位取反,负数的补码是反码的末位+1。


       【答案】(A)


二、计算机内部表示指令和数据应采用(  )。


(A)ASCII码

(B)二级制与八进制

(C)二进制、八进制、与十六进制

(D)二进制

       【解析】计算机内部均使用二进制表示各种信息,但计算机在与外部沟通中会采用人们比较熟悉和方便阅读的形式。


       【答案】(D)


三、下列叙述中错误的是(  )。


(A)静态地址重定位要求程序必须占用连续固定的内存空间

(B)动态地址重定位要求程序必须占用连续固定的内存空间

(C)动态地址重定位是在程序执行期间进行的

(D)静态地址重定位是在程序执行之前进行的

       【答案】(B)


四、流程图是描述算法的很好的工具,流程图一般由几种基本图形组成。


其中输入输出框的图形是(  )。


(A)平行四边形

(B)长方形(C)椭圆形(D)菱形

       【解析】

       【答案】(B)


五、以下不能用于描述算法的是(  )。


(A)文字叙述

(B)程序语句(C)伪代码和流程图(D)E-R图

       【解析】算法的描述有伪代码、流程图、N-S结构图等方法。


E-R图是实体联系图,属于数据模型,不能用于描述算法。


       【答案】(B)


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


(A)算法正确的程序可以有零个输入

(B)算法正确的程序最终一定会结束

(C)算法正确的程序可以有零个输出

(D)算法正确的程序对于相同的输入一定有相同的结果

       【解析】算法的特征:输入,一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件;输出,一个算法有一个或者多个输出,以反映数据加工的结果。


       【答案】(C)


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


(A)使用3种基本结构构成的程序只能解决简单问题

(B)结构化程序由顺序、分支、循环3种基本结构组成

(C)C语言是一种结构化程序设计语言

(D)结构化程序设计提倡模块化的设计方法

       【解析】结构化程序设计由3种基本控制结构组成:顺序结构、选择结构、循环结构。


由这3种基本结构组成的算法结构可以解决任何复杂的问题,由它们所构成的算法称为结构化算法,由它们所构成的程序称为结构化程序。


       【答案】(A)


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


(A)在进行模块化程序设计的时候,应首先完成每个模块的编写、调试,再集中考虑主程序的算法

(B)同一程序的各模块可由一组人员同时进行编写、调试,可提高编写程序的效率

(C)模块化的程序设计是采用自顶向下、逐步细化的原则

(D)程序的每个模块都可通过3种基本结构实现

       【解析】

       【答案】(A)

九、以下选项中叙述正确的是(  )。


(A)函数体必须由“{”开始

(B)C程序必须由main语句开始

(C)C程序中的注释可以嵌套

(D)C程序中的注释必须在一行内完成

       【解析】函数定义由两部分组成:函数头和函数体。


函数头包括函数名、函数类型、函数参数名和参数类型。


例如,int max(int x, int y)为函数头,max为函数名,函数类型为int,函数参数名为x,y,参数类型也为int型。


用“{}”括起来的部分称为函数体,“{”表示函数体的开始,“}”表示函数体的结束。


程序总是从main函数开始执行的,不是main语句。


       【答案】(A)

十、以下选项中不合法的标识符是(  )。


(A)&a

(B)FOR(C)print(D)_00

       【解析】标识符就是一个名称,用来表示常量、变量、函数以及文件等名称。


合法的标识符由字母(C语言中区分大小写)、数字和下划线组成, 并且必须以字母或下划线开头


另外,任何编程中,关键字不能作为标识符。


“for”表示一个循环语句,是关键字,但是C语言中区分大小写,所以“FOR”可以作为标识符。


       【答案】(A)


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


(A)C语言中的关键字不能作变量名,但可以作为函数名

(B)C标识符的长度不能任意长,最多只能包含16个字符

(C)标识符总是由字母、数字和下划线组成,且第一个字符不得为数字

(D)用户自定义的标识符必须“见名知意”,如果随意定义,则会出现编译错误

       【解析】C语言中的关键字既不能作变量名,也不能作用户函数名。


C语言中没有最大长度的限制。


       【答案】(C)


二、以下选项中能表示合法常量的是(  )。


(A)1,200

(B)1.5E2.0(C)'\'(D)"单引号7"

       【解析】阶码的表示必须为整数。


"\007"的双引号内的内容是字符串,但\ddd是需要记忆的特殊转义字符形式。


       【答案】(C)


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


(A)数值型常量有正值和负值的区分

(B)常量可以用一个符号名来代表

(C)定义符号常量必须用类型名来设定常量的类型

(D)常量是程序运行过程中值不能被改变的量

       【解析】常量分为3类:整型常量、实型常量和字符型常量,其中整型常量和实型常量又称为数值型常量。


字符型常量,用带有#define 标识符 常量的字符表示。


符号常量是一种特殊的常量,其值和类型是通过符号常量的定义命令决定的,一般形式为:

         (B)1e0

         #define 是一条预处理命令,又称为宏定义命令,其功能是把命令格式中的标识符定义为其后的常量值。


         在C语言的预编译处理中,可以用符号名代表一个常量,定义时不必指定常量类型。


       【答案】(C)


四、以下选项中可用作C程序合法实数的是(  )。


(A)3.0e0.2

(C)E9(D)9.12E(B)八进制

       【解析】实型常量在C语言中又称浮点数,浮点数均为有符号浮点数。


其值有两种表达形式,分别为十进制小数形式和指数形式。


指数形式为:

         十进制数(尾数) 阶码标识“e”或“E” 阶码(必须由数字且只能为整数,可以带符号)

         E79(阶码标志E之前无数字)和2.7E(无阶码)是不合法的实型数据。


       【答案】(B)


五、C源程序中不能表示的数制是(  )。


(A)十六进制

(C)十进制(D)二进制(B)0118

       【解析】程序中是根据前缀来区分各种进制数的,十进制整型常量没有前缀,八进制整型常量以0为前缀,十六进制整型常量以0X或0x作为前缀。


       【答案】(D)


六、以下选项中,能用作数据常量的是(  )。


(A)115L

(C)1.5e1.5(D)o115(B)8

       【解析】整型常量的无符号数也可用后缀U或u来表示。


例如,358u、0x38Au、235Lu(L表示long型)均为无符号数。


前缀、后缀可同时使用,以表示各种类型的数。


0118表示八进制,但是不能含有8。


       【答案】(D)


七、C语言中double型数据占字节数为(  )。


(A)4

(C)12(D)16名称

       【解析】double型数据在内存中占8个字节,float型数据占4个字节,int型数据占2个字节,char型数据占1个字节。


       【答案】(B)

算术运算符
运算符运算规则运算对象运算结果类别
%取余整型整型双目(B)c=c+32


八、已知大写字母“A”的ASCII码值是65,小写字母“a”的ASCII码值是97。


以下不能将变量c中的大写字母转换为对应小写字母的语句是(  )。


         printf(格式控制串,输出表列)

(A)c=('A'+c)%26-'a'

(C)c=c-'A'+'a'(D)c=(c-'A')%26+'a'

       【解析】小写字母比对应的大写字母的ASCII码值大32。


已知变量c中的字母是大写,那么就需要将c中的字符+32就能得到对应小写字母,(B)和(C)正确。


变量c中已知是大写字母,其ASCII码值 c\geqslant 65" src="https://latex.codecogs.com/gif.latex?97%3E%20c%5Cgeqslant%2065" />。


因为c-'A'的ASCII码差值不会大于26(26个字母),除以26无法整除,得到的余数就是差值,即取余数与否没有影响。


       【答案】(A)

C语句 数据的输出——printf函数

         printf函数的作用是向终端(屏幕或系统隐含指定的输出设备)输出若干个任意类型的数据。


printf函数的调用格式

         printf函数的调用格式如下:

         printf("%d %x", a,b) 

printf函数格式字符

         组成格式控制串的字符通常由格式说明、转义字符和按原样输出的字符3部分组成。


格式说明由“%”开头,后跟格式字符,用来指定数据的输出格式。


转义字符以“\”开始,用来实现换行、跨越制表位或输出单引号、双引号等特殊字符,如"\n"实现回车换行。


除以上两类字符之外,在格式串中的其他字符将按照原样输出,用来在输出结果中增加其他信息。


printf函数的格式字符

         printf函数中格式控制的一般形式如下:

         % + 附加格式字符 + 

格式字符
说明d,i
以带符号的十进制形式输出整数(正数不输出符号)
c
以字符形式输出,只输出一个字符f
以小数形式输出单、双精度数,隐含输出6位小数
转义字符表
字符形式
功能十进制ASCII码值\n
换行10
(B)14.000000

十九、若有以下程序:

#include
main()
{	char c1,c2;
	c1 = 'C'+'8'-'3';c2 = '9'-'0';
	printf("%c %d\n",c1,c2);
}

          则程序的输出结果是(  )。


(A)H '9'

(B)H 9

(C)F '9'

(D)表达式不合法,输出无定值

       【解析】不用记'0'的ASCII码值是48,因为码值也是连续的,'8'和'3'之间的ASCII码差值也是5,‘C’往后面数5位就是c1。


       【答案】(B)        

        

不同数据类型之间的转换

         一个运算符两边的运算数的数据类型不同,那么,先要转换为相同的类型,此过程由编译系统自动完成。


这种转换分为两种情况:

         (1)运算符两边是不同精度同一种数据类型时,编译器进行同一类型间的转换。


         在VC中,float型数据与double型数据一起运算,所有的float型数据在运算中都自动转换成double型数据;int -> long。


         (2)参与运算的运算数类型不同,则先将它们转换成同一种类型,然后进行运算。


         int -> double(float)

         在赋值运算中,赋值号两边运算数的数据类型不同时, 赋值号右边运算数的数据类型将转换为左边运算数的数据类型。


二十、有以下程序:

#include
#include

main()
{	int a =1,b = 4,c = 2;
	double x = 10.5,y = 4.0,z;
	z = (a+b)/c+sqrt(y)*1.2/c+x;
	printf("%f\n",z);
}

          则程序的输出结果是(  )。


         (类型说明符)(表达式)

(A)13.700000

(C)15.400000(D)14.900000

       【解析】a+b=5,5/2 = 2(int型),sqrt(y) = 2.0(double型),2.0*1.2/2=1.2(double型),z = 2.0(int型自动转换成double型)+1.2+10.5=13.7。


       【答案】(A)

        

强制类型转换

         强制类型转换的一般形式:

double x = 5.16894; printf("%f\n", (int)(x*1000+0.5)/(double)1000);

         需转换的表达式如果不是单个变量,则要用括号将其括起来。


二十

一、若有以下程序段:

(B)5.175000

          则程序段的输出结果是(  )。


(A)5.70000

(C)5.169000(D)5.168000(B)1/(a*b*c)

         【答案】(C)

二十

二、若在程序中变量均已定义成int型,且已赋大于1的值,则下列选项中能正确表示代数式的表达式是(  )。


         变量 = 表达式

(A)1.0/a/b/c

(C)1.0/a*b*c(D)1/a/b/(double)c

       【解析】由于a、b、c均大于1,所以表达式小于1,需要用浮点型表示。


B选项由于变量于常量均为整型,不会自动转换为浮点型,所以B选项错误。


 

       【答案】(A)

算术运算符的优先级和结合性

         如果一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。


通常,算术运算符的优先级是取负值运算符>乘除运算符>加减运算符。


结合性是指当一个 *** 作对象两侧的运算符具有相同的优先级时,该 *** 作对象是先与左边的运算符结合,还是先与右边的运算符结合。


C语言中各运算符的结合性分为两种,即左结合性(自左向右)和右结合性(自右至左)。


除单目运算符、赋值运算符(=)和条件运算符是右结合性,其他运算都是左结合性。


赋值运算符和赋值表达式

         由“=”连接的式子称为赋值表达式。


其一般形式如下:

         变量 operater = 表达式

复合的赋值表达式

         符合的赋值表达式就是在赋值运算符之前其他的运算符而构成的表达式。


复合赋值表达式的一般形式:

         operater代表赋值或其他运算符

         变量 = 变量 operater(表达式)

         它等价于:

(B)552

         “a + = 2”等价于“a = a + 2”,其含义是把a的值加上2,然后再赋给a。


二十

三、设a、b、c是整型变量且均已赋值,则以下选项中的错误的赋值语句是(  )。


(A)a = (b = 3) = 1;

(B)a = (b = 2) + c;

(C)a = b = c + 10;

(D)a = 1 + (b = c = 2);

       【解析】括号的优先级最高,赋值运算符有右结合性,A选项中3赋值给b,按照赋值运算符的右结合性,应先考虑(b = 3) = 1,而(b = 3) 是表达式或者说是值,不是变量不能被赋值。


       【答案】(A)

二十

四、若有定义语句int a = 12;,则执行语句a += a -= a*a;后,a的值是(  )。


(A)-264

(C)144(D)264

       【解析】按照右结合性,应该先计算a -= a*a,考虑优先级a*a=12*12=144,其表达式等价于a = a - 144,计算完后,a = -132。


再考虑,a += -132。


       【答案】(A)

自增和自减运算符

         自增1运算符记为“++”,其功能是使变量的值自动加1,如“a++”或“++a”。


自减1运算符记为“--”,其功能是使变量值自动减1,如“a--”或“--a”。


自增和自减运算符的用法

         (1)前置运算,运算符放在变量之前,如“++a”和“--a”;(2)后置运算,如“a++”和“a--”。


这两种用法的过程不同,但共同特点是,变量的值都会在运算后发生变化。


#include
void main()
{	int a;
	a = 5;
	printf("a = %d\n",++a);
	printf("a = %d\n",a++);
	printf("a = %d\n",a);
}

         程序执行过程

         对于表达式++a来说,由于前置运算的规则是先增1后运算,所以,先执行a = a + 1,即此时a的值变成了6,并将该值输出至屏幕。


         对于表达式a++来说,由于后置运算的规则是先运算后增1,所以,程序是先执行printf语句,将a的值输出到屏幕,即a的值还是6。


然后再执行a = a + 1,这时a的值还是7。


         最后一条语句将上面a的最终值显示在屏幕上。


 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/578103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存