版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1《语言程序设计》课程考试复习题库(含答案)一、单选题1.以下程序的输出结果是_______。Voidmain(){inta=10,b=4;Printf("%d\n",a/b);}A、0B、1C、2D、2.5答案:C解析:这道题考察的是整数除法的知识点。在C语言中,当两个整数进行除法运算时,结果也会是一个整数,且会舍弃小数部分。给定的程序中,变量a是10,变量b是4,所以`a/b`的结果是2,因此正确答案是C。2.下面程序运行后的结果是______。#include“stdio.h”Voidmain(){intx,y;X=-3+4∗5-6;Printf(“x=%d,”,x);Y=x++-1;Printf(“x=%d,y=%d\n”,x,y);}A、x=11,x=12,y=10B、x=-1,x=0,y=-2C、x=11,x=12,y=11D、x=-1,x=0,y=-1答案:A解析:先计算x,根据运算符优先级,先计算乘法4*5=20,然后依次计算-3+20=17,17-6=11,所以最初x=11。接着计算y,y=x++-1,先取x的值11计算,y=11-1=10,然后x自增1变为12。所以最终结果是x=12,y=10,选项A正确。3.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_______。A、scanf("%2d%2d%2d",&i,&j,&k);B、scanf("%d%d%d",&i,&j,&k);C、scanf("%d,%d,%d",&i,&j,&k);D、scanf("i=%d,j=%d,k=%d",&i,&j,&k);答案:C4.以下程序段中的变量已正确定义,该程序段执行后的输出结果是________。For(i=0;i<4;i++,i++)For(k=1;k<3;k++)Printf("∗");A、∗∗∗∗∗∗∗∗B、∗∗∗∗C、∗∗D、∗答案:B解析:在这个程序段中,外层循环`for(i=0;i<4;i++,i++)`会执行2次,因为`i`每次增加2。内层循环`for(k=1;k<3;k++)`会执行2次,因为`k`每次增加1。因此,内层循环会执行4次,输出4个星号。所以,正确答案是B。5.判断字符串str1是否大于字符串str2,应当使用_______。A、if(str1>str2)B、if(strcmp(str1,str2)<0)C、if(strcmp(str2,str1)>0)D、if(strcmp(str1,str2)>0)答案:D6.单精度型变量的类型说明符是________。A、intB、doubleC、floatD、char答案:C7.在C语言程序中,表达式5%2的结果是________。A、2.5B、2C、1D、3答案:C8.当调用函数时,实参是一维数组的数组名,则向函数传递的是_______。A、数组的长度B、数组的首地址C、数组的每一个元素的地址D、数组的每一个元素的值答案:B解析:答案解析:在C语言中,当调用函数时,若实参是一维数组的数组名,实际上传递的是数组的首地址。通过传递首地址,函数可以间接访问和操作数组中的元素。这样能够提高程序的效率和灵活性,避免复制整个数组的数据。因此,正确答案是选项B。9.已定义inta[][3]={1,2,3,4,5,6,7,8,9};,则a[1][2]的初值为_______。A、2B、4C、6D、8答案:C10.以下正确的函数首部是_______。A、voidfun(intx,inty)B、voidfun(intx;inty)C、voidfun(intx,y)D、voidfun(x,y)答案:A11.下面程序运行后的结果是_______。Voidmain(){intmax,i,a[5]={11,22,13,47,35};Max=a[0];For(i=0;i<5;i++)If(a[i]>max)Max=a[i];Printf(“%d”,max);}A、11B、47C、35D、22答案:B解析:在这段程序中,首先将数组a的第一个元素a[0]赋值给变量max,然后通过for循环遍历数组a的每个元素。在每次循环中,将当前元素a[i]与max进行比较,如果a[i]大于max,则将a[i]赋值给max。最后,输出max的值。在这个例子中,数组a的最大值是47,因此程序运行后的结果是47,答案选B。12.以下程序的运行结果是_______。Intm=5;If(m++>5)Printf("%d\n",m);ElsePrintf("%d\n",m--);A、4B、5C、6D、7答案:C13.C语言程序中,引用数组元素时使用的下标允许是__________。A、整型常量B、整型表达式C、整型常量或整型表达式D、任何类型的表达式答案:C解析:在C语言中,数组下标用于标识数组中的特定元素。整型常量可以明确指定元素的位置,整型表达式通过计算也能得到有效的下标值。而其他类型的表达式,如浮点型表达式等,不符合C语言中数组下标的使用规则。所以,C语言程序中引用数组元素时使用的下标允许是整型常量或整型表达式,答案选C。14.有以下程序的执行结果是_______。#include<stdio.h>Voidmain(){inta=0,b=0,c=0,d=0;If(a=1)B=1;C=2;Elsed=3;Printf("%d,%d,%d,%d\n",a,b,c,d);}A、0,1,2,0B、0,0,0,3C、编译有错D、1,1,2,0答案:C解析:答案解析:在这段C语言程序中,if语句的条件应该是一个逻辑表达式,而“if(a=1)”这里进行了赋值操作,并非逻辑判断。C语言要求if条件必须是能产生逻辑值(真或假)的表达式,所以该程序编译会出错。因此,选项C是正确答案。15.关于标识符,下列说法不正确的是______。A、库函数名称为预定义标识符,不建议用作用户自定义标识符B、关键字不能作为用户自定义标识符C、用户自定义标识符中不区分大小写字母D、标识符中可以出现下划线,且可以出现在标识符的任意位置答案:C16.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3∗(int)(x+y)%2/4的值是______。A、2.5B、2.75C、3.5D、0答案:A解析:根据运算符的优先级,先计算括号内的表达式,即x+y的值为7.2。然后,计算a%3的值为1。接着,将1强制转换为int类型,并与7.2相乘,得到7。最后,将7除以4,得到1。将1与x的值2.5相加,得到最终结果3.5。因此,正确答案是选项C。17.逻辑运算符两侧运算对象的数据类型是________。A、只能是0或者1B、只能是0或非0正数C、只能是整型或字符型数据D、可以是任何类型的数据答案:D18.以下选项中,当x为大于1的奇数时,值为0的表达式______。A、x%2==1B、x/2C、x%2!=0D、x%2==0答案:D19.下面程序段的运行结果是_______。Intn=0;While(n++<=2)Printf("%d",n);A、2B、3C、4D、123答案:D解析:答案解析:初始时n=0,进入循环。第一次循环,n++<=2,先判断0<=2成立,然后n自增为1,输出1。第二次循环,1<=2成立,n自增为2,输出2。第三次循环,2<=2成立,n自增为3,输出3。此时循环结束。所以输出结果为123,选项D正确。20.有以下程序,程序运行后的输出结果是_______。#include<stdio.h>#include<string.h>Voidmain(){chara[10]="abcd";Printf("%d,%d\n",strlen(a),sizeof(a));}A、7,4B、4,10C、8,8D、10,10答案:B解析:strlen函数计算字符串的实际长度,不包括'\0',字符串"abcd"的长度为4,所以strlen(a)为4;sizeof计算数组所占存储空间大小,a数组定义为长度10,所以sizeof(a)为10。因此答案选B。21.有以下程序段Charch;intk;Ch=′a′;K=12;Printf("%c,%d,",ch,ch);Printf("k=%d\n",k);已知字符’a’的ASCII码值为97,则执行上述程序段后输出结果是_______。A、因变量类型与格式描述符的类型不匹配输出无定值B、输出项与格式描述符个数不符,输出为零值或不定值C、A,97,12,k=12D、A,97,k=12答案:D解析:%c用于输出字符,%d用于输出整数。ch='a',输出字符'a',同时字符'a'的ASCII码值为97,也会输出97;k=12,输出"k=12"。所以最终输出结果为A,97,k=12,选项D正确。22.下列数据中属于字符串常量的是________。A、"a"B、{ABC}C、'abc\0'D、'a'答案:A23.下面程序的功能是实现两个字符变量互换值,若要为ch1变量接收值‘a’,为ch2变量接收值‘b’,则程序运行时正确的输入形式是______。#include“stdio.h”Voidmain(){charch1,ch2,ch;Scanf("%c%c",&ch1,&ch2);Ch=ch1;ch1=ch2;ch2=ch;Printf("ch1=%c,ch2=%c\n",ch1,ch2);}A、,bB、a<空格>bC、abD、a<回车>b答案:C解析:在该程序中,scanf函数用于接收用户输入的两个字符,中间不能有其他分隔符,直接依次输入两个字符即可。A选项有逗号,B选项有空格,D选项有回车,都不符合要求。只有C选项直接输入“ab”,能正确地将“a”赋值给ch1,“b”赋值给ch2,所以正确答案是C。24.以下程序运行后的输出结果是______。Voidmain(){inti;,sum=0;For(i=1;i<=3;sum++)Sum+=i;Printf(“%d”,sum);}A、6B、3C、0D、死循环答案:D解析:在这段C语言程序中,for循环的条件是i<=3,而循环体中并没有改变i的值,所以i始终小于等于3,循环会一直执行下去,形成死循环。因此,正确答案是D。25.C语言中表示大于或等于关系、不等于关系的运算符分别是_______。A、>=,!=B、≥,!=C、=>,<>D、>=,≠答案:A解析:在C语言中,大于或等于关系的运算符是>=,不等于关系的运算符是!=。选项B中的≥和≠不是C语言中的运算符;选项C中的=>和<>也不是C语言中的运算符;选项D中的≠是不等于关系的运算符,但>=不是C语言中的运算符。因此,正确答案是选项A。26.设有语句scanf(“%c%d%c”,&c1,&c2,&c3);要将c1、c2、c3的值分别输入为常量‘a’、25、‘c’,则正确的输入方法是_______。A、↙25↙c↙(为‘↙’回车符)B、a25c↙C、A,25,c↙D、a25c↙答案:B解析:答案解析:在scanf函数中,%c表示读取一个字符,%d表示读取一个整数。因此,要将c1、c2、c3的值分别输入为常量‘a’、25、‘c’,需要按照相应的格式进行输入。选项A中,在输入字符‘a’后,需要输入一个空格,再输入整数25,最后输入字符‘c’,不符合题目要求;选项C中,在输入字符‘a’后,需要输入一个逗号,再输入整数25,最后输入字符‘c’,不符合题目要求;选项D中,在输入字符‘a’后,需要输入一个空格,再输入整数25,最后输入字符‘c’,不符合题目要求。因此,正确的输入方法是选项B。27.设有定义:doubleD,h;,其中d为三角形的底边长,h为三角形的高,则以下C语言表达式与其面积公式(dh)/2计算结果不相符的是______。A、d∗h/2B、1/2∗d∗hC、d∗h∗1/2D、/2∗h答案:B解析:这道题考察的是C语言中的运算符优先级和算术运算。在C语言中,乘法、除法和取余的优先级高于加法和减法。对于选项B,表达式“1/2∗d∗h”中,由于1和2都是整型,所以1/2的结果为0,导致整个表达式的结果为0,与面积公式(dh)/2的计算结果不相符。其他选项均正确表达了面积的计算公式。28.在C语言中,int、short、char三种类型数据所占用的存储空间是______。A、均为2个字节B、int和short占2个字节,char占1个字节C、与编译环境有关D、由用户自己定义答案:C29.下列选项中。不正确的整型常量表示形式是________。A、-48B、0xv23C、010D、077答案:B解析:A选项,-48是常见的整型常量表示。C选项,以0开头表示八进制数,010是合法的八进制整型常量。D选项,以0开头表示八进制数,077是合法的八进制整型常量。而B选项中,0x开头表示十六进制数,但v不是十六进制的合法数字,所以该表示形式不正确。因此答案选B。30.若有以下语句组,则执行后的输出结果是_______。Intx=0;If(x++<0)Printf("%d",--x);Printf("%d",x++);A、-1B、1C、-1-1D、-10答案:B解析:在这个语句组中,首先将x的初始值设为0。然后,执行if语句,由于x++<0不成立,所以不会执行printf("%d",--x)。接着,执行printf("%d",x++),此时x的值为1,输出结果为1。因此,正确答案是B。31.以下选项中,正确的字符常量是_______。A、"F"B、'\\''C、'W'D、"ab"答案:C解析:答案解析:字符常量是用单引号括起来的单个字符。选项A和D是字符串常量,用双引号括起来,不符合要求。选项B中包含两个反斜杠,不是单个字符,也不符合要求。选项C是单个字符'W',符合字符常量的定义。因此,正确答案是C。32.以下说法正确的是______。A、C语言程序总是从第一个函数开始执行。B、C语言程序中要调用的函数必须在main()函数中定义。C、语言程序总是从main()函数开始执行。D、C语言程序中的main()函数必须放在程序的开始部分。答案:C33.下面程序运行后的结果是______。Voidmain(){intx=1,y=0;Switch(x){case1:y=y+1;Case2:y=y+10;break;Default:y=y+100;}Printf(“y=%d\n”,y);}A、y=0B、y=1C、y=11D、y=111答案:C解析:这道题考察的是C语言中switch语句的执行逻辑。首先,变量x被初始化为1,然后进入switch语句。在switch中,case1匹配成功,执行y=y+1,此时y变为1。由于case1后没有break语句,程序会继续执行case2中的y=y+10,此时y变为11。最后,程序输出y的值,即11。所以正确答案是C。34.关于与switch语句配套的case语句中所使用的表达式,说法正确的是______。A、可以是变量B、可以是常量或变量C、只能是常量或常量表达式D、无论是何种表达式,只要在执行时有确定的值就行答案:C35.下列数组定义语句中,正确的是_______。A、inta[][]={1,2,3,4,5,6};B、chara[2][3]=‘a',‘b';C、inta[][3]={1,2,3,4,5,6};D、inta[][]={{1,2,3},{4,5,6;答案:C36.两次运行下面的程序,从键盘上输入的值分别6和4,则输出结果分别是_______。Voidmain(){intx;Scanf("%d",&x);If(x++>5)printf("%d",x);Elseprintf("%d\n",x--);}A、7和5B、6和3C、7和4D、6和4答案:A解析:这道题考察的是对C语言中自增自减运算符的理解。首先,输入6时,`x++`先判断`x`是否大于5,此时`x`为6,条件成立,然后`x`自增变为7,输出7。再输入4时,`x++`先判断`x`是否大于5,此时`x`为4,条件不成立,执行`else`分支,`x--`使`x`变为3,但因为是`printf("%d\n",x--)`,所以输出的是`x`自减前的值4,然后`x`变为3。因此,输出结果为7和4,但考虑到`printf`在`else`分支中有换行符`\n`,实际上输出会是7和换行后的4,不过这对选项判断无影响,答案选A。37.以下选项中,能用作用户标识符的是_______。A、voidB、8_8C、_0_D、int答案:C38.以下正确的C语言标识符是_______。A、%XB、a+bC、a123D、test!答案:C39.C语言允许函数类型缺省定义,此时该函数类型隐含的是_______。A、floatB、intC、longD、ouble答案:B解析:这道题考察的是C语言函数类型的默认定义。在C语言中,如果一个函数在声明或定义时没有明确指定返回类型,编译器会默认该函数的返回类型为`int`。这是C语言标准中的规定,确保了代码的兼容性和一致性。因此,当函数类型缺省定义时,其隐含的类型是`int`。40.关于主函数,下列说法中不正确的是______。A、一个完整的C语言应用程序有唯一的主函数B、主函数的名称只能是mainC、主函数可以被其他自定义函数调用D、C语言程序的运行从主函数开始,以主函数为核心展开答案:C解析:这道题考察的是C语言程序结构的基本知识。在C语言中,每个程序都必须有一个主函数,它是程序的入口点。主函数的名称固定为"main",且一个程序中只能有一个主函数。程序执行时,从主函数开始,按照代码逻辑顺序执行,直至主函数执行完毕。重要的是,主函数是调用其他函数的,而不是被其他函数调用。因此,选项C的说法是不正确的。41.计算机能直接执行的程序是________。A、源程序B、目标程序C、汇编程序D、可执行程序答案:D42.以下描述中正确的是_______。A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作。D、o-while循环中,根据情况可以省略while。答案:C43.判断字符变量c的值是否既不是数字也不是字母时,下述表达式正确的是_______。A、c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122B、!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C、>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122D、!(c>='0'&&c<='9'||c>='A'&&c<='Z'||c>='a'&&c<='z')答案:D解析:首先,分析题目要求,需要判断字符变量c的值是否既不是数字也不是字母。根据ASCII码表,数字的ASCII码值范围是48到57,大写字母的ASCII码值范围是65到90,小写字母的ASCII码值范围是97到122。接下来,分析每个选项:-选项A:c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122表示c的值小于等于48或者大于等于57且小于等于65或者大于等于90且小于等于97或者大于等于122,即c的值是数字或者字母,不符合题目要求。-选项B:!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)表示c的值不是数字或者字母,符合题目要求。-选项C:c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122表示c的值是数字或者字母,不符合题目要求。-选项D:!(c>='0'&&c<='9'||c>='A'&&c<='Z'||c>='a'&&c<='z')表示c的值不是数字或者字母,符合题目要求。综上所述,正确答案是选项D。44.有如下定义:intx=1,y=2,a;,则下列语句执行后变量的值分别为a________、x______、y______。A=--x&&y++;A、1,0,3B、0,0,3C、0,0,2D、1,0,2答案:C解析:在C语言中,`--x`表示先将`x`的值减1,再使用减1后的结果进行后续运算;`y++`表示先使用`y`的当前值进行后续运算,再将`y`的值加1。逻辑与运算符`&&`遵循短路求值原则,即如果第一个操作数为假,则不会计算第二个操作数。所以,执行`a=--x&&y++;`时,先将`x`的值减1,得到`x=0`,然后判断`x`是否为真(非零即为真),由于`x=0`,所以`--x`为假,根据短路求值原则,不会计算`y++`,因此`y`的值不变,仍为2。最后,将`--x`的结果(0)赋值给`a`,得到`a=0`。因此,答案是选项C。45.在C语言中,要求运算数必须是整型的运算符是_______。A、/B、++C、∗=D、%答案:D46.下面程序段,当x=-3时,输出y的值为_______。Intx,y;Y=0;Scanf("%d",&x);If(x>=0)If(x>0)Y=1;ElseY=-1;Printf("y=%d",y);A、1B、-1C、0D、不确定答案:C解析:这道题考察的是对C语言条件语句的理解。首先,程序定义了x和y两个整型变量,并将y初始化为0。然后,通过scanf函数读取x的值。接下来,程序通过嵌套的if-else语句判断x的值,并据此给y赋值。当x=-3时,不满足x>=0的条件,因此不会执行内部的if-else语句,y的值保持为初始化的0。所以,输出y的值为0,选项C正确。47.putchar函数可以向终端输出一个_______。A、整型值B、实型值C、字符串D、字符答案:D解析:答案解析:putchar函数是C语言标准库中的一个函数,用于向终端输出一个字符。它的作用是将指定的字符输出到标准输出设备(通常是屏幕)上。在C语言中,字符是用单引号括起来的单个字符,例如'A'、'b'、'1'等。putchar函数接受一个字符作为参数,并将其输出到终端。因此,选项D是正确的答案。48.C语言的三种基本结构是______。A、顺序结构、逻辑结构、选择结构B、顺序结构、选择结构、循环结构C、逻辑结构、层次结构、网状结构D、层次结构、顺序结构、循环结构答案:B解析:答案解析:在C语言中,程序的基本结构决定了代码的执行流程。顺序结构是按照语句的先后顺序依次执行;选择结构通过条件判断来决定执行不同的分支;循环结构则是在满足条件的情况下重复执行一段代码。这三种基本结构涵盖了程序设计中的常见逻辑流程,能够实现各种复杂的功能。因此,C语言的三种基本结构是顺序结构、选择结构、循环结构,答案为B选项。49.对于形式for(表达式1;;表达式3),可理解为______。A、for(表达式1;0;表达式3)B、for(表达式1;1;表达式3)C、语法错误D、仅执行循环一次答案:B解析:在C语言中,for循环的一般形式为:`for(表达式1;表达式2;表达式3)`。其中,表达式1用于初始化循环变量,表达式2用于判断循环是否继续,表达式3用于更新循环变量。在题目中,`for(表达式1;;表达式3)`中缺少了表达式2。根据C语言的语法规则,如果表达式2被省略,则默认其值为真,即循环会一直执行,直到遇到break语句或其他终止循环的条件。因此,选项B是正确的答案。50.下面程序运行后的结果是______。Voidmain(){intnum=0;While(num<=2){num++;Printf(“%3d”,num);}}A、012B、123C、234D、0123答案:B解析:在这个程序中,我们首先定义了一个整型变量num并将其初始化为0。然后,我们进入一个while循环,只要num的值小于或等于2,就会执行循环体。在循环体中,我们首先将num的值加1,然后使用printf函数输出num的值,输出的格式为%3d,即输出一个占3个字符宽度的整数。当num的值增加到3时,循环条件不再满足,循环结束。因此,程序运行后的结果是123。所以,正确答案是B。51.判断char型变量ch是否为大写字母的正确表达式是_______。A、'A'<=ch<='Z'B、(ch>='A')&(ch<='Z')C、(ch>='A')&&(ch<='Z')D、('A'<=ch)AND('Z'>=ch)答案:C52.若有说明:inta[10];则对a数组元素的正确引用是_______。A、[10]B、a[3.5]C、a(5)D、a[10-10]答案:D53.有以下程序段,则while循环体执行的次数是______。Intk=0;While(k=1)K++;A、无限次B、1次C、语法错误,不能执行D、一次也不执行答案:A解析:在这个程序段中,我们首先定义了一个整型变量`k`并将其初始化为0。然后,我们进入一个`while`循环,只要`k`等于1,就会执行循环体。然而,需要注意的是,在循环的条件判断中,我们使用的是`k=1`而不是`k==1`。在C语言中,`k=1`是一个赋值表达式,它将1赋值给`k`,并返回赋值后的结果。由于1是非零值,所以条件判断始终为真,导致循环会一直执行下去,即无限次执行。因此,正确答案是选项A。54.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是_______。A、1B、0C、2D、不知道a的值,不能确定答案:A55.下面定义字符型变量ch的语句不正确的是______。A、charch=‘\X2A’;B、charch="c";C、harch=65;D、charch=NULL;答案:B56.以下对一维数组a的正确说明是_______。A、intn;Scanf("%d",&n);Inta[n];B、intn=10,a[n];C、inta(10);D、#defineSIZE10Inta[SIZE];答案:D解析:A选项中,使用变量n来定义数组长度是不合法的,因为数组长度必须是常量。B选项中,同样使用变量n来定义数组长度也是不合法的。C选项中,数组的定义方式不正确,应该使用方括号[]来定义数组。D选项中,使用#define定义了一个常量SIZE,并将其作为数组的长度,这种方式是合法的。因此,正确答案是D。57.在嵌套使用if语句时,C语言规定else总是______。A、和之前与其具用相同缩进位置的if配对B、和之前与其最近的if配对C、和之前与其最近的且不带else的if配对D、和之前的第一个if配对答案:C58.在C语言中,char型数据在内存中的存储形式是_______。A、补码B、反码C、原码D、ASCII码答案:D59.关于使用函数的目的,以下不正确的说法是_______。A、提高程序的执行效率B、提高程序的开发效率C、减少程序文件所占内存D、提高程序可读性答案:A60.下列程序段的功能是给数组所有的元素输入数据,然后输出,请选择正确答案填空。#include“stdio.h”Voidmain(){inta[10],i=0;While(i<10)scanf("%d",_______);For(i=0;i<10;i++)Printf("%4d",a[i]);}A、+(i+1)B、&a[i++]C、a+iD、&a[++i]答案:B解析:答案解析:在C语言中,使用`scanf`函数输入数据时,需要使用地址。选项B`&a[i++]`能正确地获取到数组`a`中每个元素的地址,依次进行数据输入。选项A`a+(i+1)`不是正确的地址表示方式。选项C`a+i`不能实现元素逐个输入。选项D`&a[++i]`会先将`i`自增,导致数组元素输入顺序错误。所以,正确答案是B。61.执行下面的程序段后,变量k中的值为_________。Intk=3,s[2];S[0]=k;K=s[1]∗10;A、不定值B、33C、30D、10答案:A解析:这道题考察的是数组初始化和变量赋值的知识点。在C语言中,数组`s[2]`被声明但未初始化,其元素`s[0]`和`s[1]`的值是不确定的。程序执行`S[0]=k;`后,`s[0]`的值变为3,但`s[1]`的值仍然是不确定的。接着执行`k=s[1]*10;`,因为`s[1]`的值是不确定的,所以变量`k`中的值也是不确定的。因此,答案是A,即变量`k`中的值为不定值。62.将空格符赋给字符变量C,正确的赋值语句是________。A、c='\0'B、c=NULLC、=0D、c=32答案:D解析:这道题考察的是C语言中字符变量的赋值。在C语言中,空格符的ASCII码值是32。因此,要将空格符赋给字符变量c,应该使用c=32。选项A中的'\0'是字符串结束符,不是空格符;选项B中的NULL通常用于指针,不适用于字符变量;选项C中的0虽然可以隐式转换为字符,但它代表的是ASCII码值为0的字符,不是空格符。所以正确答案是D。63.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是_______。(其中□代表一个空格)Inta1,a2;Charc1,c2;Scanf("%d%c%d%c",&a1,&c1,&a2,&c2);A、10A□20BB、10□A□20□BC、10□A20BD、10A20□B答案:A解析:在这个问题中,`scanf`函数用于从标准输入读取数据并将其存储到变量中。`%d`表示读取一个整数,`%c`表示读取一个字符。根据题目要求,我们需要输入四个值:`a1`、`c1`、`a2`和`c2`。其中,`a1`和`a2`是整数,`c1`和`c2`是字符。选项A中,输入`10A□20B`,其中`10`被读取为`a1`的值,`A`被读取为`c1`的值,`20`被读取为`a2`的值,`B`被读取为`c2`的值,符合题目要求。选项B中,输入`10□A□20□B`,其中`10`被读取为`a1`的值,但是`A`后面的空格被视为无效字符,不会被读取为`c1`的值,因此不符合题目要求。选项C中,输入`10□A20B`,其中`10`被读取为`a1`的值,`A`被读取为`c1`的值,但是`20`后面的`B`被视为无效字符,不会被读取为`c2`的值,因此不符合题目要求。选项D中,输入`10A20□B`,其中`10`被读取为`a1`的值,`A`被读取为`c1`的值,`20`被读取为`a2`的值,但是`B`后面的空格被视为无效字符,不会被读取为`c2`的值,因此不符合题目要求。因此,正确答案是选项A。64.定义如下变量和数组:Intk;Inta[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是_______。For(k=0;k<3;k++)Printf("%d",a[k][2-k]);A、357B、369C、159D、147答案:A65.一个C程序的执行是从_______。A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束答案:A66.假设所有变量均为整型,则表达式(a=2,b=5,a+b++,a+b)的值是_______。A、7B、8C、5D、2答案:B67.在C语言中,if语句后的一对圆括号中有一个用以决定分支走向的表达式,该表达式______。A、只能是关系表达式B、只能是逻辑表达式C、只能是关系或逻辑表达式D、可以是任何合法表达式答案:D68.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为_______。(假设a[0][0]在第一位置)A、i∗m+jB、j∗m+iC、i∗m+j-1D、i∗m+j+1答案:D解析:这道题考察的是二维数组元素位置的计算方法。在二维数组中,任一元素a[i][j]的位置可以通过其行号和列号来确定。具体地,元素a[i][j]之前会有i行元素,每行有m个元素,再加上当前行的j个元素,所以总位置是i*m+j。但题目中说明a[0][0]在第一位置,即位置计数从1开始,所以实际位置应为i*m+j+1。因此,正确答案是D。69.以下对二维数组a的正确说明是_______。A、inta[3][];B、floata(3,4);C、doublea[1][4];D、floata(3)(4);答案:C70.下列语句将小写字母转化为大写字母,正确的语句为______。A、if(’z’>=ch>=’a’)ch=ch-32;B、if(ch>=’a’&&ch<=’z’)ch=ch-32;C、h=(’z’>=ch>=’a’)?ch-32:ch;D、ch=(ch>=’a’&&ch<=’z’)?ch:ch-32;答案:B71.有以下程序,程序运行后的输出结果是_______。#include<stdio.h>Voidmain(){inta=1,b=0;Printf("%d,",b=a+b);Printf("%d",a=2∗b);}A、0,0B、1,2C、3,2D、1,0答案:B解析:这道题考察的是C语言中的赋值和逗号表达式的运算顺序。首先,`b=a+b`表达式中,`b`被赋值为`a+b`的结果,即`1+0=1`,然后输出`b`的值,为`1`。接着,执行第二个`Printf`,`a=2*b`表达式中,`a`被赋值为`2*b`的结果,即`2*1=2`,然后输出`a`的值,为`2`。因此,输出结果为`1,2`,选项B正确。72.有如下程序,#include"stdio.h"Intmain(){Intx,y;Charch;Scanf("%d,%c",&x,&ch);Y=x%3;Printf("x=%d,y=%d\nch+32=%c\n",x,y,ch+32);Return0;}若程序运行时,输入数据如下,则输出结果是_______。30,D(回车)A、30,0DB、x=30,y=1Ch+32=DC、x=30,y=0Ch+32=dD、x=30,y=0,ch+32=d答案:C解析:答案解析:首先,输入30,D,x被赋值为30。然后计算y,x对3取余,30%3=0,所以y=0。ch被赋值为'D','D'+32对应的ASCII码值是'd'。按照输出格式,输出结果为“x=30,y=0ch+32=d”,所以选项C正确。73.定义一个名为s的字符型数组,并且赋初值为字符串"123"的错误语句是_______。A、chars[]={‘1','2','3','\0'};B、chars[]={"123"};C、hars[]={"123\n"};D、chars[4]={'1','2','3'};答案:C74.设有程序段intk=10;while(k=0)k=k-1;,则下面描述中正确的是______。A、while循环执行10次B、循环是无限循环C、循环体语句一次也不执行D、循环体语句执行一次答案:C解析:这道题考察的是对C语言中while循环的理解。在C语言中,while循环会一直执行,直到其条件表达式的结果为假(0)。在这个程序段中,`while(k=0)`是一个赋值表达式,它将k的值设为0,并且表达式的值也是0,即假。因此,while循环的条件从一开始就不满足,循环体内的语句一次也不会执行。所以,正确答案是C。75.假设下面程序运行时由键盘输入:3,5(回车),则输出结果是______。Voidmain(){intx,y,max;Scanf(“%d,%d”,&x,&y);If(x>y)Max=x;ElseMax=y;Printf(“max=%d\n”,max);}A、MAX=3B、max=5C、max=3D、MAX=5答案:B解析:本题目分析:该程序主要实现了从键盘输入两个整数,然后比较它们的大小,并输出较大的值。主要思路:首先,通过`scanf`函数获取用户输入的两个整数`x`和`y`。然后,使用`if-else`语句比较`x`和`y`的大小,将较大的值赋给变量`max`。最后,使用`printf`函数输出`max`的值。选项分析:-A选项:如果`x`大于`y`,则`max`应该等于`x`,而不是`3`,所以A选项错误。-B选项:如果`x`小于`y`,则`max`应该等于`y`,即`5`,所以B选项正确。-C选项:如果`x`等于`y`,则`max`也应该等于`x`或`y`,即`3`或`5`,所以C选项错误。-D选项:`MAX`是一个未定义的变量,程序中没有使用,所以D选项错误。综上所述,正确答案是B。76.关于函数的实参和形参,以下正确的说法是_______。A、实参和对应的形参各占用独立的存储区域B、实参和对应的形参共同占用同一存储区域C、只有当实参与形参重名时才共同占用存储区域D、形参是虚拟的,不占用存储区域答案:A解析:在函数调用过程中,实参是在调用时传递给函数的值,形参是函数定义中接收实参的变量。实参和形参是不同的变量,它们在内存中各自占用独立的存储区域。实参的值被传递给形参,形参在函数内部进行运算和处理。B选项共同占用同一存储区域错误;C选项说法错误;D选项形参也占用存储区域。所以正确答案是A。77.设charch;,其值为'A',则如下表达式的值为________。Ch=(ch>='A'&&CH<='Z')?(ch+32):chA、‘A’B、‘a’C、‘Z’D、‘z’答案:B解析:在这个表达式中,首先判断`ch`的值是否在`'A'`到`'Z'`的范围内。如果是,那么将`ch`的值加上32,得到对应的小写字母;否则,`ch`的值不变。因为`ch`的值为`'A'`,在`'A'`到`'Z'`的范围内,所以将`'A'`加上32,得到`'a'`。因此,选项B是正确的答案。78.下面说法正确的是_______。A、while语句不管条件表达式是否为真,都将执行一次循环体。B、do-while语句构成的循环,一定要有能使while后面表达式的值为0的操作,或在循环体中使用Break语句。C、for循环只能用于循环次数确定的情况,且先执行循环体语句,后判断条件表达式。D、break语句的作用是从最近的循环体内跳出来,而continue语句的作用是继续执行循环体中尚未执行的语句。答案:B79.下面程序段运行时的输出结果是______。Intn=0;While(n++<=2);Printf("%d",n);A、2B、3C、4D、语法错误答案:C解析:答案解析:在这个程序段中,`while`循环的条件是`n++<=2`。`n++`先使用`n`的值进行比较,然后再将`n`的值加1。当`n`的值为2时,满足条件进入循环,然后`n`自增为3,此时不满足条件退出循环。但由于`n`在最后一次判断后又自增了一次,所以最终`n`的值为4。因此,选项C是正确答案。80.已知字母A的ASCII码值为十进制数65,ch为字符型变量,则执行语句ch='A'+'6'-'3'后,ch中的值为_______。A、66B、67C、68D、不确定的值答案:C解析:答案解析:在ASCII码中,字符'A'的十进制值为65,'6'的十进制值为54,'3'的十进制值为51。进行计算:'A'+'6'-'3'=65+54-51=68。所以,变量ch的值为68,选项C正确。81.将abc定义为int类型变量,若从键盘给abc输入数据,正确的输入语句为__________。A、scanf("%d%d%d",&a,&b,&c);B、read("%d%d%d",&a,&b,&c);C、scanf("%d%d%d",a,b,c);D、write("%d%d%d",&a,&b,&c);答案:A解析:这道题考察的是C语言中输入语句的正确使用。在C语言中,使用`scanf`函数可以从键盘输入数据,并且需要变量的地址作为参数。选项A中的`scanf("%d%d%d",&a,&b,&c);`是正确的输入语句,`%d`表示输入的数据类型为整数,`&a,&b,&c`表示变量`a`、`b`、`c`的地址。其他选项中的`read`、`write`函数不是C语言标准输入输出的函数,选项C中缺少了变量地址的符号`&`,因此都是错误的。82.下列语句或命令中,不符合C语言规则的是_______。A、intm;B、intm、n;C、m=10;D、#include"stdio.h"答案:B解析:答案解析:在C语言中,声明多个变量时,每个变量之间应该使用逗号分隔,而不是顿号。选项B中“intm、n;”使用了顿号,不符合C语言的变量声明规则。选项A是正常的变量声明,选项C是正常的赋值操作,选项D是常见的包含头文件的预处理指令。所以,不符合C语言规则的是选项B。83.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符_______。A、必须为字母B、必须为下划线C、必须为字母或下划线D、可以是字母、数字和下划线中的任一种字符答案:C84.以下程序段中的变量已正确定义,则该程序段的输出结果是_______。For(i=0;i<4;i++)For(k=1;k<3;k++)Printf("∗");A、∗∗∗∗∗∗∗∗B、∗∗∗∗C、∗∗D、∗答案:A解析:这道题考察的是对嵌套循环的理解。外层循环变量i从0开始,小于4,因此会循环4次。内层循环变量k从1开始,小于3,因此每次外层循环时,内层循环都会执行2次,打印两个"∗"。所以总共会打印8个"∗",对应选项A。85.以下几组选项中为合法的标识符是______。A、intB、floatC、b-aD、_123答案:D解析:答案解析:在编程语言中,标识符的命名有一定规则。A选项“int”和B选项“float”是编程语言中的保留关键字,不能作为标识符。C选项“b-a”,标识符中不能包含“-”符号。D选项“_123”,以“_”开头,由字母、数字和“_”组成,符合标识符的命名规则。所以,正确答案是D选项。86.若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是_______。A、2B、3C、4D、无法确定答案:B87.设函数fun的定义形式为:voidfun(charch,floatx){...},则以下对函数fun的调用形式中正确的是_______。A、fun("abc",3.0);B、t=fun('D',12.3);C、fun('65',3.7);D、fun(‘A’,6.5);答案:D解析:在函数调用时,实参要与形参的类型一一对应。函数fun的形参一个是字符型,一个是浮点型。A选项中“abc”是字符串,不是单个字符,错误;B选项中函数void类型不能赋值给t,错误;C选项中“65”是字符串,错误;D选项中‘A’是字符,6.5是浮点数,类型匹配正确。所以答案选D。88.在C语言中,以______作为存储字符串的结束标志。A、’\n’B、’’C、’0’D、’\0’答案:D89.若有一个3位整数x,则能得到其百位、十位、个位上数字的表达式组是_______。A、x/100,x/10,x%10B、x/100,x/10%10,x%10C、x,x/10%10,x%100D、x/100,x%100/10,x%100答案:B解析:对于一个3位整数x,要得到百位数字,用x除以100取整即x/100;要得到十位数字,先将x除以10取整得到十位和百位组成的数,再对其取模10即(x/10%10);要得到个位数字,直接对x取模10即x%10。所以正确答案是B选项。90.以下定义符号常量PI的形式,正确的为______。A、definePI3.14B、#definePI3.14C、#definePI=3.14D、#definePI3.14;答案:B解析:在C语言中,使用#define来定义符号常量,形式为#define常量名常量值,不需要加分号,也不能用等号赋值。A选项缺少#号;C选项用了等号错误;D选项多了分号错误。所以正确答案是B。91.有如下程序段,当x的值为-3时,输出y的值为______。Intx,y;y=0;Scanf(“%d”,&x);If(x>=0)If(x>0)y=1;Elsey=-1;Printf(“y=%d”,y);A、1B、-1C、0D、不确定答案:C解析:根据程序,首先定义了两个整型变量x和y,并将y初始化为0。然后,使用scanf函数从用户获取一个整数赋值给x。接下来,使用if-else语句根据x的值进行判断。由于x的值为-3,小于0,所以执行else分支,将y的值赋值为-1。最后,使用printf函数输出y的值。因此,输出y的值为-1,正确答案是B。92.以下程序运行后的输出结果是_______。#include<stdio.h>Voidmain(){inta=2,b=-1,c=2;If(a<b)If(b<0)C=0;ElseC++;Printf("%d\n",c);}A、0B、1C、2D、3答案:C解析:答案解析:在程序中,首先判断`a<b`,由于`2>-1`,条件不成立,所以后面的嵌套判断语句`if(b<0)`等都不会执行,`c`的值没有改变,仍为初始值2。因此,输出结果为2,选项C正确。93.有以下程序,则运行时的输出结果是_______。#include<stdio.h>Voidmain(){inta=3,b=4,s;S=a;If(a<b)S=b;S=s∗s;Printf("%d\n",s);}A、4B、3C、16D、9答案:C解析:程序首先定义并初始化整型变量a和b,分别为3和4。接着,通过if语句判断a是否小于b,由于3小于4,条件为真,因此将b的值4赋给变量s。之后,程序执行s=s*s,即s的平方,所以s的值变为16。最后,通过printf函数输出s的值,即16。94.以下程序的运行结果是_______。#include"stdio.h"Intmain(){intA,d=2020;A=d/100%9;Printf("%d\n",a);Return0;}A、2.2B、6C、2D、0.4答案:C解析:在C语言中,整数除法的结果会向下取整。在这个程序中,首先计算`d/100`,即`2020/100=20`,然后计算`20%9`,即`20`除以`9`的余数,结果为`2`。因此,变量`a`的值为`2`,最后程序输出`2`。所以,正确答案是选项C。95.以下叙述不正确的是_______。A、一个C源程序可由一个或多个函数组成B、一个源程序必须包含一个main函数C、程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面答案:D96.构成C语言程序的基本单位是_______。A、框架B、预处理C、函数D、语句答案:C解析:在C语言中,函数是程序的基本组成部分。一个C语言程序可以由多个函数组成,通过函数的相互调用和协作来完成各种任务。整个程序从主函数开始执行,其他函数根据需要被调用和执行。框架和预处理是程序构建和准备的部分,语句是函数中的具体执行内容,但它们都不是程序的基本单位,所以答案是C。97.以下叙述中正确的是_______。A、在C程序中,main函数必须位于程序的最前面B、C程序的每行只能写一条语句C、主函数可以被其他自定义函数调用D、主函数的名称只能是main答案:D解析:这道题考察的是对C语言程序结构的理解。在C语言中,main函数是程序的入口点,其位置在程序中并不固定,因此A选项错误。C语言允许在一行中编写多条语句,只要它们之间用分号分隔,所以B选项错误。main函数是程序开始执行的地方,它不能被其他函数调用,故C选项错误。而D选项正确,因为C语言标准规定,程序的入口点函数必须命名为main。98.在C语言中,下列各项中属于正确的实型常量是_________。A、-0x23.98B、3.12e3C、e-2D、1.2e答案:B解析:答案解析:在C语言中,实型常量用小数形式或指数形式表示。A选项“-0x23.98”不是合法的实型常量,因为以“0x”开头表示十六进制数。C选项“e-2”格式不正确,指数形式应写成“e2”的形式。D选项“1.2e”缺少指数部分。B选项“3.12e3”是合法的指数形式的实型常量。因此,正确答案是B。99.若有定义语句: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解析:首先分析选项A,--i后i=3,m[3]=2,引用正确;选项B,2*2=4,m[4]=1,引用正确;选项C,m[0]=5,m[5]超出数组范围,引用错误;选项D,m[i]=m[4]=1,m[1]=4,引用正确。所以错误的是选项C。100.以下程序执行后的输出结果是_____。Voidfun(intA,intB,intc){a=456;B=567;C=678;}Intmain(){intx=10,y=20,z=30;Fun(x,y,z);Printf("%d;%d;%d\n",z,y,x);Return0;}A、30;20;10B、10;20;30C、456;567;678D、678;567;456答案:A解析:在`C`语言中,函数的参数传递有两种方式:值传递和地址传递。在本题中,`fun`函数的参数是值传递,即函数内部对参数的修改不会影响到函数外部的变量。在`main`函数中,调用`fun`函数时,将变量`x`、`y`、`z`的值分别传递给`fun`函数的参数`a`、`b`、`c`。在`fun`函数内部,对参数`a`、`b`、`c`进行了修改,但这些修改不会影响到`main`函数中的变量`x`、`y`、`z`。因此,在`main`函数中,输出变量`z`、`y`、`x`的值仍然是它们在调用`fun`函数之前的值,即`30`、`20`、`10`。所以,正确答案是A。101.下面程序运行后的结果是:_______#include“stdio.h”Voidswap(intx,inty){inttemp;Temp=x;x=y;y=temp;Printf(“x=%d,y=%d”,x,y);}Voidmain(){inta=10,b=20;Swap(a,b);Printf(“a=%d,b=%d\n”,a,b);}A、=10,b=20x=20,y=10B、x=10,y=20a=20,b=10C、x=20,y=10a=10,b=20D、a=20,b=10x=20,y=10答案:C解析:在C语言中,函数参数的传递方式是值传递,即函数内部对参数的修改不会影响到函数外部的变量。在这个程序中,swap函数接受两个整型参数x和y,并通过临时变量temp交换它们的值。但是,由于参数是值传递,所以在函数内部对x和y的修改并不会影响到main函数中的a和b。因此,程序运行后的结果是x=20,y=10a=10,b=20,选项C是正确的答案。102.设有:inta=1,b=2,c=3,d=4,m=2,n=2;,则执行(m=a>b)&&(n=c>d)后n的值为_______。A、1B、2C、3D、4答案:B解析:在逻辑表达式(m=a>b)&&(n=c>d)中,首先计算m=a>b。由于a的值为1,b的值为2,所以a>b的结果为假(0)。在逻辑与运算中,如果第一个操作数为假,则整个表达式的结果必然为假,计算机将不会计算第二个操作数n=c>d。因此,n的值不会改变,保持其初始值2。103.有以下程序,程序运行后的输出结果是_______。#include<stdio.h>Voidmain(){inta=1,b=2;For(;a<8;a++){b+=a;A+=2;}Printf("%d,%d\n",a,b);}A、9,18B、8,11C、7,11D、10,14答案:D解析:这道题考察的是对C语言程序的理解和执行结果的预测。程序定义了两个变量a和b,并初始化为1和2。接着是一个for循环,循环条件是a小于8,每次循环a增加2,b增加a的值。循环结束后,打印a和b的值。根据循环逻辑,a最终会是8(因为8不满足a<8的条件,所以循环结束时的a值是8,但循环结束后a还会自增2,变成10),b的值则是初始值2加上每次循环a的值(即2+1+3+5+7=18),但循环结束后b的值并未改变,所以最终b的值是18的前一个值,即14(因为最后一次循环中a=7,b+=7后b=14,之后没有改变b的操作)。所以答案是D。104.下面输入语句中,正确的是______。A、scanf("a=b=%d",&a,&b);B、scanf("%d,%d",&a,&b);C、scanf("%c",c);D、scanf("%d%d\n",&f1,f2);答案:B105.以下叙述中正确的是______。A、在C程序中,main函数必须位于程序的最前面B、C程序的每行中只能写一条语句C、语言本身没有输入输出语句D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误答案:C解析:这道题考察的是对C语言基本特性的理解。A选项,C语言中main函数的位置并不固定,它可以在程序的任何位置,只要保证在调用时是可访问的。因此,A选项错误。B选项,C语言并没有规定每行只能写一条语句,可以在一行中写多条语句,只要用分号分隔即可。所以,B选项错误。C选项,C语言本身确实不包含输入输出语句,输入输出操作是通过调用标准库函数来实现的,如printf和scanf等。因此,C选项正确。D选项,编译过程主要关注的是代码的语法和语义,注释部分的内容在编译时是被忽略的,所以编译过程中不会检查注释中的拼写错误。因此,D选项错误。综上所述,正确答案是C。106.假定a和b为int型变量,则执行以下语句后b的值为_______。A=1;b=10;Do{b-=a;A++;}while(b--<0);A、9B、-2C、-1D、8答案:D解析:分析程序代码,循环开始前,a赋值为1,b赋值为10。进入do-while循环后,首先执行b-=a,即b减去a的值,此时b变为9,a随后自增变为2。接着进行while循环的条件判断b--<0,即先判断b是否小于0(此时b为9,不小于0),然后b自减1变为8。因为条件b<0不成立,循环结束。所以循环结束后b的值为8。107.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:Voidmain(){intn,k;Floatscore,sum,ave;Sum=0.0;For(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf(“%f”,&score);Sum+=score;}Ave=sum/4.0;Printf(“NO%d:%f\n”,n,ave);}}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是______。A、sum=0.0;B、sum+=score;C、ave=sum/4.0;D、printf(“NO%d:%f\n”,n,ave);答案:A解析:这道题考察的是对程序逻辑的理解。程序目的是计算每位学生的平均分。变量`sum`用于累加每位学生的成绩,应在每位学生成绩累加前初始化为0。当前`sum=0.0;`放在了所有循环之前,导致它只在程序开始时执行一次,而不是每位学生成绩计算前都执行。因此,`sum=0.0;`应放在外层循环的开始处,以确保每位学生成绩计算前`sum`都被正确重置为0。所以,选项A的语句位置不正确。108.下列运算符中,优先级最高的是__________。A、?:B、!C、%D、+答案:B109.在C程序中,main函数的位置______。A、必须放在所有函数定义之前B、必须放在所有函数定义之后C、必须放在它所调用的函数之前D、可以任意答案:D110.下面程序运行后的结果是______。#include“stdio.h”Voidmain(){intu=010,v=0x10,w=10;Printf(“u=%d,v=%d,w=%d\n”,u,v,w);}A、u=10,v=10,w=10B、u=8,v=16,w=10C、u=16,v=8,w=10D、u=010,v=0x10,w=10答案:B解析:这道题考察的是C语言中变量的声明和初始化,以及不同进制数的表示。在C语言中,以0开头的整数表示八进制数,以0x或0X开头的整数表示十六进制数。因此,变量u被初始化为八进制数010,转换为十进制是8;变量v被初始化为十六进制数0x10,转换为十进制是16;变量w被直接初始化为十进制数10。所以,程序运行后的结果是u=8,v=16,w=10,对应选项B。111.阅读以下程序,该程序在编译时产生错误,其出错原因是_______。#include<stdio.h>Voidmain(){intcase;FloatprintF;Printf("请输入2个数:");Scanf("%d%f",&case,&printF);Printf("%d%f\n",case,printf);}A、定义语句出错,case是关键字,不能用作用户自定义标识符B、定义语句出错,printF不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出case的值答案:A解析:这道题考察的是C语言的基础知识,特别是关于关键字和用户自定义标识符的规则。在C语言中,`case`是一个关键字,用于`switch`语句中,因此不能用作变量名。选项A正确指出了这一点。而`printF`虽然命名不规范,但并非关键字,可以用作变量名,所以B选项错误。C选项中提到的`scanf`函数是C语言标准输入函数,使用无误,因此C选项错误。D选项中提到的`printf`函数同样可以输出`case`的值(如果`case`不是关键字且被正确定义为变量),问题在于`case`作为关键字不能被用作变量名,所以D选项错误。综上所述,正确答案是A。112.以下程序的输出结果是_______。#include<stdio.h>Voidmain(){Intx=3,y=0,z=0;If(x=y+z)Printf("∗∗∗∗");ElsePrintf("");}A、有语法错误,不能通过编译B、∗∗∗∗C、给通过编译,但不能通过连接D、答案:D解析:这道题考察的是C语言的基础知识,包括语法规则、条件判断以及程序执行流程。首先,程序中的`Voidmain()`应该是`voidmain()`,这是一个语法错误,但题目关注的是程序的逻辑输出,所以我们先忽略这个。关键在于`if`语句中的条件判断`x=y+z`,这里使用的是赋值操作符`=`,而不是比较操作符`==`。因此,`x`被赋值为`0`(`y+z`的结果),且表达式的结果为`0`,表示假。所以程序会执行`else`分支,输出``。因此,正确答案是D。113.有以下程序:#include<stdio.h>Voidmain(){intx;Scanf("%d",&x);If(x<=3)return;If(x!=10)Printf("%d\n",x);}程序运行时,输入的值在哪个范围内才会有输出结果_______。A、不等于10的整数B、大于3且不等于10的整数C、大于3或等于10的整数D、小于3的整数答案:B解析:这道题考察的是对C语言程序逻辑的理解。首先,程序通过`scanf`函数接收一个整数输入`x`。接着,如果`x`小于等于3,程序会直接通过`return`语句结束,不会输出任何内容。只有当`x`大于3时,程序才会继续执行。然后,程序检查`x`是否不等于10,如果不等于10,才会通过`printf`函数输出`x`的值。因此,只有输入的值大于3且不等于10时,程序才会有输出结果。114.若有说明:inta[3][4];则对a数组元素的非法引用是_______。A、[0][2∗1]B、a[1][3]C、a[4-2][0]D、a[0][4]答案:D解析:这道题考察的是对二维数组索引的理解。在C语言中,二维数组`inta[3][4]`表示有3行4列的数组。数组的索引是从0开始的,所以合法的行索引是0、1、2,合法的列索引是0、1、2、3。-A选项`a[0][2*1]`,行索引0是合法的,列索引2*1=2也是合法的,所以A选项是合法的引用。-B选项`a[1][3]`,行索引1是合法的,列索引3也是合法的,所以B选项是合法的引用。-C选项`a[4-2][0]`,行索引4-2=2是合法的,列索引0也是合法的,所以C选项是合法的引用。-D选项`a[0][4]`,行索引0是合法的,但列索引4超出了数组的列范围(0-3),所以D选项是非法的引用。因此,答案是D。115.在C语言,简单变量做实参时,它和对应形参之间的数据传递方式是___________。A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、由用户指定传递方式答案:B解析:答案解析:在C语言中,当简单变量作为实参时,实参将其值传递给形参。这种传递是单向的,形参值的改变不会影响实参的值。这是C语言函数参数传递的基本规则。因此,答案是B选项,即单向值传递。116.以下程序段_______。X=-1;Do{X=x∗x;}while(x==0);A、是死循环B、循环执行两次C、循环执行一次D、有语法错误答案:C解析:首先,我们分析程序段。程序初始化X为-1,然后进入do-while循环。在循环体内,X被更新为其自身的平方,即X=X*X。对于初始值X=-1,第一次循环后X的值变为1。接着,循环条件判断X是否等于0,由于此时X=1,循环条件不满足,因此循环结束。现在,我们根据这个逻辑来分析选项:A.是死循环-不正确,因为循环在X变为1后结束。B.循环执行两次-不正确,循环只执行了一次。C.循环执行一次-正确,与我们的分析相符。D.有语法错误-不正确,程序语法是正确的。因此,正确答案是C,循环执行一次。117.有以下程序,程序运行时输入:1,2,3<回车>,则输出的结果为______。#include“stdio.h”Voidmain(){intA,b,c;Scanf("%d%d%d",&a,&b,&c);Printf("a+b+c=%d\n",a+b+c);}A、6B、a+b+c=6C、123D、不确定的值答案:D解析:这道题考察的是对C语言程序的理解。程序首先通过`scanf`函数读取用户输入的三个整数,并存储在变量`a`、`b`、`c`中。然后,通过`printf`函数输出这三个数的和。但是,程序中的`main`函数声明为`voidmain()`,这是不标准的,标准C语言中的`main`函数应该返回一个`int`类型的值。此外,`#include`指令中的文件名应该用尖括号`<>`包围,而不是双引号`""`。由于这些错误,程序的行为是未定义的,因此输出的结果是不确定的值。所以正确答案是D。118.以下选项中,与k=n++;完全等价的语句是______。A、k=n;n=n+1;B、n=n+1;k=n;C、k=++n;D、k+=n+1;答案:A119.若有如下列程序,则运行后的输出结果是______。Voidmain(){intx=8;For(;x>0;x--){if(x%3!=0)Printf("%d,",x--);}Printf("%d,",--x);}A、7,4,2,B、8,7,5,2,C、9,7,6,4,D、8,5,2,-1,答案:D解析:在这个程序中,我们首先定义了一个整型变量`x`并将其初始化为8。然后,我们进入一个`for`循环,只要`x`大于0,就会执行循环体。在循环体中,我们首先检查`x`除以3的余数是否不为0。如果是,我们使用`printf`函数输出`x`的值,并将`x`减1。然后,我们再次使用`printf`函数输出`x`的值,并将`x`减1。当`x`等于0时,循环结束。因此,运行后的输出结果是8,5,2,-1,正确答案是D。120.以下可用作用户自定义标识符的一组是______。A、void、return、ifB、printf、include、fabsC、Max、_abc、MainD、2abc、pay$、sum-10答案:C121.C语言中,能表示整型变量x的值介于100和200之间这一条件的表达式是________。A、200>x>100B、200>=x>=100C、x>=100&&x<=200D、x>=100||x<=200答案:C解析:在C语言中,要表示整型变量x的值介于100和200之间,可以使用逻辑与运算符(&&)来连接两个条件表达式,即x>=100和x<=200。因此,正确的表达式应该是x>=100&&x<=200,选项C正确。122.若x和y都是int型变量,x=100,y=200,则运行如下语句后的输出结果是_______。Printf("%d",(x,y));A、100B、200C、100200D、输出格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版五年级语文上册教学计划
- 做2022销售的工作总结怎么写10篇
- 《烈火英雄》观后感
- 语文教师个人教学工作计划
- 《简爱》寒假读书日记10篇
- 2022年的销售工作计划
- 学生会辞职报告模板合集七篇
- 普通高中化学教案教学范文
- 关于工作方案4篇
- 公司学习心得体会15篇
- 食用碱检测报告
- 细胞核的结构和功能说课稿
- 12CM27型连续采煤机电气系统
- 招标代理成果文件质量保证措施
- 石油英语词汇
- 《夜宿山寺》-完整版课件
- 沪教牛津版八年级上册初二英语期末测试卷(5套)
- 北京市海淀区2020-2021学年度第一学期期末初三物理检测试卷及答案
- 家庭室内装饰装修工程保修单
- 小学语文课堂提问有效性策略研究方案
- 物业上门维修收费标准
评论
0/150
提交评论