1、一、单选题 (共 5 题,70.0 分 )1、x、y、z 被定义为 int 型变量,若从键盘给 x、y 、z 输入数据,正确的输入语句是() 。 input x,y,z; scanf(“%d%d%d“, scanf(“%d%d%d“,x,y,z); read(“%d%d%d“, 标准答案 :B2、设有定义“int a3 ,b,*pprintf(“%dn“,x-); 执行后的输出结果是() 。 32767FFFE-1-32768标准答案 :C4、设有代码“int(*ptr)10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 p
2、tr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 10 个元素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量的指针指向 10 个整型变量的函数指针一个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C5、标准库函数 fputs(pl,p2 )的功能是( ) 。 试题分析:标准函
3、数调用 fputs(p1 ,p2)完成的功能是将由字符指针 pl 所指的字符串内容输出到与文件指针 p2 相关联的文件中,即将从 pl 所指的内存中的字符串内容输出到 p2 所指向的文件中。所以正确解答是 C 从 pl 指向的文件中读一个字符串存入 p2 指向的内存从 p2 指向的文件中读一个字符串存入 pl 指向的内存从 pl 指向的内存中的一个字符串输出到 p2 指向的文件从 p2 指向的内存中的一个字符串输出到 pl 指向的文件标准答案 :C1、在标准 C 中,赋值表达式可以出现在表达式的任何位置( ) 。 正确错误标准答案 :A2、在标准 C 语言中,可以使用 scanf 函数输入包括
4、空格在内的字符() 。 正确错误标准答案 :B1、设有代码“int(*ptr )10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 ptr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 10 个元素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量
5、的指针指向 10 个整型变量的函数指针一个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C2、标准库函数 fputs(pl,p2 )的功能是( ) 。 试题分析:标准函数调用 fputs(p1 ,p2)完成的功能是将由字符指针 pl 所指的字符串内容输出到与文件指针 p2 相关联的文件中,即将从 pl 所指的内存中的字符串内容输出到 p2 所指向的文件中。所以正确解答是 C 从 pl 指向的文件中读一个字符串存入 p2 指向的内存从 p2 指向的文件中读一个字符串存入 pl 指向的内存从 pl 指向的内存中的一个字符串输出到 p2 指向的文件从 p2 指向的
6、内存中的一个字符串输出到 pl 指向的文件标准答案 :C3、设 x、y、z、t 均为 int 型变量,则执行以下语句后, t 的值为() 。xyz1;t+x|+y+z ; 试题分析:语句序列“xy z l ;t +x|+y scanf(“%d%f”,scanf(“%d%d”,a,b);scanf(“%f%f”,x,y);标准答案 :B1、在标准 C 中,整型变量与字符变量是可以通用的( ) 。 正确错误标准答案 :A2、在 C 语言中输入数据时可以指定数据的精度() 。 正确错误标准答案 :B1、设有定义“char a10=”abcd“,*p=a ;” ,则*(p4)的值是( ) 。 试题分析
7、:若有 char a10“abcd ”,*pa,则指针变量 p 指向 a0. 在表达式* (p 4)中,p 4 指向 a4,*(p4)就是 a4.由于用字符串“abcd” 给字符数组 a 赋初值,a4的值是字符串结束标记符 0。所以解答是 C“abcd”d0不能确定标准答案 :C2、若执行 fopen 函数时发生错误,则函数的返回值是( ) 。 地址值01EOF标准答案 :B3、设有代码“int(*ptr)10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 ptr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着
8、与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 10 个元素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量的指针指向 10 个整型变量的函数指针一个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C4、C 语言程序的基本单位是( ) 。 程序行语句 函数 字符标准答案 :C5、设整型变量 i 的值为 3,则计算表达式 i-i 后表达式的值为
9、( ) 。 试题分析:有些运算符只有一个字符,也有许多运算符由两个字符组成。特别是有些字符既可是单个字符的运算符,又能组成双字符的运算符。编译系统在识别源程序时,通常是尽量多地读八字符,能组成多字符单词的先尽量组成多字符单词。所以表达式 i-i,被编译器理解为(i-)-i.另外,当表达式中某变量有后缀自增和自减运算时,先按变量的原值计算表达式,然后再对变量进行自增和自减运算。同样地,当表达式中某变量有前缀自增和自减运算时,先对变量进行自增和自减运算,然后再按变量的新值计算表达式。按这个约定,求表达式(i-) -i 是计算 i-i 的值为 0,然后再对 i 作自减运算。这样,表达式(i- )-i
10、 的值为 0.所以解答是 A0 l 2 表达式出错标准答案 :A1、在标准 C 中, while 和 do while 的功能完全相同( ) 。 正确错误标准答案 :B2、C 中函数调用时,函数参数求值顺序是从右到左的() 。 正确错误标准答案 :B1、在 C 语言中,下列说法中错误的是( ) 。 试题分析:每个 C 函数的定义分两部分,函数说明部分和函数体,所以叙述 A 是正确的叙述。C 语言中,函数可以递归调用,主函数可以调用程序中的任何函数,当然可以调用任何非主教的其它函数,所以叙述 B 是一个正确的叙述。同样理由,叙述 C 也是正确的。C 语言规,C 程序只有一个主函数,并总是从主函数
11、开始执行,不能从非主函数开始执行。所以,说程可以从任何函数开始执行是错误的。所以解答是 D。函数定义可以分为两个部分:函数说明部分主函数可以调用任何非主函数任何非主函数可以调用其它任何非主函数程序可以从任何函数开始执行标准答案 :D2、设 x 和 y 为 int 型变量,则执行下面的循环后,y 的值为( ) 。 for(yl,xl;y50;y) if(x10)break; if(x2=1) x 5 ;continue ; x -3 ; 试题分析:for 循环语句的初始化部分置变量 x 和 y 的初值为 1,循环条件是(y50) ,每次循环后变量 y 的值增 1,控制循环最多执行 50 次。循环
12、体有三个语句:首先在发现变量 x 的值大于等于 10 时,结束循环;接着是当变量 x 除 2 的余数为 1(即变量 x 是奇数)时,让变量 X 值增 5,让 x 变成偶数,并直接进入下一轮循环;如变量 x 是偶数,则从变量 x 减去 3,让变量 x 变成奇数。由上述分析知,每两次循环使变量 x 的值增加 2.第一次循环后,变量 x 的值变成 6.第二次循环后,变量 x 的值变成 3. 第三次循环后,变量 x 的位变成 8.第四次循环后,变量 x 的值变成 5.第五次循环后,变量 x 的值变成 10.第六次循环时,因变量 x 的位大于等于 10,直接跳出循环,这次循环是非正常结束,对变量 y 的
13、修正只执行了 5 次。所以循环结束后,变量 y 的值增至 6.正确的解答是 C2468标准答案 :C3、若有说明:“ int i,j7,*p scanf(“%d%d”, scanf(“%lf%lf”,scanf(“%lf%lf”,x,y); 标准答案 :A2、设 x、y、z、t 均为 int 型变量,则执行以下语句后, t 的值为() 。xyz1;t+x|+y+z ; 试题分析:语句序列“xy z l ;t +x|+y scanf(“%2d*%d%lf”,scanf(“%x%*d%o”,scanf(“%x%o%6.2f”,标准答案 :D2、设有代码“int a3 ;” ,则执行了语句“a+=a
14、-= a*a;”后,变量 a 的值是( ) 。试题分析:由于赋值运算符的结合性自右至左,语句“a+=a-=a*a;”的执行是先计算 a*a,得到值 9,再计算 a-a*a,使 a 的值为-6 ,接着计算 a+a,使 a 的值为-12.所以解答是 D309-12标准答案 :D3、设有代码“int(*ptr)10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 ptr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 1
15、0 个元素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量的指针指向 10 个整型变量的函数指针一个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C4、fgetc 函数的作用是从指定文件读入一个字符,该文件的打开方式必须是( ) 。 只写追加读或读写B 和 C 都正确标准答案 :C5、函数调用“strcat(strcpy(strl,str2 ) ,str3) ”的功能是( ) 。 试题分析:函
16、数调用 strcat(s1 ,s2)是将 s2 字符串复制连接到 s1 字符串之后,使s1 字符串变得更长。函数调用 strcpy(s1 ,s2)是将 s2 字符串复制到 s1,使 s1 字符串的内容与 s2 字符串的内容相同。函数调用 strcat(strcpy (strl,str2 ) ,str3 ) 是先执行 strcpy(strl,str2) ,然后再执行 strcat(strl,str3) ,所以其功能是将字符串 str2 复制到字符串 strl3 中,然后再将字符串 str3 复制连接到字符串 strl 之后。正确的选择是 C 将字符串 strl 复制到字符串 str2 中后再连接
17、到字符串 str3 之后将字符串 strl 连接到字符串 str2 中后再复制到字符率 str3 之后将字符串 str2 复制到字符串 strl 中后再将字符串 str3 连接到字符串 strl 之后将字符串 str2 连接到字符串 strl 之后再将字符串 strl 复制到字符串 str3 中标准答案 :C1、若 x 是单精度实型变量,表达式(x=10/4)的值是 2.5( ) 。 正确错误标准答案 :B2、在 C 语言中输入数据时可以指定数据的精度() 。 正确错误标准答案 :B1、 C 语言中文件的存取方式是( ) 。 顺序存取随机存取顺序存取、随机存取均可顺序存取、随机存取均不可标准答
18、案 :C2、设有代码“int(*ptr)10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 ptr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 10 个元素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量的指针指向 10 个整型变量的函数指针一
19、个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C3、C 语言程序的基本单位是( ) 。 程序行语句 函数 字符标准答案 :C4、以下不合法的用户标识符是( ) 。 j2_KEY DOUBLE 4D_8_ 标准答案 :C5、设有定义“int a3 ,b,*p( ) 。 正确错误标准答案 :A2、若函数的返回值与 return 表达式类型不一致时,以 return 表达式类型为准() 。 正确错误标准答案 :B1、利用 fread(buffer,size,count,fp)函数可实现的操作是( ) 。 从 fp 指向的文件中,将 count 个字节的数据读取到
20、 buffer 指出的数据区中从 fp 指向的文件中,将 size*count 个字节的数据读取到 buffer 指出的数据区中以二进制形式读取文件中的数据,返回值是实际从文件读取块的个数 count若文件操作出现异常,则返回实际从文件读取数据块的个数标准答案 :C2、设有代码“int(*ptr)10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 ptr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 10 个元
21、素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量的指针指向 10 个整型变量的函数指针一个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C3、设 x 和 y 为 int 型变量,则执行下面的循环后,y 的值为( ) 。 for(yl,xl;y50;y) if(x10)break; if(x2=1) x 5 ;continue ; x -3 ; 试题分析:for 循环语句的初始化部分置变量 x
22、 和 y 的初值为 1,循环条件是(y50) ,每次循环后变量 y 的值增 1,控制循环最多执行 50 次。循环体有三个语句:首先在发现变量 x 的值大于等于 10 时,结束循环;接着是当变量 x 除 2 的余数为 1(即变量 x 是奇数)时,让变量 X 值增 5,让 x 变成偶数,并直接进入下一轮循环;如变量 x 是偶数,则从变量 x 减去 3,让变量 x 变成奇数。由上述分析知,每两次循环使变量 x 的值增加 2.第一次循环后,变量 x 的值变成 6.第二次循环后,变量 x 的值变成 3. 第三次循环后,变量 x 的位变成 8.第四次循环后,变量 x 的值变成 5.第五次循环后,变量 x
23、的值变成 10.第六次循环时,因变量 x 的位大于等于 10,直接跳出循环,这次循环是非正常结束,对变量 y 的修正只执行了 5 次。所以循环结束后,变量 y 的值增至 6.正确的解答是 C2468标准答案 :C4、使用“scanf(”x=%f,y %f“,x, char c6 ; ; printf(“%dn“,sizeof(stru); 24810标准答案 :D3、C 语言中,函数的隐含存储类型是( ) 。 试题分析:由于 C 函数内不能再定义函数,C 函数的存储类型只能是静态的或外部的之一。若定义函数时不指定存储类型是静态的,则它的存储类型就是外部的(extern) ,即函数允许被程序的其
24、它函数调用。所以解答是 Cauto staticextern 无存储类别标准答案 :C4、设有定义“char a10=”abcd“,*p=a ;” ,则*(p4)的值是( ) 。 试题分析:若有 char a10“abcd ”,*pa,则指针变量 p 指向 a0. 在表达式* (p 4)中,p 4 指向 a4,*(p4)就是 a4.由于用字符串“abcd” 给字符数组 a 赋初值,a4的值是字符串结束标记符 0。所以解答是 C“abcd”d0不能确定标准答案 :C5、设 a,b 为字符型变量,执行“scanf(”a%c,b%c“,&a,&b ) ”后使 a 为A,b 为B ,从键盘上的正确输入
25、是() 。 试题分析:函数调用 scanf(“c%c,b%c” ,&c,&b )中,普通字符必须按格式字符串要求照原样输入,c 格式对紧接的任何字符都输入。所以实现问题的要求,输入字符列应为“a A,bB” 。另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。但用字符格式输入字符时,在要输入字符前后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。正确的解答是 DA“BA, B AA,BB a=A, bB标准答案 :D1、在标准 C 语言中,二维数组在内存中的存放次序是以行序为主序( ) 。 正确错误标准答案 :A2、结构体变量在内存中所占的字节数是由其各个成员所占字
26、节的总和( ) 。 正确错误标准答案 :A1、设 a,b 为字符型变量,执行“scanf(”a%c,b%c“,&a,&b ) ”后使 a 为A ,b 为B ,从键盘上的正确输入是() 。 试题分析:函数调用 scanf(“c%c,b%c” ,&c,&b )中,普通字符必须按格式字符串要求照原样输入,c 格式对紧接的任何字符都输入。所以实现问题的要求,输入字符列应为“a A,bB” 。另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。但用字符格式输入字符时,在要输入字符前后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。正确的解答是 DA“BA, B AA,BB a=
27、A, bB标准答案 :D2、设有代码“int(*ptr)10;” ,其中的 ptr 是( ) 。 试题分析:代码“int(*ptr )10 ;”的分析过程是,因圆括号,括号内的 ptr 先与字符*结合,字符 *修饰标识符 ptr 是一种指针;接着与后面的一对方括号结合,表示是这样的一种指针,是指向一维数组的;再有方括号中的 10,说明这种数组有 10 个元素。至此,ptr 是指向含 10 个元素的一维数组的指针。最后,是最前面的 int,表示数组元素是int 类型的。所以,ptr 是一个指向具有 10 个 int 型元素的一维数组的指针。所以解答是C10 个指向整型变量的指针指向 10 个整型
28、变量的函数指针一个指向具有 10 个元素的一维数组的指针具有 10 个指针元素的一维数组标准答案 :C3、C 语言中文件的存取方式是( ) 。 顺序存取随机存取顺序存取、随机存取均可顺序存取、随机存取均不可标准答案 :C4、设 x 和 y 为 int 型变量,则执行下面的循环后,y 的值为( ) 。 for(yl,xl;y50;y) if(x10)break; if(x2=1) x 5 ;continue ; x -3 ; 试题分析:for 循环语句的初始化部分置变量 x 和 y 的初值为 1,循环条件是(y50) ,每次循环后变量 y 的值增 1,控制循环最多执行 50 次。循环体有三个语句
29、:首先在发现变量 x 的值大于等于 10 时,结束循环;接着是当变量 x 除 2 的余数为 1(即变量 x 是奇数)时,让变量 X 值增 5,让 x 变成偶数,并直接进入下一轮循环;如变量 x 是偶数,则从变量 x 减去 3,让变量 x 变成奇数。由上述分析知,每两次循环使变量 x 的值增加 2.第一次循环后,变量 x 的值变成 6.第二次循环后,变量 x 的值变成 3. 第三次循环后,变量 x 的位变成 8.第四次循环后,变量 x 的值变成 5.第五次循环后,变量 x 的值变成 10.第六次循环时,因变量 x 的位大于等于 10,直接跳出循环,这次循环是非正常结束,对变量 y 的修正只执行了
30、 5 次。所以循环结束后,变量 y 的值增至 6.正确的解答是 C2468标准答案 :C5、若有说明语句“int a10,*pa;” ,对数组元素的正确引用是( ) 。 试题分析:在 C 语言中,约定数组名单独出现在表达式中时,它表示数组首元素的指针。有 int a10 ,则 a 可以作为&a0使用。另有整型指针变量 p,代码 pa 实现 p 指向数组 a 的首元素。则表达式* (p 2)是引用数组元素 a2.表达式 ap和 pa都是不正确的,下标必须是整型表达式,不可以是指针表达式。表达式 p2 是指针表达式,它的值是&p2. 所以只有表达式* (p 2 )引用数组 a 的元素 a2.所以解答是 C appa*(p+2) p2标准答案 :C