2024年计算机二级《C语言程序设计》考试题库大全(含真题、典型题等)_第1页
2024年计算机二级《C语言程序设计》考试题库大全(含真题、典型题等)_第2页
2024年计算机二级《C语言程序设计》考试题库大全(含真题、典型题等)_第3页
2024年计算机二级《C语言程序设计》考试题库大全(含真题、典型题等)_第4页
2024年计算机二级《C语言程序设计》考试题库大全(含真题、典型题等)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE12024年计算机二级《C语言程序设计》考试题库大全(含真题、典型题等)一、单选题1.以下合法的标识符是A、intB、_a12C、3ceD、stu#答案:B解析:合法的标识符必须以字母、下划线()或者美元符($)开头,后面可以跟着字母、数字或者下划线。根据这个规则,选项B的"_a12"是一个合法的标识符,而选项A的"int"不是合法的标识符,因为它以字母开头,后面跟着数字;选项C的"3ce"也不是合法的标识符,因为它以数字开头;选项D的"stu#"也不是合法的标识符,因为它包含了非法字符"#"。2.若有说明“inta[3][4];”,则a数组元素的非法引用是()。A、[0][2*1]B、a[1][3]C、a[4-2][0]D、a[0][4]答案:D解析:根据题目中给出的说明“inta[3][4];”,可以知道a数组是一个二维数组,其中有3行4列,即a[0][0]~a[2][3]。而选项D中的a[0][4]是一个非法引用,因为数组a的第二维只有4个元素,下标最大只能是3,所以a[0][4]是越界的。因此,选项D是本题的正确答案。3.用getchar()函数可以从键盘读入一个()。A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量答案:D解析:getchar()函数是C语言中的一个函数,用于从标准输入(通常是键盘)读取一个字符。这个函数可以读取字符或字符型变量,因此选项D是正确的答案。4.已有定义“inta=-2;”和输出语句“printf("%8lx",a);”,以下正确的叙述是()。A、整型变量的输出形式只有%d一种B、%x是格式符的一种,它可以适用于任何一种类型的数据C、%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的D、%8lx不是错误的格式符,其中数字8规定了输出字段的宽度答案:C解析:本题考查对于C语言中printf函数的格式化输出的理解。选项A错误,因为除了%d,还有其他的格式符可以用于整型变量的输出,如%x、%o等。选项B错误,因为%x只适用于整型数据的输出。选项D错误,因为%8lx中的数字8表示输出字段的宽度,而不是格式符的一部分。因此,正确答案为C,%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的。5."for(i=1;i<9;i+=1);"循环共执行了()次。A、7B、8C、9D、10答案:B解析:根据题目中的循环语句,可以得知循环的初始值为i=1,每次循环i增加1,当i小于9时继续循环,直到i=9时跳出循环。因此,循环共执行了8次,选项B为正确答案。6.putchar()函数可以向终端输出一个()。A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量答案:D解析:putchar()函数是C语言中的一个标准库函数,用于向终端输出一个字符。它可以输出字符型变量或字符本身。因此,选项D是正确的答案。7.以下用户标识符中,合法的是()。A、intB、nitC、123D、a+b答案:B解析:用户标识符是指在程序中用来标识变量、函数、类等的名称。在命名时需要遵守一定的规则,如不能以数字开头,只能包含字母、数字和下划线等。选项A中的int是C++中的关键字,不能用作标识符;选项C中的123以数字开头,不符合命名规则;选项D中的a+b包含了加号,也不符合命名规则。因此,合法的用户标识符只有选项B中的nit。8.有定义语句:inta=5,b;不能给b赋2的赋值语句是()。A、b=a/2;B、=b+2;C、b=2%a;D、b=5;b=2;答案:B解析:根据题目中的定义语句,变量a被赋值为5,变量b没有被赋值。因此,选项A中的表达式a/2的结果为2,可以被赋值给b;选项C中的表达式2%a的结果为2,也可以被赋值给b;选项D中的语句b=5;b=2可以被执行,最终b的值为2。因此,正确答案为B,即选项B中的表达式b=b+2不能被赋值给b,因为它会将b的值增加2。9.若有说明“inta[][4]={0,0};”,则下面不正确的叙述是()。A、数组a的每个元素都可得到初值0B、二维数组a的第一维大小为1C、当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D、只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值答案:D解析:根据C语言的标准,当我们为二维数组指定初始化列表时,如果没有显式指定第一维的大小,那么第一维的大小将根据初始化列表中提供的元素的数量自动确定。对于提供的声明`inta[][4]={0,0};`,我们需要对其进行解析。首先,第二维的大小是固定的,为4。初始化列表中有两个整数0,它们将被用来初始化数组的前两个元素。由于初始化列表中的元素数量不足以填满整个二维数组,编译器将用0来填充剩余的元素。现在,我们逐一分析选项:A.数组a的每个元素都可得到初值0-正确。因为当二维数组部分初始化时,未明确初始化的部分会被自动填充为0。B.二维数组a的第一维大小为1-错误。根据初始化列表,实际上第一维的大小是由编译器自动计算的,因为这里只有两个0作为初始化值,并且数组的第二维大小是4,所以编译器会根据这些0的数量来分配足够的空间来存储它们,这意味着第一维的大小至少是2(每个0占用一个二维数组中的一维位置)。C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小-正确,但这里不适用于本例,因为初始化值的数量不能整除第二维的大小(2不能整除4)。然而,这个选项本身描述了一个正确的规则,只是在本例中不适用。D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值-错误。实际上,由于初始化列表中有两个0,它们将分别初始化a[0][0]和a[0][1]。但是,由于数组的部分初始化规则,剩余的数组元素(即a[0][2]、a[0][3]以及可能存在的其他行的所有元素)都会被自动初始化为0。因此,根据以上分析,不正确的叙述是B和D,但根据提供的答案,这里只选择了D作为错误选项。虽然B选项的表述存在误导性(因为它暗示了第一维大小是1,而实际上它至少是2),但D选项的表述直接违反了C语言数组初始化的规则。所以,如果必须选择一个不正确的叙述,D选项是更准确的答案。10.下列程序段的输出结果是()。

