4.下面程序的运行结果是(D) main()struct cmplx{int x;int y;}cnum[2]={1,3,2,7};printf(“%d\\n”,cnum[0].y/cnum[0].x*cunm[1].x);} A.0 B.1 C.3 D.6 5.若有以下定义和语句:
struct student{int age;int num;}y;struct student stu[3]={{1001,20},{1002,19},{1003,21}};main(){struct student *p;p=stu;...} 则以下不正确的引用是(D) A.(p++)—>num B.p++
C.(*p).num D.p=&stu.age
6.以下scanf函数调用语句中对结构体变量成员的不正确引用是(D) struct pupil{char name [20];int age;int sex;}pup[5],*p;p=pup; A.scanf(“%s”,pup[0].name); B.scanf(“%d”,&pup[0].age); C.scanf(“%d”,&(p—>sex)); D.scanf(“%d”,p—>sex); 7.若有以下说明和语句:
struct student{int age;int num;}std,*p;p=&std;则以下结构体变量std中成员age的引用方式不正确的是(D)
A.std.age B.p—>age C.(* p).age D.* p.age 8.设有如下定义:
struct sk{int a;float b;}date;int *p;若要使p指向date中的a域,正确的赋值语句是(C) A.p=&a B.p=date.a C.p=&date.a D.*p=date.a 9.下列程序的输出结果是(C)
#include
struct st{int x;int *y;}*pt;int a[]={1,2},b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是(C)
A.*pt—>y B.pt—>x C.++pt—>x D.(pt++)—>x
11.已知学生记录描述为:struct student{int no;char name [20];char sex;struct{int year;int month;int day;}brith;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是(D)。 A.year=1984;month=11;day=11;
B.brith.year=1984;brith.month=11;brith.day=11; C.s.year=1984;s.month=11;s.day=11;
D.s.brith.year=1984;s.brith.month=11;s.brith.day=11; 12.有如下定义和语句:
struct student{int age;int num;};struct student stu[3]={{1001,20},{1002,19},{1003,21}};main(){struct student *p;p=stu;...} 则以下不正确的引用是(D) A.(p++)—>num B.p++
C.(*p).num D.p=&stu.age 13.有以下结构体定义:
struct example{int x;int y;}v1;则正确的引用或定义是(D)
A.example.x=10 B.example v2;v2.x=10.;
C.struct v2;v2.x=10; D.struct example v2={10};
14.对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是(C) struct date{int year,month,day;};struct worklist{char name[20];char sex;struct date brith;}person; A.year=1976 B.brith.year=1976
C.person.brith.year=1976 D.person.year=1976
15.根据下述定义,可以输出字符‘A’的语句是(A)
struct person{char name[11];struct{char name[11];int age;}other[10];};struct person man[10]={{“Jone”,{“Paul”,20}},{“Paul”,{“Mary”,18}},{“Mary”,{“Adam”,23}},{“Adam”,{“Jone”,22}}};
A.printf(“%c”,man[2].other[0].name[0]); B.printf(“%c”,other[0].name[0]); C.printf(“%c”,man[2].(* other[0])); D.printf(“%c”,man[3].name);
16.若要利用下面的程序片段是指针变量p指向一个存储整型变量的存储单元,阿尔【】中应填入的内容是(D)
int *p;p=【】malloc(sizof(int));
A.int B.int * C.(* int) D.(int *) 17.设有以下语句:
struct st{int n;struct st *next;};static struct st a[3]={5,&a[1],7&a[2],9,‘\\0’},*p;p=&a[0];则以下表达式的值为6的是(D)
A.p++->n B.p->n++ C.(*p).n++ D.++p->n 18.若有以下定义:
struct link{int date;strucklink*next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是(D)
A.a.next=c;c.next=b; B.p.next=q;q.next=p.next;
C.p->next=&c;q->next=p->next; D.(*p).next=&c;(*q).next=&b; 19.当说明一个共用体变量时,系统分配给它的内存是(C) A.各成员所需内存量的总和 B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量 D.结构中最后一个成员所需内存量 20.以下关于typedef叙述不正确的是(B)
A.用typedef可以定义各种类型名,但不能定义变量 B.用typedef可以增加新的类型
C.用typedef只是将已经存在的类型用一个新的名字来代表 D.使用typedef便于程序的通用 21.若有以下定义和语句:
union date{int i;char c;float f;}a;int n;则以下语句正确的是(C) A.a=5 B.a={2,‘a’,1.2}; C.printf(“%d\\n”,a.i); D.n=a; 22.程序执行的结果是什么?
#include
A.枚举变量只能取对应枚举类型的枚举元素表中的元素 B.可以定义枚举类型时对枚举元素进行初始化 C.枚举元素表中的元素有先后次序,可以比较 D.枚举元素的值可以是整数或者字符串 24.以下对枚举类型名的定义正确的是(B) A.enum a={one,two,three}; B.enum a {one=1,teo=-1,three}
C.enum a={“one”,“two”,“three”}; D.enum a{“one”,“two”,“three”}; 25.下面程序的输出是(C)。 #include
team{my,your=4,his,her=hia+10};printf(“%d%d%d%d\\n”,my,your,his,her);} A.0123 B.04010 C.04515 D.1 4 5 15 26.以下叙述中不正确的是(C)
A.表达式a&=b等价于a=a&b B.表达式a|=b等价于a=a|b C.表达式a!=b等价于a=a!b D.表达式a^=b等价于a=a^b 27.表达式0x13 & 0x17的值是(B) A.0x17 B.0x13 C.0xf8 D.0xec
28.在执行完以下C语句后,B的值是(B) char=‘A’;int b;b=((241&15)&&(z|‘a’)); A.0 B.1 C.TRUE D.FALSE 29.表达式0x13 | 0x17的值是(B) A.0x13 B.0x17 C.0xE8 D.0xc8
30.在位运算中,操作数每右移一位,其结果相当于(B)
A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4
第八章 文件的输入输出 一、选择题
1.系统的标准输入文件是指(A)
A.键盘 B.显示器 C.软盘 D.硬盘 2.以下叙述错误的是(C)
A.C语言中对二进制文件的访问速度比文本文件快 B.C语言中,随机文件一二进制代码形式存储数据 C.语句FILE fp;定义了一个名为fp的文件指针 D.C语言中的文本文件一ASCII码形式存储数据
3.若执行fopen函数时发生错误,则函数的返回值是(B) A.地址值 B.0 C.1 D. EOF
4.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是(B)
A.“ab+” B.“wb+” C.“rb+” D.“ab” 5.fscanf函数的正确调用形式是(D) A.fscanf(fp,格式字符串,输出表列); B.fscanf(格式字符串。输出表列,fp);
C.fscanf(格式字符串,文件指针,输出表列);
D.fscanf(文件指针,格式字符串,输入表列);
6.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是(C) A.只写 B.追加 C.读或读写 D.答案B和C都正确 7.函数调用语句:fseek(fp,-20L,2);的含义是(C) A.将文件位置指针移到距离文件头20个字节处 B.将文件位置指针从当前位置向后移动20个字节 C.将文件位置指针从文件末尾后退20个字节 D.将文件位置指针移到离当前位置20个字节处
8.以下可作为函数fopen中第一个参数的正确格式是(D)。 A.c:user\\text.txt B.c:\%user\\text.txt
C.“c:user\\text.txt” D.“c:\%user\\text.txt”
9.若以“a+”方式打开一个已存在的文件,则以下叙述正确的是()
A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C.文件打开时,原有文件内容被删除,只可作操作 D.以上各种说法都不正确
10.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是(C)。 A.一个整型变量,代表要读入的数据项总数 B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址 D.一个存储区,存放要读的数据项 12.fwrite函数的一般调用形式是(D) A.fwrite(buffer,count,size,fp); B.fwrite(fp,size,count,buffer); C.fwrite(fp,count,size,buffer); D.fwrite(buffer,size,count,fp);
13.若调用fputc函数输出字符成功,则其返回值是(D) A.EOF B.1 C.0 D.输出的字符 14.设有以下结构体类型:
struct st{char name[8];int num;floats[4];}student[50];并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,以下不正确的形式是(C) A.fwrite(student,size,(struct st),50,fp); B.fweite(student,50*sizef(struct st),1,fp); C.ferite(student,25*sizef(struct st),25,fp);
D.for(i=0;i<50;i++)fwrite(student+i,sizeof(struct st),1,fp);
15.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是(D) A.feof(fp) B.ftell(fp) C.fgtc(fp) D.rewind(fp) 16.以下程序的输出结果是(D) #include
17.在C程序中,可把整型数以二进制形式存放到文件中函数是(A) A.fprintf函数 B.fread函数 C.fwrite函数 D.fputc函数
18.若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是(C) A.EOF B.0 C.非零值 D.NULL
19.若要打开A盘上的user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(B) A.fopen(“A:\%user\\abc.txt”,“r”) B.fopen (“A:\%user\\abc.txt”,“r+”) C.fopen(“A:\%user\\abc.txt”,“rb”) D.fopen(“A:\%user\\abc.txt”,“w”)
20.下述关于C语言文件操作的结论中,正确是(B) A.对文件操作必须先关闭文件 B.对文件操作必须先打开文件 C.对文件操作完毕不需关闭文件
D.对文件操作必须先测试文件是否存在 21.C语言中可以处理的文件类型是(C)
A.文本文件和数据文件 B.二进制文件和数据文件 C.文本文件和二进制文件 D.数据代码文件
22.在执行fopen函数时,ferror函数的初值是(A) A.0 B.-1 C.1 D.TRUE
23.若fp为文件指针,且文件已正确打开,以下语句的输出结果为(B) fseek(fp,0,SEEK_END);i=ftell(fp);printf(“i=%d”,i); A.fp所指文件的记录的长度
B.fp所指文件的当前位置,以字节为单位 C.fp所指文件的当前位置,以字为单位 D.fp所指文件的当前位置,以字为单位 24.以下程序的输出结果是(B)
#include