国家二级C语言机试(C语言程序设计)模拟试卷3(共282题)_第1页
国家二级C语言机试(C语言程序设计)模拟试卷3(共282题)_第2页
国家二级C语言机试(C语言程序设计)模拟试卷3(共282题)_第3页
国家二级C语言机试(C语言程序设计)模拟试卷3(共282题)_第4页
国家二级C语言机试(C语言程序设计)模拟试卷3(共282题)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

国家二级C语言机试(C语言程序设计)模拟试卷3(共8套)(共282题)国家二级C语言机试(C语言程序设计)模拟试卷第1套一、选择题(本题共30题,每题1.0分,共30分。)1、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是A、c=(’A’+C)26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C一’A’)%26+’a’标准答案:A知识点解析:由题意可知,小写字符a和大写字符A的ASCII代码相差为32,所以选项C能将大写字符C的ASCII代码转换为小写字符c的ASCII代码;选项D和C左侧的表达式都是大写字符C与大写字符A的差与’a’的ASCII代码的和就是小写字符c的ASCII代码。而选项A中应该是加上’a’,而不是减去’a’。2、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。3、以下选项中非法的C语言字符常量是A、’9’B、’\09’C、’\x09’D、’\x9d’标准答案:B知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。其中反斜线后的八进制数可以不用0开头,但是不能有8和9字符出现。反斜线后的十六制数只可由小写字母x开头。4、若有定义语句charc=’\101’;则变量C在内存中占A、2个字节B、3个字节C、1个字节D、4个字节标准答案:C知识点解析:每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。5、若有以下程序,则程序的输出结果是#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。6、下面选项中合法的字符常量是A、XB、’abc’C、’X’D、’\’标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字符“\”要用两个“\\”表示一个反斜杠。7、以下叙述中正确的是A、字符常量在内存中占2个字节B、转义字符要用双引号括起来,以便与普通的字符常量区分开C、字符常量需要用单引号括起来D、字符常量是不能进行关系运算的标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。8、以下叙述中正确的是A、字符变量在定义时不能赋初值B、同一英文字母的大写和小写形式代表的是同一个字符常量C、字符常量可以参与任何整数运算D、转义字符用符号开头标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。9、若有定义语句:chara=’\82’;则变量aA、包含1个字符B、说明不合法C、包含2个字符D、包含3个字符标准答案:B知识点解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用’\ddd’3位八进制数代表的一个ASCII字符,也可以’\xhh’2位十六进制数代表的一个ASCII字符。选项A中的八进制表示出现字符8,非法。10、有以下程序,程序的输出结果是main(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}A、输出格式不合法,输出出错信息B、65,90C、65,89D、A,Y标准答案:C知识点解析:C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。11、C语言中char类型数据占字节数为A、2B、3C、1D、4标准答案:C知识点解析:C语言中char类型数据占字节数为1。12、有以下程序,程序运行后的输出结果是main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%c\n",A);}A、HB、AC、hD、a标准答案:C知识点解析:表达式a=(a>=’A’&&a<=’Z’)?(a+32):a,为条件表达式,如果a是大写字符,则转换为小写字符存放到a中,否则不变。13、以下正确的字符串常量是A、’abc’B、OlympicGamesC、""D、"\\\"标准答案:C知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个’\\’表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。14、若X和Y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是A、abs(x-y)<10B、x-y>-10&x-y<10C、!(x—y)<-10||!(y-x)>10D、(x-y)*(x-y)<100标准答案:C知识点解析:数学关系|x-y|<10表示x和y的差的绝对值小于10,选项A使用了abs求绝对值函数,满足要求;选项B是x和y的差值在-10和10之间,满足要求;选项C是x和y的差值大于-10或者y和x的差值小于10,不满足要。15、数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是main(){chara=’1’,b=’2’;printf("%c,",b++);printf("%d\n",b-A);}A、3,2B、50,2C、2,2D、2,50标准答案:C知识点解析:本题主要考查ASCII码和自加运算。第一个printf语句中,是以字符形式输出b++的值,++放在变量的后面是先使用然后自增,因此第一个printf输出值是2,然后b的值变成’3’。在第二个printf语句中,b的值为’3’,a的值为’1’,所以b-a的值为2。16、若有代数式(其中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))),这样计算出的结果就是题干中算术表达式的值。17、表达式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5标准答案:C知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。18、若有定义语句: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。19、表达式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,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。20、有以下定义: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错误。21、若有以下程序,编译时出现错误,你认为出错的是#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行都是正确的。22、不能正确表示数学式的表达式是A、a*b/cB、a/c*bC、a/b*cD、a*(b/c)标准答案:C知识点解析:表达式的含义为a乘以b除以c,选项C正好曲解了这一个含义。23、C语言程序中,运算对象必须是整型数的运算符是A、/B、%C、&&D、*标准答案:B知识点解析:%要求参与运算的运算量为整型,其他三个运算符对于参与运算的运算量没有直接要求。24、设有定义:intk=1,m=2;f=7;,则以下选项中错误的表达式是A、k=k>=kB、-k++C、k%int(f)D、k>=f=m标准答案:C知识点解析:本题考查了赋值表达式,在赋值表达式中,等号的左边必须是变量,等号右边可以是变量、表达式或者常量。选项A是一个赋值表达式;选项B是一个表达式;选项C是计算余数表达式;选项D错误,等号的左边不是变量。25、设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是A、(!a==1)&(!b==0)B、(a<b)&!c||1C、a&bD、a||(b+b)||(c-a)标准答案:A知识点解析:本题主要考查逻辑运算。选项A中,(!a==1)中!运算优先级比==高,因此!a为假,然后在和1比较是否相等,因此整个表达式的结果为假,(!a==1)和(!b==0)是与的关系,前面的表达式为假,整个表达式结果就是假(0);选项B中a<b为真,!c值为假,(a<b)&!c值为假,(a<b)&!c‖1为真:选项C中a&b的值为2;选项D中a的值为真,表达式的结果为真。26、若有表达式(w)?(--x):(++y),则其中与w等价的表达式是A、w==1B、w==0C、w!=1D、w!=0标准答案:D知识点解析:本题考查条件表达式。(w)?(--x):(++y)的含义是如果w非0那么表达式的值为-x,否为++y,因此只有选项D和w等价。27、若有定义: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是一个双精型实型变量。28、设变量已正确定义并赋值,以下正确的表达式是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语言中的逗号表达式。29、若有定义语句:intx=10;则表达式x-=x+x的值为A、-20B、0C、-10D、10标准答案:C知识点解析:表达式x-=x+x等价于x=x-(x+x),整型变量x的初始值等于10,计算题目所求表达式的值时,首先计算x与x的和等于20,然后再用10减去20等于-10,得到该表达式的值。30、有以下程序#includemain(){inta=1,b=0;printf("%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的值在屏幕上输出。国家二级C语言机试(C语言程序设计)模拟试卷第2套一、选择题(本题共30题,每题1.0分,共30分。)1、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是A、一条C语句可能会被转换成多条机器指令B、一条C语句对应转换成一条机器指令C、一条C语句可能会被转换成零条机器指令D、某种类型和格式的C语句被转换成机器指令的条数是固定的标准答案:B知识点解析:由C语言编写的程序,通过编译,链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。2、以下选项中不属于C语言程序运算符的是A、sizeofB、()C、D、&&标准答案:C知识点解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。3、若变量己正确定义并赋值,以下不能构成C语句的选项是A、A=a+b;B、B++;C、a=a+bD、A?a:b;标准答案:C知识点解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。4、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C、只有简单算法才能在有限的操作步骤之后结束D、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。5、下列选项中,不能用作标识符的是A、_1234_B、_1_2C、int_2_D、2_int_标准答案:D知识点解析:C语言中标识符必须以字母或者下划线开始,选项D中是以数字开始的不能作为标识符。6、以下选项中作为C语言合法常量的是A、-80.B、-080C、-8e1.0D、-80.0e标准答案:A知识点解析:本题考查C语言中的常量,C语言中字母e或E之前必须有数字,且e或E后面的指数必须为整数。选项A表示负数-80;选项B中以数字0开始表示的是八进制数,八进制数数字范围是从0.7,不包括8;选项C是一个指数浮点,字母e后面应该是整型指数;选项D中字母e后面没有整数,不满足C规范。7、以下不能定义为用户标识符是A、MainB、_0C、_intD、sizeof标准答案:D知识点解析:本题考查用户标识符,C语言中用户标识符只能由字母和数字组成,且必须以字母开头,不能和C语言的关键字相同。选项A、B和C都符合要求,选项D中的sizeof是C语言关键字,不能作为用户标识符。8、以下选项中,不能作为合法常量的是A、1.234e04B、1.234e0.4C、1.234e+4D、1.23E+00标准答案:B知识点解析:本题考查C语言中的常量,C语言中字母e或E之前必须有数字,且e或E后面的指数必须为整数。选项B中字母e后面是浮点数,错误,其他选项都是正确的常量。9、可在C程序中用作用户标识符的一组标识符是A、and_2007B、Datey-m-dC、HiDr.TomD、caseBigl标准答案:A知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和数组组成,且必须以字母或者下划线开始。选项A正确;选项B中使用了字符“-”;选项C使用了字符“.”;选项D中的case是C语言关键字,不能作为用户标识符。10、以下C语言用户标识符中,不合法的是A、_1B、AaBcC、a_bD、a--b标准答案:D知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和数组组成,且必须以字母或者下划线开始。选项A、B和C都是正确的,选项D中的case是C语言关键字,不能作为用户标识符。11、以下选项中不能用作C程序合法常量的是A、1,234B、’\123’C、123D、\x7G标准答案:A知识点解析:本题考查C语言中的常量。选项A错误,多了逗号;选项B是字符常量;选项C是整型常量;选项D是字符常量。12、关于C语言中数的表示,以下叙述正确的是A、只要允许范围内整型数和实型数都能精确的表示B、只有整型数在允许范围内能精确无误的表示,实型数会有误差C、只有实型数在允许范围内能精确无误的表示,整型数会有误差D、只有用八进制表示的数才不会有误差标准答案:C知识点解析:本题考查C语言基本数据类型,整型数是有范围的,只在允许的范围内才能精确无误的表示,实型数由于存储长度限制存在误差。13、设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是A、x*;printf("%d\n",x);B、*x;printf("%d\n",x);C、n=x*;print("%d\n",n);D、n=*x;print("%d\n",n);标准答案:C知识点解析:本题考查自增运算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。选项A中首先执行x++,执行完后x自增1,然后printf输出的是x自增后的值;选项B首先执行++x,x的值增加1,接着输出x的值;选项C中++在x的后面,因此n的值是x自增前的值,printf输出的是x自增前的值;选项D中++在x的前面,因此x首先自增,然后再赋值给n,n的值是x自增后的值,输出的也是x自增后的值。14、以下选项中表示一个合法的常量是(说明:符号口表示空格)A、123E0.2B、2.7eC、0999D、0Xab标准答案:D知识点解析:本题考查C语言中的常量。选项A字母E后面必须是整型数,浮点数错误;选项B字母e后面没有整型数;选项C以0开始表示8进制数,8进制数没有9;选项D是一个正确的16进制常数。15、以下选项中不合法的标识符是A、FORB、&aC、printD、_00标准答案:B知识点解析:合法的标识符要满足组成字符为a~z以及A~Z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误的。16、以下选项中,能用作数据常量的是A、115LB、0118C、1.5e1.5D、o115标准答案:A知识点解析:本题考查常量定义。数据常量可有10进制、8进制、16进制、指数法等,8进制数字为0-7,第一个字符为0,而不是o。指数法表示时,指数部分须为整型,选项A中数字后加入L是说明此变量为长整型,是正确的常量表示形式。17、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A、连接符B、大写字母C、数字字符D、下划线标准答案:A知识点解析:在C语言中,合法标识符的命令规则是:标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。在C语言的标识符中,大写字母和小写字母被认为是两个不同的字符。选项A是连字符,不在C语言规定的命名变量标识符的范围内。18、以下选项中,能用作用户标识符的是A、_0,B、8_8C、voidD、unsigned标准答案:A知识点解析:在C语言中,用户的标识符只能由字母或下划线开始。一般强调文见其义的命名方法。但是C语言中的保留字不能用作用户的标识符。而选项C和D全部为保留字,选项B中以数字开头,这些都不正确。19、下列定义变量的语句中错误的是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语言的变量命名规定。20、以下选项中关于C语言常量的叙述错误的是A、常量分为整型常量、实型常量、字符常量和字符串常量B、经常被使用的变量可以定义成常量C、常量可分为数值型常量和非数值型常量D、所谓常量,是指在程序运行过程中,其值不能被改变的量标准答案:B知识点解析:常量指在程序运行过程中,其值不能被改变的量。常量分为整型常量(即整常数)、实型常量、字符型常量和字符串常量。常量也可以按数据类型分为为数据常量和非数据常量。变量是指在程序运行过程中,其值能被改变的量。21、以下选项中,不合法的C语言用户标识符是A、AaBcB、a-bC、a_bD、_1标准答案:B知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项A中出现了非法的字符~22、以下关于C语言数据类型使用的叙述中错误的是A、若要保存带有多位小数的数据,可使用双精度类型B、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型C、若只处理“真”和“假”两种逻辑值,应使用逻辑类型D、整数类型表示的自然数是准确无误差的标准答案:C知识点解析:在C语言中没有定义逻辑类型,而是用0代表假,用非零代表真。23、以下选项中不能用作C程序合法常量的是A、’\123"B、1,234C、123D、”Lx7D’t标准答案:B知识点解析:选项B中的1,234在两侧加双引号才是C程序的合法字符串常量。24、阅读以下程序#includemain(){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语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。25、以下选项中合法的标识符是A、1-1B、1_1C、_11D、1__标准答案:C知识点解析:本题考查标识符定义。合法标识符的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。26、关于C语言的符号常量,以下叙述中正确的是A、符号常量的符号名是标识符,但必须大写B、符号常量在整个程序中其值都不能再被重新定义C、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量D、符号常量的符号名必须是常量标准答案:C知识点解析:在C语言程序中,用一个符号名来代表一个常量,称为符号常量。注意:这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。一般在程序中都是利用宏定义来定义符号常量的,在代码中可以利用under来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用大写。27、关于C语言的变量,以下叙述中错误的是A、所谓变量是指在程序运行过程中其值可以被改变的量B、变量所占的存储单元地址可以随时改变C、程序中用到的所有变量都必须先定义后才能使用D、由三条下划线构成的符号名是合法的变量名标准答案:B知识点解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。28、以下选项中不属于C语言标识符的是A、用户标识符B、关键字C、常量D、预定义标识标准答案:C知识点解析:C语言的标识符可分为以下3类:①关键字。C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如,int、double、if、else、while、for等。②预定义标识符。即预先定义并具有特定含义的标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。29、以下选项中合法的变量是A、5aB、A%C、_10_D、sizeof标准答案:C知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成如下:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;因此选项A中数字开头,选项B出现了非法字符%,而选项D中sizeof为关键字,不能为变量命名。30、以下叙述中正确的是A、标识符的长度不能任意长,最多只能包含16个字符B、语言中的关键字不能作变量名,但可以作为函数名C、用户自定义的标识符必须“见名知义”,如果随意定义,则会出编译错误D、标识符总是由字母、数字和下划线组成,且第一个字符不得为数字标准答案:D知识点解析:标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。C语言合法标识符的命名规则是:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;③大写字母与小写字母被认为是两个不同的字符;④C语言规定了一个标识符允许的字符个数,为32,超过的字符将不被识别。C语言的标识符可分为以下3类:①关键字,不能用于为自定义标识符命名。②预定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名,一般做到见名知义,但是没有特殊规定。国家二级C语言机试(C语言程序设计)模拟试卷第3套一、选择题(本题共35题,每题1.0分,共35分。)1、以下是if语句的基本形式:if(表达式)语句其中“表达式”A、必须是逻辑表达式B、必须是关系表达式C、必须是逻辑表达或关系表达D、可以是任意合法的表达式标准答案:D知识点解析:本题考查if语句,C语言中if语句中的表达式可以是任意合法的表达式。2、有以下程序main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%或%d\n",a,b,c,d),}程序输出A、0,0,0,3B、1,1,2,0C、编译有错D、0,1,2,0标准答案:C知识点解析:if语句的格式为;ifr表达式)语句1else语句2if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目“if(a=1)b=1;c=2;elsed=3;”,if分支有两条语句,没构成复合语句。3、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x~0)if(x)y+=2;elsey+=3;printf(”%d\11”,y);}程序运行后的输出结果是A、2B、0C、1D、3标准答案:B知识点解析:x=l,if和elseif的条件都不满足,故y值不改变输出。4、若变量已正确定义,在if(W)pfintf(”%d\11”,k);中,以下不可替代W的是A、ch=getchar(1B、a--b+cC、a<>b+cD、a++标准答案:C知识点解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值为0,则不执行if语句,否则执行if语句,而在选项C中,符号<>不是C语言的合法运算符,如果要表达a大于或小于b+c可用a!b+c或(a>b+c)‖(ab+c。所以它不是一个合法的C语言表达式。5、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的输出结果是A、a=10b=50c=30B、a=10b=30c=10C、a=10b=50c=10D、a=50b=30c=50标准答案:C知识点解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于10.50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件表达式不成立,所以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10,最后由输出语句输出变量a,b,c的当前值,分别为10,50,10。6、设有定义:inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}标准答案:A知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B、C)、D)表示的功能相同,而选项A表示的是一条if语句,两条赋值语句。7、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A、必须是整数值B、必须是正数C、可以是任意合法的数值D、if(a>b){c=a;a=b;b=c;}标准答案:C知识点解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执行if语句,为0时执行else语句。8、有如下嵌套的if语句if(aA、k=(aB、k=(aC、k=(aD、k=(a标准答案:D知识点解析:嵌套的ifelse语句的含义是,在变量a的值小于变量b的值,同时,变量a的值小于变量c的值时,把变量a的值赋给变量k。在变量a的值小于变量b的值,同时,变量a的值大于等于变量c的值时,把变量c的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值小于变量c的值时,把变量b的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值大于等于变量c的值时,把变量c的值赋给变量k。9、有以下计算公式若程序前面已经在命令行中包含math.h文件,不能够正确计算上述公式的程序段是A、y=sqrt(x);if(x<0)y=sqrt(-x);B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);D、y=sqrt(x>=07x:-x);标准答案:A知识点解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根;当x小于0时,y值等于x的相反数的算术平方根。所以选项B用一个完整的ifelse语句表达了计算公式的含义:选项C用两个if语句表达了计算公式的含义;选项D在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A没有用C语言语句正确的表达计算公式的含义。10、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果A、不等于10的整数B、大于3或等于10的整数C、小于3的整数D、大于3且不等10的整数标准答案:D知识点解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。11、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++=2)if(b!=2‖c-!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序运行后的输出结果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1标准答案:C知识点解析:a,b,c,d初始值分别为1,2,3,0。嵌套的if语句中,第一个if中,表达式a==1&&b++==2值为1,执行嵌套的if分支,此时“b=3,b!=2”成立,由于运算符是‖,不管后面一个表达式的值是不是1,其整个表达式的值总是1,“c--!=3”表达式不执行,最后打印出a,b,c的值是1,3,3。12、下列条件语句中,输出结果与其他语句不同的是A、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);标准答案:A知识点解析:选项B、C)、D)这三条语句都是在变量不等于0的情况下,输出x:等于0的情况下输出y,而选项A则正好相反。13、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)‖(b=1))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}则程序的输出结果是A、2,1,2,-1B、2,2,2,4C、5,1,2,-1D、1,2,3,4标准答案:B知识点解析:代码中有两条并列的if语句,第一条if语句执行,(a=2)‖(b=1)值为1,由于逻辑或表达式,根据其短路运算规则,a=2,b=2,即b值不变执行if分支c=2。并列的if语句中表达式(c==3)&&(d=-1)为逻辑与表达式,c==3不成立,不考虑d=-1表达式,d为5.逻辑表达式值为0,不执行相应if分支。14、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、10B、6C、7D、3标准答案:C知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。15、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)&&(b=1))c=2;if((c==3)‖(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}则程序的输出结果是A、2,1,2,-1B、2,2,2,4C、1,2,3,4D、5,1,2,-1标准答案:D知识点解析:代码中有两条并列的if语句,第一条if语句,逻辑与表达式(a=2)&&(b=1)中,a=2,则执行b=1,得到该逻辑与表达式值为1,执行分支语句c=2;第二条if语句(c一3)‖(d=-1),c==3不成立,执行d=-1,而后得出整个逻辑与表达式值为1,执行分支语句a=5。16、若有以下程序main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;if(c!=3);r+=3;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、7B、10C、6D、3标准答案:B知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行语句,r+=3,r=6;第四条if分支d==4成立,执行该if分支语句,r+=4,r=10。17、以下叙述中正确的是A、if语句只能嵌套一层B、不能在else子句中再嵌套if语句C、if子句和else子句中可以是任意的合法的C语句D、改变if-else语句的缩进格式,会改变程序的执行流程标准答案:C知识点解析:含else子句的if语句的格式为if(表达式)语句1else语句2其中if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于if和else语句的嵌套原则是比较自由的。18、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A、switch(a){case1:a=b:break;default:a++:}B、switch(a==1){case0:a=b;break;case1:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}标准答案:B知识点解析:本题主要考查if和switch结构。“if(a==1)a=b;elsea++;”代码段的功能是如果a等于则把b的值赋值给a,否则a++。选项A使用switch对a进行判断,如果是1则a=b,跳出switch,如果是其他值则a++;选项B对a==1的结果进行switch判断,如果为0表示a不等于1则a=b,和题目要求不符合:选项C和选项A一样;选项D和选项case条件相反,满足题目要求。19、若以下选项中变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是A、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b:}B、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break:1}C、switch(a+9){casec1:y=a-b;casec2:y=a+b;}D、switcha*b{case10:x:a+b;default:y=a-b;}标准答案:B知识点解析:本题考查switch的使用。选项A中的case0和case4没有break语句;选项B正确;选项C中的case后面不是常量,错误;选项D中switch后面没有括号。20、有以下程序main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是A、a=2,b=2B、a=1,b=1C、a=1,b=0D、a=2,b=1标准答案:D知识点解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入ease1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。21、若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是A、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");}C、switch(x){case1.0:printf("*\n");case2.O:printf("**\n");}D、switch(a+b){case1:printf("*\n");casec:printf("**\n");}标准答案:A知识点解析:在C语言中,switch()后一对圆括号中的可以是整型表达式或字符表达式。case语句后面的常量表达式的类型必须与switch后圆括号中的表达式类型相同,各case语句标号的值应该互不相同,选项B中switch后括号表达式出错,选项C中case后面的常量类型不正确,选项D中case后面出现了变量表达式,所以D)不正确。22、下列叙述中正确的是A、在switch语句中必须使用defaultB、break语句必须与switch语句中的case配对使用C、在switch语句中,不一定使用break语句D、break语句只能用于switch语句标准答案:C知识点解析:break为C语言关键字,又称间断语句。break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default是关键字,起标号的作用,代表所有case标号之外的那些标号。default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号。23、有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5)}运行以后的输出结果是A、0235B、235C、02356D、2356标准答案:B知识点解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,“n=0,k=4”,没有break语句,因此执行case2分支语句,n为2,k为3,程序进行第2次循环,执行“case3:n=3,k=2”,输出n值为3,程序进行第3次循环,执行case3这个分支,结果是“n=5,k=1”,打印出5;这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。24、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是A、switch(a==1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}标准答案:A知识点解析:ifelse语句的含义是,如果变量a的值等于1,则把变量b的值赋给变量a,否则,变量a的值加1。在本题的4个选项中,与其含义不同的是选项A,表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变量a。25、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序运行后的输出结果是A、a=1,b=1B、a=1,b=0C、a=2,b=1D、a=2,b=2标准答案:C知识点解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。26、若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的switch语句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a.b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b;caseb:y=a+b;}D、switcha*b{case10:y=a+b;default:y=a-b;}标准答案:A知识点解析:使用switch语句直接处理多个分支,其一般形式为:switch(表达式){case常量表达式1:语句1;break;case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某介case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句:若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句。对于选项B,case语句和常量之间没有空格,而选项C中的case后面为变量,选项D中switch后面没给出圆括号。27、在嵌套使用if语句时,C语言规定else总是A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对C、和之前与其最近的且不带else的if配对D、和之前的第一个if配对标准答案:C知识点解析:本题考查if语句,在C语言中,else总是和之前与其最近的且不带else的if配对。28、以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A、if((a>b)‖(b>c))k=1;elsek=0;B、if(a<=b)k=0;elseif(b<=c)k=1;C、if((a>b)&&(b>c))k=1;elsek=0;D、iffa>b)k=1;elseif(b>c)k=1;elsek=0;标准答案:C知识点解析:题干中的表达式的功能是当a>b并且b>c时,变量k的值等于1,其余情况下,变量k的值都是等于0。29、关于“while(条件表达式)循环体”,以下叙述正确的是A、循环体的执行次数总是比条件表达式的执行次数多一次B、条件表达式的执行次数与循环体的执行次数一样C、条件表达式的执行次数总是比循环体的执行次数多一次D、条件表达式的执行次数与循环体的执行次数无关标准答案:C知识点解析:while语句中表达式是循环条件,语句为循环体。while语句中当表达式计算的值为真(非0)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。30、有以下程序#includemain(){inty=10;while(y--);printf(“y=%d\n",y);}程序执行后的输出结果是A、y=0B、y=-1C、y=1D、while构成无限循环标准答案:B知识点解析:在while循环中每次变量y的值减1,直到其值等于0时退出循环,这时y的再减1变为-1。31、有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是A、2B、4C、1D、死循环标准答案:C知识点解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句。输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。32、有以下程序main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A、v=0B、y=1C、y=-1D、while构成无限循环标准答案:C知识点解析:while循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量y=0时,退出循环结束,变量y执行自减运算,得-1,所以打印输出变量y的值为-1。33、有以下程序#includevoidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}运行时,若输入123450,则输出结果是A、66656B、6566456C、66666D、6666656标准答案:B知识点解析:这道试题主要考查了switch和break语句,当变量s的值为1时,执行case1、case2两条语句,输出65:当变量s的值为2时,执行case2语句,输出6:变量s的值为3时,执行case3、default两条语句,输出64;变量s的值为4时,执行default语句,输入5;变量s的值为5时,执行default语句,输出6;变量s的值为0时,程序运行结束。34、有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序运行后的输出结果是A、0B、1C、-1D、7标准答案:C知识点解析:在while语句中,先判断while后面的表达式是否为0,如果为0,则退出循环,否则执行循环体。在本题中,当变量a的值经过几次循环后,其值等于0时,退出while循环语句,变量a再执行自减运算,所以其值等于-1。35、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A、(E>0‖E<0)B、(!E==0)C、(E!=0)D、(E==0)标准答案:A知识点解析:在while(E)中p,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项A中表达式E>0‖E<0是一个逻辑表达式。国家二级C语言机试(C语言程序设计)模拟试卷第4套一、选择题(本题共38题,每题1.0分,共38分。)1、算法的有穷性是指()。A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法原则上能够精确地运行,而且人们用纸笔做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。2、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是按照“先进后出”的原则组织数据的,入栈的顺序为12345ABCDE,则出栈的顺序应为其逆序,即EDCBA54321。3、下列关于线性链表的叙述中,正确的是()。A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上三种说法都不对标准答案:C知识点解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各节点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变节点的指针域即可。故C选项正确。4、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)标准答案:C知识点解析:二分查找的最坏情况是不断的二分直至无法再分时,仍然没有查找成功。对于有序的线性表,二分查找法只需比较log2n次。5、假定已建立以下数据链表结构,且指针p和q已指向如下图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句是()。A、(*)p.next=(*q).next;free(p)B、b=q—>next;free(q)C、p=q;free(q)D、p—>next=q—>next;free(q)标准答案:D知识点解析:要删除结点q,应首先由q的上一个结点p的指针域指向q的指针域所指向的结点,即p—>next=q—>next;,然后才能释放结点q,即free(q)。6、软件开发中,需求分析阶段可以使用的工具是()。A、N-S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:结构化分析方法是结构化程序设计理论在软件需求解析阶段的运用,数据流图(DataFlowDiagram,DFD)是结构化分析常用的工具之一,数据字典、判定树和判定表也是常用的结构化分析工具。程序流程图、NS图、PAD图等图形工具用于详细设计的过程中。7、在面向方法中,不属于“对象”基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象的基本特点有:①标识唯一性,是指对象是可区分的;②分类性,是指可将具有相同属性和操作的对象抽象成类;③多态性,是指同一个操作可以是不同对象的行为;④封装性,是指对象的内部对外不可见,在外面不可直接使用对象的处理能力,也不能直接修改对象的内部状态;⑤模块独立性,是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。8、数据流图中带有箭头的线段表示的是()。A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图基本符号的含义:①矩形表示数据的外部实体;②圆角的矩形表示变换数据的处理逻辑;③“=”表示数据的存储;④箭头表示数据流。9、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据库系统阶段实现了数据共享,具有数据的集成性,这使得数据可被多个应用所共享,还可以极大地减少数据冗余性。A项,在人工管理阶段,数据不保存,没有对数据进行管理的软件,数据不能共享;B项,文件系统阶段是数据库系统发展的初级阶段,它提供了简单的数据共享与数据管理能力,但是这种能力十分有限。从人工管理阶段到文件系统阶段再到数据库系统阶段,对数据共享的能力在不断增强。10、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:实体间的联系有如下情况:①一对一(1:1);②一对多(1:m);③多对多(m:n)。本题中,一间宿舍对应多个学生,那么宿舍和学生之间的联系是一对多,学生和宿舍的联系是多对一。11、有三个关系R、S和T如下:由关系R和S通过进行运算得到关系T,则所使用的运算为()。A、笛卡尔积B、交C、并D、自然连接标准答案:D知识点解析:交和并运算要求关系R和S具有相同的属性,BC两项错误。R与S的笛卡儿积是一个4元关系,有4个元素,A项错误。R与S有公共的属性B,可通过公共属性的相等值进行连接,这种连接称之为自然连接。12、C源程序中不能表示的数制是()。A、二进制B、八进制C、十进制D、十六进制标准答案:A知识点解析:C语言中整型常量可以用十进制数、八进制数、十六进制数来表示。虽然计算机只能识别二进制数,但二进制不能用来表示整型常量。13、以下叙述中错误的是()。A、用户定义的函数中可以没有return语句B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C、用户定义的函数中若没有return语句,则应当定义函数为void类型D、函数的return语句中可以没有表达式标准答案:B知识点解析:用户定义的函数有两种:①void函数,可以没有return语句,如果有return语句,也不可以返回任何表达式;②指定返回类型函数,至少有一个返回语句。在一个函数内,可以根据需要在多处出现return语句,但无论有多少个return语句,return语句只会被执行一次,然后退出函数,并且只能返回一个函数值。14、以下选项中不能作为C语言合法常量的是()。A、’cd’B、0.1e+6C、aD、’\011’标准答案:A知识点解析:常量包括整型常量、实型常量、字符常量和字符串常量等。单引号表示字符常量,但不能包含字符串。表达字符串常量时需用双引号。15、如有表达式(w)?(—x):(++y),则其中与w等价的表达式是()。A、w==1B、w==0C、w!=1D、w!=0标准答案:D知识点解析:?:表达式形式为<表达式1>?<表达式2>:<表达式3>。当表达式1的值为真,则结果为表达式2的值;当表达式1的值为假,则结果为表达式3的值。可见表达式w等价于w!=O。16、以下不能正确表示代数式的C语言表达是()。A、2*a*b/c/dB、a*b/c/d*2C、a/c/d*b*2D、2*a*b/c*d标准答案:D知识点解析:*与/优先级相同,所以采用左结合的方式。D项若改为:2*a*b/(c*d),则正确。17、以下选项中正确的定义语句是()。A、doublea;b;B、doublea=b=7;C、doublea=7,b=7;D、double,a,b;标准答案:C知识点解析:同一类型变量的定义时,不同变量之间需要用“,"分隔;定义变量时初始化赋值时不能用等号连接;变量类型说明后面不能用逗号,而是用空格分离。18、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格)()。A、1,2,3<回车>B、1u2u3<回车>C、1,uu2,uu<回车>3<回车>D、uu1,2,3<回车>标准答案:B知识点解析:scanf函数要求除格式控制符以外的字符都要原样输入。逗号是非格式符,所以需要原样输入,否则就不能正确读入数据。B项前两个数据后面没有紧跟一个逗号,格式不匹配,所以输入形式错误。19、执行以下程序段后,w的值为()。intw=’A’,x=14,y=15;w=((x|y)&&(w<’a’));A、—1B、NULLC、1D、0标准答案:C知识点解析:因为x=14,y=15都是非零整数,因此x|y=1。又因为’A’+32=’a’,知w<’a’也为真,因此(x|y)&&(w<’a’)的值为1。20、有以下程序:#include<stdio.h>main(){chara=4:printf("%d\n",a=a<<1);}程序运行的结果是()。A、40B、16C、8D、4标准答案:C知识点解析:左移一位相当于原数乘以2,右移一位相当于除以2。a<<1结果为4*2=8,没有超过char类型的范围。21、有以下程序段:inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d",a,b,c);程序的输出结果是()。A、a=10b=50c=10B、a=10b=50c=30C、a=10b=30c=10D、a=10b=30c=50标准答案:A知识点解析:因为a=10,b=50,所以a<b,if语句判断条件不成立,于是执行c=a,得到c=10,a和b的值不变。22、有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z)printf("%d",++z);elseprintf("%d",++y);printf("%d\n",x++);}程序运行的结果是()。A、331B、41C、2D、1标准答案:D知识点解析:else子句总是与最前面最近的不带else的if相结合,与书写格式无关,所以本题中的else语句与第二个if语句配对,且if和else都在第一个if的控制范围内。首先判断x>y不成立,直接退出第一个if语句,执行printf("%d\n",x++)。(x++)的值是x加之前的值,所以输出结果为1。23、有以下程序:#include<stdio.h>main(){inti=5:do{if(i%3==1)if(i%5==2){printf("*%d",i);break;}i++;}while(i!=0);printf("\n");}程序运行的结果是()。A、*7B、*3*5C、*5D、*2*6标准答案:A知识点解析:在dowhile循环中,总是先执行后判断,所以循环体至少会被执行一次。在循环中,如果满足(i%3=1)&&(i%5==2),那么输出i的值,退出循环,否则i++,如果i==0则跳出循环。24、有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>1;i——){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。A、234345B、43254345C、233423D、4534标准答案:D知识点解析:外层主循环i从3减到1执行了3次(最后一次循环条件不成立,不执行),嵌套的循环j从1增到2,每轮执行2次。每次输出i+j的值,就可以得到如D选项的输出结果。每次换行发生在外循环完成一次循环之后。25、若有定义语句:chars[10]="1234567\0\0";,则strlen(s)的值是()。A、7B、8C、9D、10标准答案:A知识点解析:C语言规定以字符’\0’作为字符串结束的标识符。strlen函数返回的是字符串的长度,“1234567\0\0”与“1234567”等效,所以字符串长度是7。26、若有定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是()。A、m[——i]B、m[2*2]C、m[m[0]]D、m[m[i]]标准答案:C知识点解析::数组的下标从零开始,数组m中有5个元素,所以数组m即为m[0]=5,m[1]=4,m[2]=3,m[3]=2,m[4]=1。C项,m[0]=5,引用数组元素为m[5],但是数组下标范围是0~4,所以m[5]溢出,引用错误。27、有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n—1—i];a[n一1一i]=t;}}main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序运行的结果是()。A、3456787B、876543C、1098765D、321678标准答案:D知识点解析:由于数组名本身是一个地址,所以在用数组名作为实参传递时,对应的形参相当于一个指针变量,在函数中可以通过指针变量来引用数组元素,从而改变元素的值。本题中函数fun的作用是将数组A的前n个元素进行逆转,fun(k,5)的结果是数组k的前五个元素1、2、3、4、5变为5、4、3、2、1。逆转后,输出数组中第3个至

温馨提示

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

评论

0/150

提交评论