#include

Intmain()

{inta=1234;

Floatb=123.456;

Doublec=12345.54321;

Printf("%2d,%2.1f,%2.1f",a,b,c);

Return0;}A、无输出B、12,123.5,12345.5C、1234,123.5,12345.5D、1234,123.4,1234.5答案:C解析:程序中定义了一个整型变量a,一个单精度浮点型变量b,一个双精度浮点型变量c。然后使用printf函数输出它们的值,格式为"%2d,%2.1f,%2.1f",其中%2d表示输出整型变量a时占2个字符的宽度,%2.1f表示输出单精度浮点型变量b和双精度浮点型变量c时占2个字符的宽度,小数点后保留1位。因此,输出结果为"1234,123.5,12345.5",选项C为正确答案。11.若变量x、i、j和k都是int型变量,则计算下面表达式后,x的值是()。

X=(i=4,j=16,k=32)A、4B、16C、32D、52答案:C解析:在C语言中,当使用逗号运算符时,会按照从左到右的顺序依次计算各个表达式的值,并返回最后一个表达式的值。在这个例子中,表达式`X=(i=4,j=16,k=32)`使用了逗号运算符,它将i的值设置为4,将j的值设置为16,将k的值设置为32,并返回k的值,即32。因此,表达式`X=(i=4,j=16,k=32)`的结果是x的值为32,所以正确答案是选项C。12.若有代数式,则不正确的C语言表达式是()。A、/b/c*e*3B、3*a*e/b/cC、3*a*e/b*cD、a*e/c/b*3答案:B13.C语言是一种()。A、机器语言B、汇编语言C、高级语言D、低级语言答案:C解析:本题考查对C语言的基本认识。C语言是一种高级语言,它是一种通用的、面向过程的计算机编程语言,由DennisRitchie在20世纪70年代初期在贝尔实验室为Unix操作系统开发而设计。C语言具有高效、简洁、灵活等特点,被广泛应用于系统软件、应用软件、嵌入式系统等领域。因此,本题的正确答案为C。14.以下选项中不是C语句的是()。A、++tB、k=i=j;C、{a/=b=1;b=a%2;}答案:A解析:选项A是C语言中的自增语句,表示将变量t的值增加1。选项B和C都是正确的C语句,分别表示将变量i和j的值设置为j,同时初始化一个新的代码块a并设置a的值为b,以及交换变量a和b的值。所以答案是A,这是没有歧义的,其他选项都有不同的解释或应用方式。15.有以下定义:

Voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A、fun(intx,doublen);B、m=fun(10,12.5);C、fun(10,12.5);D、voidfun(n,x);答案:C解析:根据题目中的定义,函数fun接受一个整型变量n和一个双精度浮点型变量x作为参数。所以选项A和D都是错误的,因为它们的参数类型和数量与函数定义不符。选项B也错误,因为它试图将函数调用结果赋值给变量m,但在函数fun内部并没有返回值。因此,只有选项C是正确的,它只是简单地调用函数fun并传递参数10和12.5。综上所述,答案为C。16.现有以下程序段:

#include

Intmain()

{int

A,b,c;

Scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);

Printf("a=%d,b=&d,c=%d\n",a,b,c);

Return0;

}

若输出的结果为“a=20,b=30,c=40”,则以下能够正确输入数据的是A、=1020,b=2030,c=40B、20,30,40C、a=20,b=30,c=40D、a=1020,b=3020,c=40答案:D解析:在给出的程序段中,使用了`Scanf`函数进行输入数据,并在`Printf`函数中进行了输出。从给出的输出结果来看,正确输入数据的方式应为`a=1020,b=3020,c=40`,这是因为`Scanf`函数中的`%*d`用于读取空格前后的数字并丢弃,`%d`用于读取一个整数并将其赋值给变量。因此,选项D符合要求。17.执行完循环"for(i=1;i<100;i++);"后,i的值为()。A、99B、100C、101D、102答案:B解析:循环条件为i<100,因此当i=100时,循环结束。而循环体中只有一个空语句,不会对i的值产生影响。因此执行完循环后,i的值为100,选项B正确。18.设有数组定义“chararr[]="China";”,则数组arr所占空间为()。A、4个字节B、5个字节C、6个字节D、7个字节答案:C解析:数组arr中存储的是字符类型的数据,每个字符占用一个字节的空间。而数组arr中共有6个字符,包括'C'、'h'、'i'、'n'、'a'和'\0'(字符串结束符),因此数组arr所占空间为6个字节。故选C。19.以下叙述不正确的是()。A、一个C源程序必须包含一个main函数B、一个C源程序可由一个或多个函数组成C、程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面答案:D解析:A选项正确,因为main函数是C程序的入口函数,程序从这里开始执行。B选项正确,因为C程序可以由多个函数组成,每个函数都有自己的功能。C选项正确,因为C程序的基本组成单位是函数,每个函数都有自己的功能。D选项不正确,因为在C程序中,注释可以位于一条语句的前面或后面,用来对代码进行解释说明,提高代码的可读性和可维护性。综上所述,选项D不正确。20.有以下程序段,其运行结果是()。

