国家二级C语言(C语言基础知识)机试模拟试卷1(共242题)_第1页
国家二级C语言(C语言基础知识)机试模拟试卷1(共242题)_第2页
国家二级C语言(C语言基础知识)机试模拟试卷1(共242题)_第3页
国家二级C语言(C语言基础知识)机试模拟试卷1(共242题)_第4页
国家二级C语言(C语言基础知识)机试模拟试卷1(共242题)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C语言(C语言基础知识)机试模拟试卷1(共9套)(共242题)国家二级C语言(C语言基础知识)机试模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、C程序书写格式严格,要求一行内只能写一个语句B、C程序书写格式自由,一个语句可以写在多行上C、C程序中的注释只能出现在程序的开始位置和语句的后面D、用C语言编写的程序只能放在一个程序文件中标准答案:B知识点解析:本题主要考查的是C语言结构中的源程序书写格式这个知识点,在C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置;C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。2、以下关于C语言的叙述中正确的是A、C语言中的变量可以在使用之前的任何位置进行定义B、在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致C、C语言的数值常量中夹带空格不影响常量值的正确表示D、C语言中的注释不可以夹在变量名或关键字的中间标准答案:D知识点解析:C语言中的注释可以出现在程序中的任何位置,但是不能夹在变量或者关键字之间;C语言的变量在函数开始位置进行定义,也可以在变量使用前位置定义;一个浮点数可以和一个整数相加,运算符两侧的运算类型也可以不一致;数值常量中不允许夹带空格。3、有以下程序#include<stdio.h>main(){inta=0,b=0;/*给a赋值a=10;b=20;给b赋值*/printf("a+b=%d\n",a+b);/*输出计算结果*/}程序运行后的输出结果是A、a+b=30B、a+b=10C、出错D、a+b=0标准答案:D知识点解析:C语言规定,在字符“/*”和其后紧跟的第一个字符“*/”中间的部分是注释内容,且注释部分的内容不参与程序的编译和运行,因此,本题中程序语句“a=10;b=20;”没有执行。4、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是A、一条C语句可能会被转换成多条机器指令B、一条C语句对应转换成一条机器指令C、一条C语句可能会被转换成零条机器指令D、某种类型和格式的C语句被转换成机器指令的条数是固定的标准答案:B知识点解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。5、以下选项中不属于C语言程序运算符的是A、sizeofB、()C、<>D、&&标准答案:C知识点解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。6、若变量已正确定义并赋值,以下不能构成C语句的选项是A、A=a+b;B、B++;C、a=a+bD、A?a:b;标准答案:C知识点解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。7、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C、只有简单算法才能在有限的操作步骤之后结束D、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。8、以下选项中不合法的标识符是A、FORB、&aC、printD、_00标准答案:B知识点解析:合法的标识符要满足组成字符为a~z以及A~Z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误的。9、以下选项中,能用作数据常量的是A、115LB、0118C、1.5e1.5D、o115标准答案:A知识点解析:本题考查常量定义。数据常量可有10进制、8进制、16进制、指数法等,8进制数字为0-7,第一个字符为0,而不是o。指数法表示时,指数部分须为整型,选项A中数字后加入L是说明此变量为长整型,是正确的常量表示形式。10、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A、连接符B、大写字母C、数字字符D、下划线标准答案:A知识点解析:在C语言中,合法标识符的命令规则是:标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。在C语言的标识符中,大写字母和小写字母被认为是两个不同的字符。选项A是连字符,不在C语言规定的命名变量标识符的范围内。11、以下选项中,能用作用户标识符的是A、_0_B、8_8C、voidD、unsigned标准答案:A知识点解析:在C语言中,用户的标识符只能由字母或下划线开始。一般强调文见其义的命名方法。但是C语言中的保留字不能用作用户的标识符。而选项C和D全部为保留字,选项B中以数字开头,这些都不正确。12、下列定义变量的语句中错误的是A、floatUS$;B、doubleint_;C、charFor;D、int_int;标准答案:A知识点解析:C语言规定,变量的标识符只能由字母、数字或下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项B定义的变量标识符int_和选项D定义的变量标识符_int与C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,而在选项A包含有特殊字符$,因而其不符合C语言的变量命名规定。13、以下选项中关于C语言常量的叙述错误的是A、常量分为整型常量、实型常量、字符常量和字符串常量B、经常被使用的变量可以定义成常量C、常量可分为数值型常量和非数值型常量D、所谓常量,是指在程序运行过程中,其值不能被改变的量标准答案:B知识点解析:常量指在程序运行过程中,其值不能被改变的量。常量分为整型常量(即整常数)、实型常量、字符型常量和字符串常量。常量也可以按数据类型分为为数据常量和非数据常量。变量是指在程序运行过程中,其值能被改变的量。14、以下选项中,不合法的C语言用户标识符是A、AaBcB、a-bC、a_bD、_1标准答案:B知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项A中出现了非法的字符--。15、以下关于C语言数据类型使用的叙述中错误的是A、若要保存带有多位小数的数据,可使用双精度类型B、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型C、若只处理“真”和“假”两种逻辑值,应使用逻辑类型D、整数类型表示的自然数是准确无误差的标准答案:C知识点解析:在C语言中没有定义逻辑类型,而是用0代表假,用非零代表真。16、以下选项中不能用作C程序合法常量的是A、’\123’B、1,234C、123D、\x7D标准答案:B知识点解析:选项B中的1,234在两侧加双引号才是C程序的合法字符串常量。17、阅读以下程序#include<stdio.h>main(){intcase;floatprintF;printf("请输入2个数:");scanf("%d%f",&case,&printF);printf("%d%f\n",case,printF);}该程序在编译时产生错误,其出错原因是A、定义语句出错,printF不能用作用户自定义标识符B、定义语句出错,case是关键字,不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出case的值标准答案:B知识点解析:case是C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。18、以下选项中合法的标识符是A、1-1B、1_1C、_11D、1__标准答案:C知识点解析:本题考查标识符定义。合法标识符的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。19、关于C语言的符号常量,以下叙述中正确的是A、符号常量的符号名是标识符,但必须大写B、符号常量在整个程序中其值都不能再被重新定义C、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量D、符号常量的符号名必须是常量标准答案:C知识点解析:在C语言程序中,用一个符号名来代表一个常量,称为符号常量。注意:这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。一般在程序中都是利用宏定义来定义符号常量的,在代码中可以利用undef来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用大写。20、关于C语言的变量,以下叙述中错误的是A、所谓变量是指在程序运行过程中其值可以被改变的量B、变量所占的存储单元地址可以随时改变C、程序中用到的所有变量都必须先定义后才能使用D、由三条下划线构成的符号名是合法的变量名标准答案:B知识点解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。21、以下选项中不属于C语言标识符的是A、用户标识符B、关键字C、常量D、预定义标识符标准答案:C知识点解析:C语言的标识符可分为以下3类:①关键字。C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如,int、double、if、else、while、for等。②预定义标识符。即预先定义并具有特定含义的标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。22、以下选项中合法的变量是A、5aB、A%C、_10_D、sizeof标准答案:C知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成如下:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;因此选项A中数字开头,选项B出现了非法字符%,而选项D中sizeof为关键字,不能为变量命名。23、以下叙述中正确的是A、标识符的长度不能任意长,最多只能包含16个字符B、语言中的关键字不能作变量名,但可以作为函数名C、用户自定义的标识符必须“见名知义”,如果随意定义,则会出编译错误D、标识符总是由字母、数字和下划线组成,且第一个字符不得为数字标准答案:D知识点解析:标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。C语言合法标识符的命名规则是:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;③大写字母与小写字母被认为是两个不同的字符;④C语言规定了一个标识符允许的字符个数,为32,超过的字符将不被识别。C语言的标识符可分为以下3类:①关键字,不能用于为自定义标识符命名。②预定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名,一般做到见名知义,但是没有特殊规定。24、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A、关键字可用作用户标识符,但失去原有含义B、在标识符中大写字母和小写字母被认为是相同的字符C、用户标识符可以由字母和数字任意顺序组成D、预定义标识符可用作用户标识符,但失去原有含义标准答案:D知识点解析:预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin等和编译预处理命令名(如define和include)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。25、以下叙述中错误的是A、常量可以用一个符号名来代表B、数值型常量有正值和负值的区分C、常量是在程序运行过程中值不能被改变的量D、定义符号常量必须用类型名来设定常量的类型标准答案:D知识点解析:C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式如下:#define<符号常量名>(常量)其中,<符号常量名)用标识符,习惯上用大写字母,<常量>可以是数字常量,也可以是字符。国家二级C语言(C语言基础知识)机试模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、若有以下程序,#includemain(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%d\n",c1,c2);}则程序的输出结果是A、H9B、H’9’C、F’9’D、表达式不合法输出无定值标准答案:A知识点解析:字符常量允许进行简单的算术运算,则’C’+5表示H,而’9’-’0’则表示数值9。2、下面选项中合法的字符常量是A、XB、’abc’C、’X’D、’\’标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字符“\”要用两个“\\”表示一个反斜杠。3、以F叙述中正确的是A、字符常量在内存中占2个字节B、转义字符要用双引号括起来,以便与普通的字符常量区分开C、字符常量需要用单引号括起来D、字符常量是不能进行关系运算的标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。4、以下叙述中正确的是A、字符变量在定义时不能赋初值B、同一英文字母的大写和小写形式代表的是同一一个字符常量C、字符常量可以参与任何整数运算D、转义字符用@符号开头标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。5、若有定义语句:chara=’\82’;则变量aA、包含1个字符B、说明不合法C、包含2个字符D、包含3个字符标准答案:B知识点解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用’\ddd’3位八进制数代表的一个ASCII字符,也可以’\xhh’2位十六进制数代表的一个ASCII字符。选项A中的八进制表示出现字符8,非法。6、有以下程序main(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}程序的输出结果是A、输出格式不合法,输出出错信息B、65,90C、65,89D、A,Y标准答案:C知识点解析:C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。7、C语言中char类型数据占字节数为A、2B、3C、1D、4标准答案:C知识点解析:C语言中char类型数据占字节数为1。8、有以下程序main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%cha",a);}程序运行后的输出结果是A、HB、AC、hD、a标准答案:C知识点解析:表达式a=(a>=’A’&&a<=’Z’)?(a+32):a,为条件表达式,如果a是大写字符,则转换为小写字符存放到a中,否则不变。9、以下正确的字符串常量是A、’abc’B、OlympicGamesD、\\\标准答案:C知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符.用来代表一个特定的ASCII字符。利用两个’\\’表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。10、若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是A、sqrt(fabs(pow(n,x)+pow(x,e)))B、sqrt(abs(n^x+e^x))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))标准答案:C知识点解析:n和e的x幂次方,要分别调用C语言的数学库函数doublepow(n,x)和doubleexp(x),因为这两个函数的返回值都为double型,对其两者的和计算绝对值,调用库函数doublefabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数doublesqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中算术表达式的值。11、表达式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5标准答案:C知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4.再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。12、若有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为A、1.9B、1C、2D、2.4标准答案:B知识点解析:由于x,y,z都是整型数据,所以x除以y的值为整型数值1,1和0.9相加得到1.9,再转换为整型数1赋给整型变量z。13、表达式3.6.5/2+1.2+5%2的值是A、4.8B、3.3C、3.8D、4.3标准答案:C知识点解析:表达式的计算过程为:3.6-5/2+1.2+5%2=3.6—2+1.2+1=3.8。此题要注意5/2的结果是2,而不2.5.因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。14、有以下定义:inta:longb:doublex,y;则以下选项中正确的表达式是A、a%(int)(x-y)B、a=x

