一、 单项选择题(共40分,每小题2分)

一、 单项选择题(共40分,每小题2分)
1.声明语句为“char a[10]”,执行printf(“%d,%dn”,sizeof(a),strlen(strcpy(a,“Windows”)));语句后的输出结果为( ).
A.7,7 B.7,8 C.10,7 D.10,8
2.以“只读”方式打开文本文件c:xy.text,下列语句中哪一个是正确的( ).
A.fp=fopen(“c:\xy.txt”,“a”); B.fp=fopen(“c:\xy.txt”,“r”);
C.fp=fopen(“c:\xy.txt”,“wb”) D.fp=fopen(“c:xy.txt”,“r”);
3.要为字符型变量a赋初值,下列语句中哪一个是正确的( ).
A.char a='3'; B.char a=“3” C.char a=%; D.char a=*;
4.常量字符串”This is Sunday!”,通过strlen函数求其长度,结果为( ).
A.14 B.15 C.16 D.17
5.若定义数组char a[10],char *p=a,则下面变量中,表示地址的是( ).
A.a+4 B.*p C.&a D.&p
6.在下面定义中,是指针数组的为( ).
A.int *p[8] B.int (*p)[8] C.int (*p)(8) D.int *p(8)
7.在C语言中可以用( )来定义一个新的变量类型.
A.#define B.#include C.typedef D.struct
8.下面函数中不是关于文件操作的是( ).
A.fopen B.fclose C.fseek D.format
9.结构型变量占用内存的字节数是( ).
A.各成员占用内存字节数之和
B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数
D.最后一个成员占用的内存字节数
10.设 struct st
{ int i;
int j;} *p;
main ( )
{
struct st m[ ]={{10,1},{20,2},{30,3}};
p=m;
printf (〃%dn〃,(*++p).j);
}
则程序的输出结果是( ).
A.1 B.2 C.3 D.10
11.若p是一个字符指针,则&*p为( ).
A.地址 B.字符 C.字符串 D.NULL.
12.如果有二维数组a[8][6],则可以使用地址方式来表示第i行第j列的元素的是( ).
A.a[i][j] B.*(*(a+i)+j) C.*(*(a+j)+i) D.*a[i][j]
13.在说明语句:int *f();中,标识符f代表的是( ).
A.一个用于指向整型数据的指针变量
B.一个用于指向一维数组的行指针
C.一个用于指向函数的指针变量
D.一个返回值为指针型的函数名
14.如果定义结构体
struct student {
int id;
char name[8];
} *s1;
则如果要表示其成员变量,可以用( ).
A.s1.name B.s1->name C.s1[name] D.s1=name
15.若有以下的定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a,则值为3的表达式是( ).
A.p+=2,*(p++) B.p+=2,*++p C.p+=3,*p++ D.p+=2,++*p
16.在定义了数组int a[5][6];后,第10个元素是( ).
A.a[2][5] B.a[2][4] C.a[1][3] D.a[4][2]
17.现有语句:int a[10],*p=a;,则下列表达式中不能表示数组第i个元素的是( ).
A.a[i] B.*(a+i) C.*(p+i) D.*p+i
18.现有语句char chName[10]={“Wang”};,则语句sizeof(chName)的结果为( ).
A.3; B.4 C.10 D.9
19.设结构体S定义为:struct S{ short g; char h; double *pf;};,则该结构体共占用( )个字节(短整型变量占2个字节).
A.11 B.7 C.8 D.14
20.表示链表结构结束的标识符是( ).
A.NULL B.EOF C.BOF D./0
pzhjcqx 1年前 已收到1个回答 举报

violin 幼苗

共回答了16个问题采纳率:87.5% 举报

1.C(sizeof取的是真个数组长度,strlen取的则是字符串长度)
2.B(反斜杠“”本身有转义符的概念,当需要使用时,需要先转义,所以写成“\”.而只读方式为“r”,“a”为附加,“wb”为二进制写入)
3.A(字符要用单引号引用,双引号是字符串,区别在于字符串最后有一个空字符作为结束,而字符没有)
4.B(就是字符串长度,算中间的空格,但不算最后那个看不见的结束符)
5.A(a是数组,p是指针,两者概念相似,本身就是地址,星号“*”表示取内容,而和号“&”则表示取地址,但前面已经说了a和p本身就是地址,所以什么都不用取,则a+4很显然是地址)
6.A(没啥好说的,就这么规定的)
7.C(同上)
8.D(format是字符串的格式化输出操作,与文件操作无关)
9.C(字节对齐的问题,印象里应该是最大成员的字节数)
10.B(p为m的首地址,++p后取第二组数据的首地址,*取值后为第二组数据中的第一个数据位置,.j为取j位置上的数据,结果为2)
11.A(上面已经说了,指针本身就是地址,&和*两个符号取地址再取内容,等于抵消,所以还是地址)
12.B(a+i确定行,之后去内容,再+j确定列,再取内容,即可)
13.D(int为返回值类型,*表示返回值为指针,后面的括号表示这是一个函数)
14.B(s1是一个指针,指针结构体的成员用“->”引用,而非指针结构体的成员用“.”引用)
15.A(先自加2,再++运算,最后取内容)
16.C(扳着手指头算都可以)
17.D(*p+i表示数组的第一个元素的值加上i)
18.C(sizeof是数组的大小,与里面的值无关)
19.C(short占用2字节,char占用1字节,double看起来是8字节,但其实double是个指针,指针都是4字节,不看类型.如此相加看起来应该是7个字节,但其中有个字节对齐的问题,所以char后面要空出来一个字节作为对齐,最终结果是8个字节)
20.A(NULL为结束符,EOF应该是结束函数用的,BOF不清楚,/0啥都不是,NULL可以表示为"",注意斜杠方向)

1年前

7
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.132 s. - webmaster@yulucn.com