Inti,j;

For(i=3;i>=1;i--)

{for(j=1;j<=2;j++)

Printf("%d",i+j);

Printf("\n");}A、234B、432C、23D、45答案:D解析:该程序段是一个嵌套的for循环,外层循环从3开始,每次减1,内层循环从1开始,每次加到2。由于内层循环在每次外层循环结束后都会执行,因此输出的结果是:```34```在题目中,内层循环使用了Printf函数来输出结果,而i和j的值在每次循环中都会发生变化。因此,当i从3递减到1时,j的值从1递增到2。所以输出的结果是:```45```因此,答案是D。21.下面程序段的输出结果是()。

#include

Intmain()

{intk,a[3][3]={1,2,3,4,5,6,7,8,9};

For(k=0;k<3;k++)

Printf("%d",a[k][2-k]);

Return0;}A、357B、369C、159D、147答案:A解析:这道题考察的是二维数组的访问。程序中定义了一个3行3列的二维数组a,并初始化为1~9。然后通过for循环,依次输出a[0][2]、a[1][1]、a[2][0]三个元素。因为a[0][2]为3,a[1][1]为5,a[2][0]为7,所以输出结果为357。因此,答案为A。22.以下能对二维数组a进行正确初始化的语句是()。A、inta[2][]={{1,0,1},{5,2,3}};B、inta[][3]={{1,2,3},{4,5,6;C、inta[2][4]={{1,2,3},{4,5},{6}};D、inta[][3]={{1,0,1},{},{1,1;答案:B解析:A选项中,第二维的长度没有指定,无法正确初始化二维数组。B选项中,第一维长度为2,第二维长度为3,可以正确初始化二维数组。C选项中,第一维长度为2,第二维长度为4,但是初始化的元素个数不足,无法正确初始化二维数组。D选项中,第一维长度不确定,第二维长度为3,但是初始化的元素个数不确定,无法正确初始化二维数组。因此,正确答案为B。23.有如下函数定义:

#include

Intfun(intk)

{if(k<1)return0;

Elseif(k==1)return1;

Elsereturnfun(k-1)+1;

}

若执行调用语句“n=fun(3);”,则函数fun总共被调用的次数是A、1B、2C、3D、5答案:C解析:当调用fun(3)时,fun(3)会调用fun(2),fun(2)会调用fun(1),fun(1)返回1,fun(2)返回2,fun(3)返回3,因此fun总共被调用了3次。所以答案为C。24.表达式18/4*sqrt(4.0)/8值的数据类型是()。A、intB、floatC、doubleD、不确定答案:C解析:根据运算符优先级,先计算括号内的sqrt(4.0),结果为2.0。然后进行除法运算18/4,结果为4。最后进行乘法运算4*2.0/8,结果为1.0。因为其中包含了浮点数2.0,所以结果的数据类型为double,因此选项C为正确答案。25.sizeof(double)的结果值是()。A、8B、4C、2D、出错答案:A解析:sizeof是C语言中的一个运算符,用于计算数据类型或变量所占用的字节数。double是C语言中的一种浮点数类型,通常占用8个字节。因此,sizeof(double)的结果值为8,选项A为正确答案。选项B、C、D都不正确。26.已知intx=10,表达式x+=x-=x-x的值是()。A、10B、40C、30D、20答案:D解析:首先,根据运算符优先级,先执行减法运算,x-x的值为0。然后,x-=0相当于x=x-0,不改变x的值。最后,x+=x,相当于x=x+x,即x=2x。因此,最终x的值为20,选项D为正确答案。27.有以下程序段,其运行结果是()。

Inty=9;

For(;y>0;y--)

If(y%3==0)printf("%d",--y);A、875421B、963C、852D、741答案:C解析:首先,定义了一个整型变量y并赋值为9。然后,进入for循环,循环条件为y>0,每次循环y自减1。在循环体内,判断y是否能被3整除,如果能,则先将y自减1,再输出y的值。因此,循环的执行过程如下:第一次循环,y=9,不能被3整除,不输出。第二次循环,y=8,不能被3整除,不输出。第三次循环,y=7,不能被3整除,不输出。第四次循环,y=6,能被3整除,先将y自减1,y变为5,再输出5。第五次循环,y=4,不能被3整除,不输出。第六次循环,y=3,能被3整除,先将y自减1,y变为2,再输出2。第七次循环,y=1,不能被3整除,不输出。因此,程序的输出结果为852,选项C为正确答案。28.以下for语句中,书写错误的是()。A、for(i=1;i<5;i++)B、i=1;for(;i<5;i++);C、for(i=1;i<5;i++);D、for(i=1;i<5;)i++;答案:A解析:在A选项中,for语句的格式不正确。在for语句中,冒号后面应该是一个分号,而不是一个分号加一个逗号,这是语法错误。因此,A选项是错误的。B、C、D选项的for语句格式都是正确的。29.当整型变量x为大于1的奇数时,值为0的表达式是()。A、x%2==0B、x/2C、x%2!=0D、x%2==1答案:A解析:根据题目描述,当整型变量x为大于1的奇数时,值为0的表达式是x%2==0。奇数除以2的余数一定是1,因此x%2的结果为1。而等于0的表达式可以通过判断x%2是否等于0来实现,因为只有偶数才能被2整除得到0。选项A、x%2==0正确地判断了x是否为偶数,如果x为奇数,表达式结果为0。因此,根据题目描述,选项A、x%2==0是正确答案。30.下列叙述正确的是()。A、在switch语句中不一定有break语句B、在switch语句中必须使用default语句C、break语句必须与switch语句中的case配对使用D、break语句只能用于switch语句答案:A解析:A选项正确。在switch语句中,如果某个case语句执行完毕后没有break语句,程序会继续执行下一个case语句,直到遇到break语句或者整个switch语句结束。因此,在switch语句中不一定有break语句。B选项错误。在switch语句中,default语句是可选的,如果没有default语句,程序会跳过switch语句。C选项错误。break语句可以用于任何循环语句或者switch语句中,不一定要与case语句配对使用。D选项错误。break语句可以用于任何循环语句或者switch语句中,不一定只能用于switch语句。综上所述,选项A正确,其他选项错误。31.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。A、1B、2C、2.0D、2.5答案:C解析:根据运算符优先级,先计算3/2,结果为1,然后将x+1的结果赋值给y,即y=1+1=2,最后将2赋值给x,因此x的值为2.0,y的值为2.0,故选C。32.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是()。A、函数的形参和实参分别占用不同的存储单元B、形参只是形式上存在,不占用具体存储单元C、同名的实参和形参占同一存储单元D、函数的实参和其对应的形参共占同一存储单元答案:A解析:本题考查函数的形参和实参的存储方式。函数的形参和实参在内存中是不同的存储单元,因此选项A正确。选项B错误,形参在函数调用时会被赋值为实参,因此会占用具体的存储单元。选项C错误,同名的实参和形参虽然可以在函数内部互相访问,但它们在内存中是不同的存储单元。选项D错误,函数的实参和形参在内存中是不同的存储单元。因此,本题的正确答案是A。33.设有语句“inta=3;”,则执行了语句“a+=a-=a*=a;”后,变量a的值是()。A、3B、0C、9D、-12答案:D34.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。A、整型常量B、整型表达式C、整型常量或整型表达式D、任何类型的表达式答案:C解析:在C语言中,引用数组元素时,其数组下标的数据类型允许是整型常量或整型表达式。整型常量是指固定的整数值,例如0、1、2等;而整型表达式是指由整型常量和运算符组成的表达式,例如i+1、j*2等。因此,选项C正确。选项A和B都是正确的,但不全面;选项D是错误的,因为数组下标必须是整型类型。35.以下语句的输出结果是()。

Printf("%d\n",'A'-51);A、5B、14C、8D、输出项不合法,无法正常输出答案:B解析:本题目中的语句为Printf("%d\n",'A'-51),其中'A'的ASCII码为65,减去51后得到14,因此输出结果为14,选项B为正确答案。36.若有说明语句“charc='\72';”,则变量c在内存中占用的字节数是()。A、1B、2C、3D、4答案:A解析:char类型在内存中占用1个字节,因此无论c的值是什么,它在内存中占用的字节数都是1。所以答案为A。37.一个C源程序文件中所定义的全局变量,其作用域是()。A、由具体定义位置和extern说明来决定B、所在程序的全部范围C、所在函数的全部范围D、所在文件的全部范围答案:A解析:全局变量是指在函数外部定义的变量,其作用域可以跨越多个函数。在C语言中,全局变量的作用域可以由具体定义位置和extern说明来决定,因此选项A是正确的。如果在定义全局变量时使用了extern关键字,则该变量的作用域将扩展到整个程序中,即使在其他文件中也可以使用该变量。如果没有使用extern关键字,则该变量的作用域将限制在当前文件中。因此,选项B、C、D都是错误的。38.在一个C程序中,下列说法正确的是()。A、main函数必须出现在所有函数之前B、main函数可以出现在其他函数之外的任何位置C、main函数必须出现在所有函数之后D、main函数必须出现在固定位置答案:B解析:在一个C程序中,main函数是程序的入口,程序从main函数开始执行。因此,main函数必须存在于程序中。但是,main函数的位置并没有固定的要求,可以出现在其他函数之外的任何位置,也可以出现在其他函数之后。因此,选项B是正确的。而选项A、C、D都是错误的。39.已知intx=023,表达式++x的值是()。A、17B、18C、19D、20答案:D解析:题目中给出的int类型变量x的值为023,这是一个八进制数,转换为十进制为19。表达式++x表示先将x自增1,再将自增后的值作为表达式的值。因此,执行++x后,x的值变为20,表达式的值也为20。因此,选项D为正确答案。40.已知intx=7,y=3;表达式x/y的值是()。A、1B、2C、2.333333D、2.33答案:B解析:由于x和y都是int类型,所以进行除法运算时会自动进行整数除法,即只保留整数部分,舍去小数部分。因此,x/y的值为2。故选B。41.字符串"ABC"在内存中占用的字节数是()。A、3B、4C、6D、8答案:B解析:字符串"ABC"由三个字符组成,每个字符占用一个字节的内存空间,因此字符串"ABC"在内存中占用的字节数为3个字节。但是,由于字符串在内存中需要以某种方式进行存储,通常会在字符串末尾添加一个表示字符串结束的特殊字符'\0',因此实际上字符串"ABC"在内存中占用的字节数为4个字节。因此,选项B为正确答案。42.以下叙述中正确的是()。A、函数名允许用数字开头B、函数调用时,不必区分函数名称的大小写C、调用函数时,函数名必须与被调用的函数名完全一致D、在函数体中只能出现一次return语句答案:C解析:A选项是错误的,函数名不能以数字开头。B选项是错误的,函数名称是区分大小写的。D选项是错误的,函数体中可以出现多个return语句。因此,正确答案是C选项,调用函数时,函数名必须与被调用的函数名完全一致。43.执行下面的程序段后,变量k的值为()。

Intk=3,s[2];

S[0]=k;k=s[1]*10;A、不定值B、33C、30D、10答案:A解析:根据程序段,首先定义了一个整型变量k并赋值为3,然后定义了一个整型数组s,数组中第一个元素赋值为k,即s[0]=3。接着执行k=s[1]*10,由于数组s没有初始化,所以s[1]的值是不确定的,因此k的值也是不确定的,选项A为正确答案。44.函数返回值的类型是由()决定的。A、调用函数时临时B、return语句的表达式类型C、调用该函数的主调函数类型D、定义函数时,所指定的函数类型答案:D解析:本题考查函数返回值类型的确定方式。函数返回值类型是由定义函数时所指定的函数类型决定的,因此答案为D。A选项错误,调用函数时临时的数据类型是函数参数的类型,与返回值类型无关。B选项错误,return语句的表达式类型只是返回值类型的一种表达方式,但并不决定返回值类型。C选项错误,调用该函数的主调函数类型与返回值类型也无关。综上所述,答案为D。45.已知字母A的ASCII码为十进制数65,且C2为字符型,则执行语句“C2='A'+'6'-'3';”后C2中的值是()。A、DB、67C、不确定的值D、C答案:A解析:根据ASCII码表可知,字符'A'的ASCII码为65,字符'6'的ASCII码为54,字符'3'的ASCII码为51。执行语句“C2='A'+'6'-'3';”后,先进行'A'+'6'的运算,得到119,再减去'3'的ASCII码51,最终结果为68,对应的字符为'D'。因此,选项A为正确答案。46.以下关于函数参数传递方式的叙述正确的是()。A、数据只能从实参单向传递给形参B、数据可以在实参和形参之间双向传递C、数据只能从形参单向传递给实参D、函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用答案:A解析:函数参数传递方式有两种:值传递和引用传递。值传递是指将实参的值复制一份给形参,形参的修改不会影响实参。引用传递是指将实参的地址传递给形参,形参的修改会影响实参。无论是值传递还是引用传递,数据都是从实参传递给形参,因此选项A正确。选项B和C都是错误的。选项D虽然说的是可以选择使用哪种传递方式,但是并没有涉及到数据传递的方向,因此不正确。47.以下不能对一维数组a进行正确初始化的语句是()。A、inta[10]={0,0,0,0,0};B、inta[10]={};C、inta[]={0};D、inta[10]={10*1};答案:B解析:A选项中,数组a被正确初始化为10个元素,每个元素的值都为0。C选项中,数组a被正确初始化为1个元素,该元素的值为0。D选项中,数组a被正确初始化为10个元素,每个元素的值都为10。而B选项中,数组a被错误地初始化为10个元素,但是每个元素的值都没有被指定,因此不能保证它们的值是0。因此,B选项不能正确初始化一维数组a。48.以下叙述中不正确的是()。A、调用printf函数时,必须要有输出项B、使用putchar函数时,必须在之前包含头文件stdio.hC、在C语言中,整数可以以十进制、八进制或十六进制的形式输出D、使用putchar函数可以不要输出项答案:A解析:printf函数是C语言中用于输出格式化的函数,它可以是无参函数,即不需要输出项,所以A选项错误。B选项正确,putchar函数是标准库函数,使用时需要包含头文件stdio.h。C选项正确,整数可以用printf函数以十进制、八进制或十六进制输出。D选项正确,putchar函数可以不需要输出项,比如putchar('A')可以输出字符'A'。因此,本题答案为A。49.能正确表示a和b同时为正或同时为负的逻辑表达式是()。A、(a>=0||b>=0)&;&(a<0||b<0)B、(a>=0&;&b;>=0)&;&(a<0&;&b;<0)C、(a+b>0)&;&(a+b<=0)D、a*b>0答案:D解析:本题考查逻辑表达式的构建和理解。题目要求表示a和b同时为正或同时为负的逻辑表达式,即a和b同号。选项A中使用了或运算符,无法准确表示a和b同号的情况;选项B中使用了与运算符,但是表达式不正确,应该是(a>=0&&b>=0)||(a<0&&b<0);选项C中使用了加法,无法准确表示a和b同号的情况。因此,正确答案为D,即a*b>0,因为当a和b同号时,它们的乘积为正数。50.设a=1,b=2,c=3,d=4,则表达式aA、4B、3C、2D、1答案:D解析:根据题目可知,a=1,因此表达式a的值为1。选项中只有D选项的值为1,因此D选项为正确答案。51.有如下程序段:

#include"stdio.h"

Intmain()

{charc;

C=('z'-'a')/2+'A';

Putchar(c);

Return0;}

输出结果为A、MB、NC、0D、Q答案:A解析:这道题考察的是字符类型和ASCII码的知识。程序中定义了一个字符变量c,然后将字符常量'z'和'a'相减,得到的结果是25,再除以2,得到的结果是12。将12加上字符常量'A'的ASCII码值65,得到的结果是77,即字符'M'的ASCII码值。最后使用putchar函数输出字符变量c的值,即输出字符'M'。所以,答案为A。52.下列运算符中优先级最低的是()。A、?:B、&&C、+D、!=答案:A解析:本题考查运算符的优先级。在四个选项中,三个运算符都是比较常见的,但是?:运算符相对来说使用较少,因此容易被忽略。实际上,?:运算符的优先级是比较低的,它的优先级仅仅高于赋值运算符=。因此,本题的答案是A。53.一个C程序的执行是从()。A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序文件的第一个函数开始,到本程序main函数结束D、本程序的main函数开始,到本程序文件的最后一个函数结束答案:A解析:本题考查对C程序执行过程的理解。C程序的执行是从main函数开始,到main函数结束。因此,选项A是正确的。选项B和选项D都包含了“本程序文件的最后一个函数结束”,这是错误的,因为程序中可能会调用其他文件中的函数,因此程序的执行并不一定在本程序文件中结束。选项C则包含了“本程序文件的第一个函数开始”,这也是错误的,因为程序中可能会有其他函数在main函数之前被调用。因此,本题的正确答案是A。54.下面叙述正确的是()。A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串"STOP"与"STOP"相等D、字符串"That"小于字符串"The"答案:D解析:A选项是错误的,因为两个字符串所包含的字符个数相同并不意味着它们相等,例如"abc"和"cba"就包含相同的字符个数,但它们并不相等。B选项也是错误的,因为字符串的大小比较是按照字典序进行的,而不是按照字符个数进行的。C选项是正确的,因为两个相同的字符串是相等的。D选项也是正确的,因为在字典序中,"T"比"t"小,所以"That"比"The"小。55.下面程序的输出结果是()

#include

Intmain()

{

Intx=7,y=3;

Printf("%d",y=x/y);

Return0;

}A、0B、2C、3D、不确定的值答案:B解析:程序中定义了两个整型变量x和y,分别赋值为7和3。在输出语句中,先执行了y=x/y,由于x和y都是整型变量,所以执行的是整型除法,即7/3=2,将结果赋值给y。然后输出y的值,即2。所以,程序的输出结果是B选项,即2。56.一个C程序总是从()开始执行的。A、main函数B、文件中的第一个函数C、文件中的第一个子函数调用D、文件中的第一条语句答案:A解析:C程序的执行是从main函数开始的,因为操作系统在执行程序时会首先找到程序中的main函数,并从该函数开始执行程序。因此,选项A是正确的答案。选项B、C、D都不正确,因为文件中的第一个函数、子函数调用或语句并不一定是main函数,程序的执行也不一定从这些位置开始。57.要为字符型变量a赋初值,下列语句中哪一个是正确的()。A、chara="3";B、chara='3';C、hara=%;D、chara=*;答案:B解析:本题考查对字符型变量赋值的语法规则的掌握。字符型变量的值必须用单引号括起来,而不能用双引号或其他符号。因此,选项B是正确的,选项A、C、D都是错误的。答案解释:A选项中,用双引号括起来的是字符串,而不是字符,因此是错误的。B选项中,用单引号括起来的是字符,符合字符型变量的赋值语法规则,因此是正确的。C选项中,%不是字符,因此是错误的。D选项中,*不是字符,因此是错误的。58.下列运算符中优先级最高的是()。A、!B、==C、+D、>答案:A解析:本题考查运算符的优先级。在四个选项中,逻辑非运算符"!"的优先级最高,因此选项A正确。具体来说,逻辑非运算符"!"的优先级为1,表示在表达式中优先级最高,其次是算术运算符和关系运算符,它们的优先级为2和3,最后是逻辑运算符,其优先级为4。因此,选项B的优先级为3,选项C的优先级为2,选项D的优先级为3,都不如选项A的优先级高。59.若有以下语句,则正确的描述是()。

Chara[]="toyou";

Charb[]={'t','o','y','o','u'};A、数组和b数组的长度相同B、a数组长度小于b数组长度C、a数组长度大于b数组长度D、a数组等价于b数组答案:C解析:-Chara[]="toyou";这行代码定义了一个字符数组a,并初始化为字符串"toyou"。由于字符串以'\0'结尾,所以a数组的长度为6。-Charb[]={'t','o','y','o','u'};这行代码定义了一个字符数组b,并初始化为字符序列{'t','o','y','o','u'}。由于没有以'\0'结尾,所以b数组的长度为5。-因此,a数组长度大于b数组长度,选项C正确。选项A和B都是错误的。选项D也是错误的,因为a数组和b数组虽然存储的内容相同,但它们的长度不同。60.使用scanf("a=%d,b=%d",&a,&b)为变量a和b赋值。要使a和b均为50,正确的输入是()。A、=50b=50B、5050C、a=50,b=50D、50,50答案:C解析:本题考查scanf函数的使用。scanf函数的格式控制字符串中可以包含除了转换说明符之外的其他字符,这些字符将被原样读入并且必须与输入流中的字符完全匹配。因此,正确的输入应该是a=50,b=50,即选项C。其他选项中,A和D中的逗号会被当做普通字符读入,导致输入不正确;B中缺少了变量名,无法正确赋值。61.若变量已正确说明为float型,要通过语句“scanf("%f%f%f",&a,&b,&c);”给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是()。A、102233B、10.0,22.0,33.0C、10.022.033.0D、102233答案:B解析:本题考查对scanf函数的理解和使用。scanf函数是C语言中用于输入的函数,其格式为scanf("格式控制字符串",变量列表)。其中,格式控制字符串用于指定输入的格式,变量列表用于指定输入的变量。根据题目中的说明,变量a、b、c已正确说明为float型,因此在输入时需要使用%f格式控制符。根据题目要求,需要给a赋予10.0,b赋予22.0,c赋予33.0。因此,正确的输入形式应该是scanf("%f%f%f",&a,&b,&c);。选项A中输入的数字串“102233”可以被正确解析为10.0、22.0、33.0,因此是正确的输入形式。选项B中使用了逗号分隔符,而scanf函数默认使用空格作为分隔符,因此无法正确解析输入,是不正确的输入形式。选项C中省略了空格或逗号分隔符,同样无法正确解析输入,是不正确的输入形式。选项D中使用了空格分隔符,可以被正确解析为10.0、22.0、33.0,因此是正确的输入形式。综上所述,选项B是不正确的输入形式,是本题的正确答案。62.有以下程序段,其运行结果是()。

Inti=5;

Do{

If(i%3==1)

If(i%5==2)

{printf("*%d",i);

Break;}

I++;

}while(i!=0);A、*2*6B、*7C、*5D、*3*5答案:B解析:程序段中使用了do-while循环,先执行一次循环体再判断条件是否成立。循环体中先判断i是否满足i%3==1,如果满足再判断i是否满足i%5==2,如果满足则输出"*i"并跳出循环,否则i自增1。当i=7时,满足i%3==1和i%5==2的条件,输出"*7"并跳出循环,所以答案为B。63.在C语言中,字符型数据在计算机内存中,以字符的()形式存储。A、原码B、反码C、ASCII码D、BCD码答案:C解析:在C语言中,字符型数据在计算机内存中以ASCII码的形式存储。ASCII码是一种将字符映射为数字的编码方式,每个字符都对应一个唯一的ASCII码。例如,字符'A'对应的ASCII码是65,字符'a'对应的ASCII码是97。因此,当我们在程序中使用字符型数据时,实际上是在使用对应的ASCII码。所以,选项C是正确的答案。64.若i=10,则执行下列程序后,变量i的值为()。Switch(i){case9:i+=1;Case10:i+=1;Case11:i+=1;Default:i+=1;}A、11B、12C、13D、14答案:C65.设a=3,b=4,c=5,则表达式!(a>b)&&!c||1的结果是()。A、1B、0C、2D、4答案:A解析:根据运算符优先级,先计算逻辑非运算符!,再计算逻辑与运算符&&,最后计算逻辑或运算符||。!(a>b)的结果为false,因为a=3,b=4,所以a不大于b。!c的结果为false,因为c=5,所以c不为0。false&&false的结果为false,因为逻辑与运算符需要两个操作数都为true才能返回true。false||1的结果为true,因为逻辑或运算符只需要有一个操作数为true就能返回true。因此,表达式的结果为1,选项A正确。66.()语句,在循环条件初次判断为假,还会执行一次循环体。A、forB、whileC、do-whileD、以上都不是答案:C解析:本题考查循环语句的执行过程。在循环条件初次判断为假时,for和while循环会直接跳出循环,不再执行循环体内的语句;而do-while循环会先执行一次循环体内的语句,再进行循环条件的判断,只有在循环条件为真时才会继续执行循环体内的语句,否则跳出循环。因此,本题的正确答案为C。67.下列各项中,不是C语言特点的是()。A、语言简洁、紧凑,使用方便B、数据类型丰富,可移植性好C、能实现汇编语言的大部分功能D、有较强的网络操作功能答案:D解析:本题考查对C语言特点的理解。选项A、B、C都是C语言的特点,而选项D则不是C语言的特点。C语言虽然可以通过库函数实现网络操作,但是它本身并没有较强的网络操作功能。因此,选项D是本题的正确答案。68."inta=2;while(a=0)a--;"该循环共执行了()次。A、0B、1C、2D、3答案:A解析:该循环的条件为a=0,而不是a==0,因此每次循环都会将a赋值为0,导致循环条件不成立,从而跳出循环。因此该循环一次也不会执行,答案为A。69.C语言中,要求运算对象只能为整数的运算符是()。A、%B、/C、>D、*答案:A解析:本题考查C语言中的运算符。根据题干中的要求,运算对象只能为整数的运算符是哪一个。根据C语言的运算符,可以得出以下结论:A.%:取模运算符,要求运算对象为整数。B./:除法运算符,可以用于整数和浮点数的运算。C.>:大于运算符,可以用于整数和浮点数的比较。D.*:乘法运算符,可以用于整数和浮点数的运算。综上所述,只有选项A符合题目要求,因此答案为A。70.以下选项中,()是不正确的C语言字符型常量。A、'a'B、'\x41'C、'\101'D、"a"答案:D解析:C语言中,字符型常量用单引号括起来,字符串常量用双引号括起来。选项A、B、C都是正确的字符型常量,分别表示字符'a'、ASCII码为65的字符、八进制数101对应的字符。选项D使用了双引号,表示字符串常量,不是字符型常量,因此不正确。71.调用getchar和putchar函数时,必须包含的头文件是()。A、stdio.hB、stdlib.hC、defineD、以上都不对答案:A解析:本题考查对C语言中输入输出函数的基本知识。getchar和putchar函数都是C语言中的标准输入输出函数,需要包含stdio.h头文件才能使用。因此,本题的正确答案为A。选项Bstdlib.h是C语言中的标准库函数头文件,与本题无关;选项Cdefine是C语言中的预处理指令,也与本题无关;选项D以上都不对,显然是错误的。72.设a为整型变量,不能正确表达数学关系10A、10B、a==11||a==12||a==13||a==14C、a>10&;&a;<15D、!(a<=10)&;&!(a>=15)答案:A解析:题目要求表达数学关系10,即a等于10。根据选项,只有A选项表达了a等于10的关系,因此A选项为正确答案。B选项表达了a等于11、12、13、14的关系,与题目要求不符。C选项表达了a大于10且小于15的关系,不能准确表达a等于10的关系。D选项表达了a不小于等于10且不大于等于15的关系,也不能准确表达a等于10的关系。综上,A选项为正确答案。73.有以下程序:#includeIntmain(){Unsigneda=32768;intb;B=a;Printf("b=%d\n",b);Return0;}程序运行的结果是A、b=32768B、=32767C、b=-32768D、b=-1答案:D解析:该程序中定义了一个无符号整型变量a并赋值为32768,超过了有符号整型变量的最大值,因此会发生溢出。然后将a赋值给有符号整型变量b,由于溢出,b的值为-1。最后输出b的值为-1,因此答案为D。74.下列不正确的转义字符是()。A、\\B、\'C、074D、\0答案:C解析:转义字符是在字符串中使用反斜杠(\)加上一个字符来表示特殊字符的方法。常见的转义字符包括\n(换行符)、\t(制表符)、\"(双引号)等等。A选项中的\\表示一个反斜杠字符,是正确的转义字符。B选项中的\'表示一个单引号字符,也是正确的转义字符。C选项中的074不是转义字符,它表示的是一个八进制数,对应的十进制数是60。D选项中的\0表示一个空字符,也是正确的转义字符。因此,不正确的转义字符是C选项中的074。75.i、j已定义为int类型,则以下程序段中内循环体的执行次数是()。For(i=5;i;i--)For(j=0;j<4;j++){…}A、20B、24C、25D、30答案:A76.下列叙述错误的是()。A、C程序中的每条语句都用一个分号作为结束符B、C程序中的每条命令都用一个分号作为结束符C、程序中的变量必须先定义,后使用D、C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写答案:B解析:在C程序中,每条语句都用一个分号作为结束符,而不是每条命令。命令是指C程序中的各种语句和表达式,而语句是指完成某种功能的一组命令的集合。因此,选项B中的叙述是错误的。77.以下不构成无限循环的语句或语句组是()。A、n=10;while(n);{n--;}B、n=0;while(1){n++;}C、n=0;do{++n;}while(n<=0);D、for(n=0,i=1;;i++)n+=i;答案:C78.对以下说明语句,理解正确的是()。Inta[10]={6,7,8,9,10};A、将5个初值依次赋给a[1]到a[5]B、将5个初值依次赋给a[0]到a[4]C、将5个初值依次赋给a[6]到a[10]D、因为数组长度与初值的个数不相同,所以此语句不正确答案:B79.以下选项中,不正确的C语言浮点型常量是()。A、160.B、0.12C、2e4.2D、0.0答案:C解析:C语言中的浮点型常量可以用小数形式

温馨提示

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

评论

0/150

提交评论