yC、(a*y)%bD、y=x+y=x标准答案:A知识点解析:选项B中<>运算符不存在。选项C中double类型不能进行取余(%)操作,要求两个运算数必须是整数,选项D中x+y=x错误。15、若有以下程序#includemain(){inta=0,b=0,c=0,d;c=(a+=b,,b+=a);/*第4行*/d=c::/*第5行*/:/*第6行*/printf("%d,%d,%d\n",a,b,c);/*第7行*/}编译时出现错误,你认为出错的是A、第4行B、第5行C、第6行D、第7行标准答案:A知识点解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C语言的空语句.是编译程序可以识别并且编译的,因此第5、6行都是正确的。16、不能正确表示数学式的表达式是A、a*b/cB、a/c*bC、a/b*cD、a*(b/c)标准答案:C知识点解析:表达式的含义为a乘以b除以c,选项C正好曲解了这一个含义,17、C语言程序中,运算对象必须是整型数的运算符是A、/B、%C、&&D、*标准答案:B知识点解析:%要求参与运算的运算量为整型,其他三个运算符对F参与运算的运算量没有直接要求。18、若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是A、i=(a+k)<=(i+k);B、a=a++,i++;C、i=a%11;D、i=!a;标准答案:C知识点解析:在C语言中,求余运算符的运算对象只能是整型,在题目中,变量a是一个双精型实型变量。19、设变量已正确定义并赋值,以下正确的表达式是A、x=y+z+5,++yB、int(15.8%5)C、x=y*5=x+zD、x=25%5.0标准答案:A知识点解析:在赋值表达式中,赋值符号“=”的左边只能为赋值的变量.不能为表达式,右边可以为常量或者是表达式,故选项C错误;在取余运算中,运算符“%”两边都必须是整型数据,所以选项B、D)错误,选项A是C语言中的逗号表达式。20、若有定义语句:intx=10;则表达式x=x+x的值为A、20B、OC、.10D、10标准答案:C知识点解析:表达式x-=x+x等价于x=x-(x+x),整型变量x的初始值等于10,计算题目所求表达式的值时,首先计算x与x的和等于20,然后再用10减去20等于-10,得到该表达式的值。21、有以下程序#includemain(){inta=1,b=0;printff"%d,",b=a+b);printf("%d\n",a=2*b);}程序运行后的输出结果是A、1,0B、3,2C、1,2D、0,0标准答案:C知识点解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为1和0:在第二条语句中,首先计算出a和b的和等于1,把此值赋给变量b,并在屏幕上输出此时变量b的值1:在第三条语句中,计算出2乘以1的积等于2,把2赋给变量a,再把变量a的值在屏幕上输出。22、若变量均已正确定义并赋值,以下合法的C语言赋值语句是A、x=n%2.5:B、x+n=i;C、x=5=4+1;D、x=y==5;标准答案:D知识点解析:选项D的含义是把关系表达式y==5的值赋给变量x。所以这是一条正确的赋值语句。因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量。因为求余运算符“%”两侧的运算对象都应当是整型数据。23、若有定义语句:inta=3,b=2,c=1;以下选项中错误的赋值表达式是A、a=b=c+l;B、a=(b=4)=3;C、a=(b=4)+c;D、a=1+(b=C=c=4);标准答案:B知识点解析:本题主要考查赋值表达式,对于赋值表达式来说。赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。24、表达式a+=a=a=9的值是A、9B、0C、18D、9标准答案:B知识点解析:第一步a=9,然后计算a.a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。25、若有以下程序#includemain(){inta=-11,b=10;a/=b/=-4;printf("%d%d\n",a,b);)则程序的输出结果是A、.1.2B、5.2C、4.3D、5-3标准答案:B知识点解析:对于语句a/=b=-4:相当于a=a/(b=b/-4);a初值为-11.b的初值为10,则运算以后10/-4值为-2,-11/-2值为5。国家二级C语言(C语言基础知识)机试模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式B、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数C、若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4标准答案:A知识点解析:选项B中a=10,在赋值时会把10自动转换为double类型然后赋值,实型变量中不可能存放整型。而选项C中执行a=b后,b的值不变还是9,选项D中执行a=b;b=a;后,a的值为9,b的值也为9。2、有以下程序#include<stdio.h>main(){inta=3;printf("%d\n",(a+=a-=a*a));}程序运行后的输出结果是A、9B、0C、3D、-12标准答案:D知识点解析:对于表达式a+=a-=a*a相当于a=a-(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。3、若有定义和语句:inta,b;scanf("%d,%d,",&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是A、3,5B、3,5,C、3,5D、3,5,4标准答案:C知识点解析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到输入流中,不能随意加入空格等,否则无法得到正确的输入结果。4、设有定义:intx=2;以下表达式中,值不为6的是A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1标准答案:C知识点解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;选项B中,值为6。选项C中x*=x+1等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。5、有以下程序#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是A、2,3,1B、2,3,2C、2,3,3D、2,2,1标准答案:A知识点解析:在程序中,整型变量x、y的初值都为1,赋值语句z=x++,y++,++y右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的值为++y的值。执行逗号表达式“x++,y++,++y”后,x的值为2,y的值为3,z取逗号表达式的值,为1。6、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A、++x,y=x--B、x+1=yC、x=x+10=x+yD、double(x)/10标准答案:A知识点解析:用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表达式的值。所以选项A为C语言中的逗号表达式。赋值表达式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。7、设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是A、k++B、k+=1C、++kD、k+1标准答案:A知识点解析:因为题中有语句intk=0;,所以选项B、C、D都是对k的值加1,选项A的语句k++表示先利用k的值进行运算,然后k值才加1。8、若有以下程序#include<stdio.h>main(){inta=0,b=0,c=0;c=(a-=++a),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、0,4,4B、1,4,1C、0,4,0D、1,4,4标准答案:C知识点解析:表达式c=(a-=++a),(a+=b,b+=4)相当于逗号表达式,首先计算c=(a-=++a),其中a-=++a)等价于a=a-(++a),得到a的值0,c的值为0,在计算(a+=b,b+=4)时,a和b的初值为0,计算以后,a为0,b为4。9、若有以下程序#include<stdio.h>main(){inta=0,b=0,c=0c=(a+=++b,b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、1,5,1B、-1,4,4C、1,5,5D、-1,4,-1标准答案:C知识点解析:对于语句c=(a+=++b,b+=4);首先计算a=a+(++b),a,b初值为0,则计算以后a为1,b为1,然后计算b+=4,得到b的值为5,此时表达式b+=4的值为整个逗号表达式的值,因此c的值为5。10、有以下程序main(){intsum,pad,pAd;sum=pad=5;pAd=++sum,pAd++,++pad;printf("%d\n",pad);}程序的输出结果是A、5B、7C、8D、6标准答案:D知识点解析:有逗号表达式构成的语句:pAd=++sum,pAd++,++pad;主要从左到由连续运算,因此pad的值为6。注意pad和pAd的是不同的变量。11、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是A、(x-y<0)B、(x-y>0)C、(x-y<0‖x-y>0)D、(x-y==0)标准答案:D知识点解析:条件表达式的形式如下:表达式1?表达式2:表达式3。其含义为当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,则求“表达式3”的值,这时“表达式3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非0(可以是正数,也可以是负数),则再求表达式“x++”的值,其值就是条件表达式的值;若表达式“x-y”的值为0,则再求表达式“y++”的值,其值就是条件表达式的值。12、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2==0C、x%2!=0D、x%2==1标准答案:B知识点解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项B等于关系表达式的结果为假,即等于0。13、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2!=0C、x%2==0D、x%2==1标准答案:C知识点解析:由于x为大于1的奇数,因此x%2取余的值为1,和0不相等。14、以下叙述中正确的是A、关系运算符两边的运算对象可以是C语言中任意合法的表达式B、在C语言中,逻辑真值和假值分别对应1和0C、对于浮点变量x和y,表达式:x==y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:A知识点解析:C语言中没有逻辑类型,用非零表示逻辑真。0表示逻辑假,选项B错误,无法判断两个浮点变量是否相等,但是x==y不会出现编译错误,选项C错误,分支结构根据表达式的值,不一定为算术表达式,选项D错误。15、以下叙述中正确的是A、a表示一个字符常量B、’\0’表示字符0C、表达式:’a’>’b’的结果是“假”D、’\"’是非法的标准答案:C知识点解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较,’a’>’b’不成立,值为假。而’\0’表示NULL,ASCII码值为0。16、以下关于逻辑运算符两侧运算对象的叙述中正确的是A、只能是整数0或非0整数B、可以是结构体类型的数据C、可以是任意合法的表达式D、只能是整数0或1标准答案:C知识点解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。17、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是A、0B、2C、1D、不知道a的值,不能确定标准答案:C知识点解析:在逻辑表达式中,a||b,只有在a跟b都为0时,表达式的结果才为0。在题中所给的表达式中a要么等于1,要么不等于1,肯定会有一方的值不为真,表达式值为1。18、当变量c的值不为2、4、6时,值也为“真”的表达式是A、(c==2)||(c==4)||(c==6)B、(c>=2&&c<=6)&&!(c%2)C、(c>=2&&c<=6)&&(c%2!=1)D、(c>=2&&c<=6)||(c!=3)||(c!=5)标准答案:D知识点解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D)中c的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。19、表示关系式x≤y≤z的C语言表达式的是A、(x<=y)||(y<=x)B、(x<=y<=z)C、(x<=y)&&(y<=x)D、(x<=y)!(y<=x)标准答案:C知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。20、若变量已正确定义,以下选项中非法的表达式是A、a!=4||’b’B、’a’%4C、’a’=1/2*(x=y=20,x*3)D、’A’+32标准答案:C知识点解析:赋值表达式左边应为变量,选项C中左边为字符常量,因此非法,其余表达式均为合法的表达式。21、有以下程序main(){intx=35,B;charz=’B’;B=((x)&&(z<’b’));printf("%d\n",B);}程序运行后的输出结果是A、0B、35C、1D、66标准答案:C知识点解析:表达式((x)&&(z<’b’)),x为35非零,考虑表达式z<’b’,成立,则B的值为1。22、与数学表达式x≥y≥z对应的C语言表达式是A、(x>=y>=z)B、(x>=y)&&(y>=z)C、(x>=y)!(y>=z)D、(x>=y)||(y>=x)标准答案:B知识点解析:若要表示x大于等于y,同时y大于等于z,需要用逻辑与表达式连接。23、以下叙述中正确的是A、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变B、对于逻辑表达式:a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变C、关系运算符的结果有三种:0,1,-1D、else不是一条独立的语句,它只是if语句的一部分标准答案:D知识点解析:else不能单独使用,和if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仅有0和1。24、以下叙述中正确的是A、由&&构成的逻辑表达式与由||构成的逻辑表达式都有“短路”现象B、C语言的关系表达式:0<xC、逻辑“非”(即运算符!)的运算级别是最低的D、逻辑“或”(即运算符||)的运算级别比算术运算要高标准答案:A知识点解析:逻辑表达式的运算比较复杂,有短路现象,也就是首先计算“逻辑与”或者“逻辑或”运算的第一个运算量的值,根据表达式的值决定是否进行第二个量的值的计算。“逻辑与”和“逻辑或”运算低于关系运算和算术运算。但是“逻辑非”运算却高于算术运算。25、下列关系表达式中,结果为“假”的是A、(3<4)==1B、(3+4)>6C、(3!=4)>2D、3<=4标准答案:C知识点解析:关系表达式和逻辑表达式的结果为非零或者0,其中0表示假,而非零表示真,由于3!=4的结果为1,而1>2的结果为假。国家二级C语言(C语言基础知识)机试模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中错误的是A、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件B、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中C、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令D、C语言源程序经编译后生成后缀为.obj的目标程序标准答案:C知识点解析:C语言中的非执行语句例如宏定义命令,在预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。C语言编写的源程序就是一ASCII的形式存放在文本文件中的。C源程序经过C编译程序编译之后生成一个后缀为obi的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。2、下列叙述中错误的是A、C程序可以由多个程序文件组成B、一个C语言程序只能实现一种算法C、C程序可以由一个或多个函数组成D、一个C函数可以单独作为一个C程序文件存在标准答案:B知识点解析:算法是指为解决某个特定问题而采取的确定且:有限的步骤。在C语言中一个算法是用函数来实现的。一个C语言源程序山许多函数组成,这些函数都是根据实际任务,确定具体的算法,由用户自己编写。C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个C语言程序可以实现多种算法。3、以下叙述中错误的是A、结构化程序由顺序、分支、循环三种基本结构组成B、C语言是一种结构化程序设计语言C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法标准答案:C知识点解析:结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。已经证明,由3种基本结构组成的算法可以解决任何复杂的问题。由3种基本结构所构成的算法称为结构化算法;由3种基本结构所构成的程序称为结构化程序。4、以下叙述中错误的是A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输入C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应该具有以下5个特征:①有穷性。一个算法包含的操作步骤应该是有限的。也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。②确定性。算法中的每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。③可行性。算法中指定的操作,都可以通过已经验让过可以实现的基本运算执行有限次后实现。④有零个或多个输入。在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些对象需要通过输入来得到。⑤有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。5、以下选项中关于程序模块化的叙述错误的是A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:B知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设计方法把若干独立模块组装成所要求的程序。6、C语言源程序名的后缀是A、.exeB、.objC、.cD、.cp标准答案:C知识点解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目杯文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。7、关于算法,以下叙述中错误的是A、同一个算法对于相同的输入必能得出相同的结果B、一个算法对于某个输入的循环次数是可以事先估计出来的C、某个算法可能会没有输入D、任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕标准答案:D知识点解析:算法和程序不同,算法满足以下特性:算法有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。算法的确定性是指算法中的每一个步骤都必须有明确定义,不允许有模棱两可的解释.也不允许有多义性,因此对于相同的输入必有相同的输出,同时可以事先估计算法的时间复杂度,对于有循环的算法,以循环体内的循环次数来估测时间复杂度。8、以下不能用于描述算法的是A、程序语句B、E-R图C、伪代码和流程图D、文字叙述标准答案:B知识点解析:E-R图为实体一联系图,提供了表示实体型、属性和联系的方法,用来捕述现实世界的概念模型。描述算法的有流程图,盒图,伪代码,文字描述以及程序代码描述。9、以下叙述中正确的是A、程序的算法只能使用流程图来描述B、N—S流程图只能描述简单的顺序结构的程序C、计算机可以直接处理C语言程序,不必进行任何转换D、结构化程序的三种基本结构是循环结构、选择结构、顺序结构标准答案:D知识点解析:结构化程序有三种基本结构循环结构、选择结构、顺序结构,描述算法常见的有文字描述,流程图,盒图,伪代码等。N-S图为盒图,可以描述比较复杂的程序结构,而计算机不能直接处理C程序,只能处理二进制代码。10、以下叙述中正确的是A、在C语言程序设计中,所有函数必须保存在一个源文件中’B、在算法设计时,可以把复杂任务分解成一些简单的子任务C、只要包含了三种基本结构的算法就是结构化程序D、结构化程序必须包含所有的三种基本结构,缺一不可标准答案:B知识点解析:模块化设计思想,就是把复杂的任务分成简单的子任务,心函数或者过程描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有符干个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一定全要包括这三种结构,而算法不等于程序。11、以下叙述中正确的是A、每个后缀为.c的C语言源程序都应该包含一个main函数B、在C语言程序中,main函数必须放在其他函数的最前面C、每个后缀为.c的C语言源程序都可以单独进行编译D、在C语言程序中,只有main函数才可单独进行编译标准答案:C知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。12、有以下程序#includemain(){ints,t,A=10;doubleB=6:s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6平台上编译运行,程序运行后的输出结果是A、4,4B、2,4C、4,8D、10,6标准答案:C知识点解析:关键字sizeof用于测试不同类型变量所占的内存空间,返回所占的字节数。在VC编译系统中,整型变量占用4个字节的内存空间,而双精度型变量占用8个字节的内存空间。13、对于一个正常运行的C程序,以下叙述中正确的是A、程序的执行总是从程序的第一个函数开始,在main函数结束.B、程序的执行总是从main函数开始,在程序的最后一个函数中结束C、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束D、程序的执行总是从main函数开始标准答案:D知识点解析:一个C语言源程序无论包括了多少函数,在正常情况下总是从main函数开始执行,从main函数结束。14、计算机能直接执行的程序是A、目标程序B、可执行程序C、汇编程序D、源程序标准答案:B知识点解析:把山高级语言编写的程序称为“源程序”,山二进制代码表示的程序称为“目标程序”(后缀名为.obi),由汇编语言编写的程序称为“汇编程序”。为了把源程序转换成机器能接受的目标程序,软件工作者编制了一系列软件,通过这些软件可以把用户按规定语法写出的语句——翻译成二进制的机器指令。这种只有翻译功能的软件称为“编译程序”,每种高级语言都有与它对应的编译程序。C源程序经过C编译程序编译之后生成一个后缀为.obi的二制进文件(称为目标文件),这个目标程序耍和C语言的库函数相链接生成一个后缀为.exe的文件,这个文件可以在操作系统中直接执行,称为可执行程序。15、以下叙述中正确的是A、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行B、C语言程序将从源程序中第一个函数开始执行C、main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等D、C语言规定必须用main作为主函数名,程序将从此开始执行标准答案:D知识点解析:C语言规定必须以main作为主函数名。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个可执行的C程序都必须有一个且只能有一个主函数。一个C程序中可以包含任意多个不同的函数,但只能有一个主函数。程序要从main()函数开始执行,最后在main()函数中结束。16、以下叙述中错误的是A、C程序在运行过程中所有计算都以二进制方式进行B、所有C程序都需要编译链接无误后才能运行C、C程序在运行过程中所有计算都以十进制方式进行D、C程序中字符变量存放的是字符的ASCII值标准答案:C知识点解析:计算机程序都是编译为二进制的代码,计算机才会执行。17、下列叙述中正确的是A、在C程序中main函数的位置是固定的B、C程序中所有函数之间都可以相互调用C、每个C程序文件中都必须要有一个main函数D、在C程序的函数中不能定义另一个函数标准答案:D知识点解析:当一个程序作为另一个程序的子程序,并且它自己不独市执行时,这该程序可以没有主函数。主函数的位置不同定,并且可以调用程序中的其他函数,而其他函数不可以调用main()函数。C语吉规定,不能在函数的内部定义函数。18、以下叙述正确的是A、C语言程序是由过程和函数组成的B、C语言函数可以嵌套调用,例如:fun(fun(x))C、C语言函数不可以单独编译D、C语言中除了main函数,其他函数不可作为单独文件形式存在标准答案:B知识点解析:在C语言中,允许函数的嵌套调用,即递归调用。在C语言中不存在过程的概念,在C语言中函数允许单独编译,可以作为单独的文件形式存在。19、C语言程序的模块化通过以下哪个选项来实现A、变量B、程序行C、函数D、语句标准答案:C知识点解析:用函数作为程序模块以实现C程序的模块化,程序有多个函数构成,每个函数可以实现一个具体的功能,实现程序的模块化设计。20、以下叙述中正确的是A、程序的主函数名除main外,也可以使用Main或mainB、在C程序中,模块化主要是通过函数来实现的C、程序可以包含多个主函数,但总是从第一个主函数处开始执行D、书写源程序时,必须注意缩进格式,否则程序会有编译错误标准答案:B知识点解析:C语言中任何一个有效的程序都有且只能有一个main()函数,不能写成其他形式,一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而为了代码清晰容易看懂,最好加上注释,这是程序书写风格,与编译无关。21、以下叙述中正确的是A、C语言程序总是从最前面的函数开始执行B、C语言程序总是从main函数开始执行C、C语言程序中main函数必须放在程序的开始位置D、C语言程序所调用的函数必须放在main函数的前面标准答案:B知识点解析:C语言中一个源程序都有一个且只能有一个main函数,即主函数;C语言规定必须用main作为主函数名。其后的一对圆括号中可以是空的,但不能省略。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而调用函数的定义位置和调用没有直接关系。22、C语言主要是借助以下哪种手段来实现程序模块化A、定义常量和外部变量B、使用丰富的数据类型C、使用三种基本结构语句D、定义函数标准答案:D知识点解析:C语言用函数实现软件的模块化设计。23、以下四个程序中,完全正确的是A、#includemain();main(){/*/Programming/*/printf("programming!\n");}B、#include{/*programming*/printf("programming!\n");}C、#includemain()main(){/*/*programming*/*/printf("programming!\n");}D、include{/*programming*/print("programming!\n");}标准答案:B知识点解析:在选项A中,main()函数后而的分号是错误的,C语言在函数名后而不能有分号。在C语言中注释内容必须放住“/*和“*/”之间,“/*”和“*/”必须成对出现,按语法规定在注释之间不可以再嵌套“/*和“*/”。在选项C的程序段中注释语句之间有嵌套:所以选项C不正确。C语言用#include命令行米实现文件包含的功能。#include命令行的形式为:#include“文件名”,所以在选项D中include前面少了一个#符号,因而选项D不正确。24、以下关于结构化程序设计的叙述中正确的是A、结构化程序使用goto语句会很便捷B、一个结构化程序必须同时由顺序、分支、循环三种结构组成C、由三种基本结构构成的程序只能解决小规模的问题D、在C语言中,程序的模块化是利用函数实现的标准答案:D知识点解析:C语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。仉是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提侣结构化设计以来,goto就成了有争议的语句。首先,由于goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto语句经常带米错误或隐患。它可能跳过了某些对缘的构造、变量的初始化、重要的计算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎能解决人部分问题。25、以下叙述中正确的是A、C程序中的每一行只能写一条语句B、简单C语句必须以分号结束C、C语言程序中的注释必须与语句写在同一行D、C语句必须在一行内写完标准答案:B知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分弓,分号是C语句的必要组成部分。国家二级C语言(C语言基础知识)机试模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式B、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数C、若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4标准答案:A知识点解析:选项B中a=10,在赋值时会把10自动转换为double类型然后赋值,实型变量中不可能存放整型。而选项C中执行a=b后,b的值不变还是9,选项D中执行a=b;b=a;后,a的值为9,b的值也为9。2、有以下程序#includemain(){inta=3;printf("%dkn",(a+=a-=a*a));}程序运行后的输出结果是A、9B、0C、3D、-12标准答案:D知识点解析:对于表达式a+=a-=a*a相当于a=a-(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。3、若有定义和语句:inta,b;scanf("%d,%d,",&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是A、3,5B、3,5,C、3,5D、3,5,4标准答案:C知识点解析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到输入流中,不能随意加入空格等,否则无法得到正确的输入结果。4、设有定义:intx=2;以下表达式中,值不为6的是A、2*x.x+=2B、x++,2*xC、x*=(1+x)D、x*=x+l标准答案:A知识点解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4:选项B中,值为6。选项C中x*=x+1等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。5、有以下程序#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\u",x,y,z);}程序运行后的输出结果是.A、2,3,1B、2,3,2C、2,3,3D、2,2,1标准答案:A知识点解析:在程序中,整型变量x、y的初值都为1,赋值语句z=x++,y++,++y右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的值为++y的值。执行逗号表达式“x++,y++,++y”后,x的值为2,y的值为3。z取逗号表达式的值,为1。6、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A、++x,y=x--B、x+1=yC、x=x+10=x+yD、double(x)/10标准答案:A知识点解析:用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表达式的值。所以选项A为C语言中的逗号表达式。赋值表达式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其中(类型名),称为强制类型转换运算符,数据类型两边的圆括号不能省略。7、设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是A、k++B、k+=1C、++kD、k+1标准答案:A知识点解析:因为题中有语句intk=0:,所以选项B、C、D都是对k的值加1,选项A)的语句k++表示先利用k的值进行运算,然后k值才加1。8、若有以下程序#includemain(){inta=0,b=0,c=0;c=(a-=++a),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、0,4,4B、1,4,1C、0,4,0D、1,4,4标准答案:C知识点解析:表达式c=(a-=++a),(a+=b,b+=4)相当于逗号表达式,首先计算c=(a-=++a),其中a-=++a)等价于a=a-(++a),得到a的值0,c的值为0.在计算(a+=b,b+=4)时,a和b的初值为0.计算以后,a为0,b为4。9、若有以下程序#includemain(){inta=0,b=0,c=0c=(a+=++b,b+=4);printf("%d,%d,%d\11",a,b,c);}则程序的输出结果是A、1,5,1B、-1,4,4C、1,5,5D、-1,4,-1标准答案:C知识点解析:对于语句c=(a+=++b,b+=4);首先计算a=a+(++b),a,b初值为0,则计算以后a为1,b为1,然后计算b+=4,得到b的值为5,此时表达式b+=4的值为整个逗号表达式的值,因此c的值为5。10、有以下程序main(){intsum,pad,pAd;sum=pad=5;pAd=++sum,pAd++,++pad;printf(”%dkn”,pad);)程序的输出结果是A、5B、7C、8D、6标准答案:D知识点解析:有逗号表达式构成的语句:pAd=++sum,pAd++,++pad;主要从左到由连续运算,因此pad的值为6。注意pad和pAd的是不同的变量。11、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—y)等价的是A、(x—y<0)B、(x-y>0)C、(x-y<0‖y—y>0)D、(x-y==0)标准答案:D知识点解析:条件表达式的形式如下:表达式1?表达式2:表达式3。其含义为当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值:当“表达式1”的值为零时.则求“表达式3”的值,这时“表达式3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非0(可以是正数,也可以是负数).则再求表达式“x++”的值,其值就是条件表达式的值;若表达式“x.y”的值为0,则再求表达式“y++”的值,其值就是条件表达式的值。12、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2==0C、x%2!=0D、x%2==1标准答案:B知识点解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项B等于关系表达式的结果为假,即等于0。13、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2!=0C、x%2=0D、x%2=1标准答案:C知识点解析:由于x为大于1的奇数,因此x%2取余的值为1,和0,不相等。14、以下叙述中正确的是A、关系运算符两边的运算对象可以是C语言中任意合法的表达式B、在C语言中,逻辑真值和假值分别对应1和0C、对于浮点变量x和y,表达式:x=y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:A知识点解析:C语言中没有逻辑类型.用非零表示逻辑真。0表示逻辑假,选项B错误,无法判断两个浮点变量是否相等,但是x==y不会出现编译错误,选项C错误,分支结构根据表达式的值,不一定为算术表达式,选项D错误。15、以下叙述中正确的是A、a表示一个字符常量B、’\0’表示字符0C、表达式:’a>’b’的结果是“假”D、’\’’’是非法的标准答案:C知识点解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较。’a’>’b’不成立,值为假。而’\0’表示NULL,ASCII码值为0。16、以下关于逻辑运算符两侧运算对象的叙述中正确的是A、只能是整数0或非0整数B、可以是结构体类型的数据C、可以是任意合法的表达式D、只能是整数0或1标准答案:C知识点解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。17、若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是A、0B、2C、1D、不知道a的值,不能确定标准答案:C知识点解析:在逻辑表达式中。a‖b,只有在a跟b都为0时,表达式的结果才为0。在题中所给的表达式中a要么等于1,要么不等于1.肯定会有一方的值不为真,表达式值为1。18、当变量C的值不为2、4、6时,值也为“真”的表达式是A、(c==2)‖(c==4)‖(c==6)B、(c>=2&&c<=6)&&!(c%2)C、(c>=2&&c<=6)&&(c%2!=1)D、(c>=2&&c<=6)‖(c!=3)‖(c!=5)标准答案:D知识点解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。19、表示关系式x≤y≤z的C语言表达式的是A、(x<=y)‖(y<:x)B、(x<=y<=z)C、(x<=y)&&(y<=x)D、(x<=y)!(y<=x)标准答案:C知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。20、若变量已正确定义,以下选项中非法的表达式是A、a!=411…bB、¨a%4C、’aT=1/2木(x:y=20,X木3)D、~A+32标准答案:C知识点解析:赋值表达式左边应为变量,选项C中左边为字符常量,因此非法,其余表达式均为合法的表达式。21、有以下程序main(){intx=35,B;charz=’B’;B=((x)&&(Z<’b’));printf("%d\n",B);}程序运行后的输出结果是A、0B、35C、1D、66标准答案:C知识点解析:表达式((x)&&(z<’b’)),x为35非零,考虑表达式z<’b’,成立,则B的值为1。22、与数学表达式x≥y≥z对应的C语言表达式是A、(x>=y>=z)B、(x>=y)&&(y>=z)C、(x>=y)!(y>=z)D、(x>=y)‖(y>=x)标准答案:B知识点解析:若要表示x大于等于y.同时y大于等于z,需要用逻辑与表达式连接。23、以下叙述中正确的是A、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变B、对于逻辑表达式:a++‖b++,设a的值为1,则求解表达式的值后,b的值会发生改变C、关系运算符的结果有三种:0,1,-1D、else不是一条独立的语句,它只是if语句的一部分标准答案:D知识点解析:else不能单独使用,和if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仅有0和1。24、以下叙述中正确的是A、由&&构成的逻辑表达式与由‖构成的逻辑表达式都有“短路”现象B、C语言的关系表达式:0C、逻辑“非”(即运算符!)的运算级别是最低的D、逻辑“或”(即运算符‖)的运算级别比算术运算要高标准答案:A知识点解析:逻辑表达式的运算比较复杂,有短路现象,也就是首先计算“逻辑与”或者“逻辑或”运算的第一个运算量的值,根据表达式的值决定是否进行第二个量的值的计算。“逻辑与”和“逻辑或”运算低于关系运算和算术运算。但是“逻辑非”运算却高于算术运算。25、下列关系表达式中,结果为“假”的是A、(3<4)==1B、(3+4)>6C、(3!=4)>2D、3<=4标准答案:C知识点解析:关系表达式和逻辑表达式的结果为非零或者0,其中0表示假,而非零表示真,由于3!=4的结果为1,而1>2的结果为假。国家二级C语言(C语言基础知识)机试模拟试卷第6套一、选择题(本题共31题,每题1.0分,共31分。)1、以下叙述中错误的是A、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件B、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中C、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令D、C语言源程序经编译后生成后缀为.obj的目标程序标准答案:C知识点解析:C语言中的非执行语句例如宏定义命令,存预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。C语言编写的源程序就是一ASCII的形式存放在文小文件中的。C源程序经过C编评程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。2、下列叙述中错误的是A、C程序可以由多个程序文件组成B、一个C语言程序只能实现一种算法C、C程序可以由一个或多个函数组成D、一个C函数可以单独作为一个C程序文件存在标准答案:B知识点解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。在C语言中一个算法是用函数来实现的。一个C语言源程序由许多函数组成,这些函数都是根据实际任务,确定具体的算法,由用户自己编写。C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放存不同的文件中,所以一个C语言程序可以实现多种算法。3、以下叙述中错误的是A、结构化程序由顺序、分支、循环三种基本结构组成B、C语言是一种结构化程序设计语言C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法标准答案:C知识点解析:结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。已经证明,由3种基本结构组成的算法可以解决任何复杂的问题。由3种琳本结卡句所构成的算法称为结构化算法:由3种越小结构所构成的程序称为结构化程序。4、以下叙述中错误的是A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输入C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应该具有以下5个特弧:①有穷性。一个算法包含的操作步骤应该是有限的。也就是说,在执行若干个操作步骤之后,算法将结束,而同每一步都在合理的时间内完成。②确定性。算法中的每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。③可行性。算法中指定的操作,都可以通过已终验证过可以实现的基本运算执行有限次后实现。④有零个或多个输入。但计算机上实现的算法是用来处理数据对象的,在大多数情况下这些对象需要通过输入来得到。⑤有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。5、以下选项中关于程序模块化的叙述错误的是A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:B知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设讣方法把若干独立模块组装成所要求的程序。6、C语言源程序名的后缀是A、.exeB、.objC、.cD、.cp标准答案:C知识点解析:南C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过c编译程序编译乍成后缀为“.obj,的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件.0bj语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。7、关于算法,以下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论