[G]福建省C语言二级考试(选择+填空+程序填空+输出结果)-学生 下载本文

... →│data│next┼→│data│NULL│ │data│ │ 则可以将指针q所指的结点连接到链表末尾的程序段是( A )。

A. q->next=NULL; p=p->next; p->next=q; B. q->next=p->next; p=p->next; p->next=q; C.p=p->next; q->next=p; p->next=q; D.(*q).next=(*p).next; p=(*p).next; (*p).next=q;

51811若有定义: struct node {int data; struct node *next; }; float link(struct node *head) {int m=0,n=0; struct node *p=head; while(p!=NULL) {m+=p->data; n++; p=p->next; } if(n>0) return 1.0*m/n; else

return 0 } 调用link函数时head是指向链表首结点的指针,整个链表结构如下图: head →│data│next┼→│data│next┼→...─→│data│NULL│ 则函数link()的功能是( B )。

A. 统计链表head中结点的个数 B. 遍历链表head, 计算表中各结点成员data的平均值 C.遍历链表head,计算表中各结点成员data的总和 D.创建一个新链表head

51812若有以下定义: struct node {int data; struct node *next; } *p,*q,*t; 指针p、t和q分别指向图中所示结点:

p↓ t↓ q↓

│data│next┼→│data│next┼→│data│next┼→... 现要将t和q所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是( C ) A. t->next=q->next;p->next=q;q->next=t; B. p->next=q;t->next=q->next;q->next=t; C.q->next=t;t->next=q->next;p->next=q; D.t->next=q->next;q->next=t;p->next=q; 51813下列程序段运行后,表达式( B )的值为3。 struct point { int x; int y; } *p; struct point a[3]={1,2,3,4,5,6}; p=a; A. *(p+2) B. p[1].x C.p[2].x D.p[3].x

51814若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; , 则( D )表达式是错误的。 A. a[2] B. p++ C.p[2] D.a++

51815下列程序段运行后,( C )对数组a元素的引用是错误的。(其中0≤i<4,0≤j<3) int i,j,(*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p = a; A. *(*(a+i)+j) B. p[i][j] C.*(*(p+i)[j]) D.*(p[i]+j)

51816若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( A )对数组a元素的引用是正确的。

A. *(p[2]+3) B. **(p+4) C.*(p[4]) D.(**p)[2] 51817( B )能正确定义一个指向函数的指针。

A. int *p() B. int (*p)() C.(int *)p() D.int (*p()) 51818以下程序的运行结果是( A )。 main()

{ int a[3]={1,2,3}; int *num[3]; int **p,i;

for(i=0;i<3;i++) num[i]=&a[i]; p=num;

printf(\ }

A. 1 B. 3 C.&a[0] D.num

51900以下程序中的循环执行了( C )次。 #define N 2 #define M N+1

#define NUM (M+1)*M/2 main()

{ int i,n=0;

for(i=0;i

A. 5 B. 6 C. 8 D. 9

51901错误的枚举类型定义语句是( B )。 A. enum car {A, B, C}; B. enum car {1, 2, 3};

C.enum car {X=0, Y=5, Z=9}; D.enum car {D=3, E, F};

51902假定已有如下定义: int k ;

enum colors {red, green, blue, pink} ;

int a[3]; ( B )是对以下语句是否符合语法规则的正确判断。 a[red]=pink; /* 语句1 */ red=1; /* 语句2 */ k=green+blue; /* 语句3 */

A. 语句1和语句2正确,语句3错误 B. 语句1和语句3正确,语句2错误 C. 语句2和语句3正确,语句1错误 D. 语句1正确,语句2和语句3错误 51904在对无符号数的位运算中,操作数左移三位相当于( D )。

A. 操作数除以6 B. 操作数乘以6 C.操作数除以8 D.操作数乘以8 51905以下程序段运行后变量k的值为( D )。 int m=7,n=2,k; k=(m^n)<<1; A. 0 B. 98 C.20 D.10

51906若有定义:int m=7,n=10,k; 则执行语句k=m&n;后k的值为( A )。 A. 2 B. 1 C.17 D.15

51907以下程序的输出结果为( B )。

#include void main() {enum Weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; enum Weekday day=wed; printf(\ } A. 2 B. 3 C.4 D.5

51908若按如下类型说明,则( B )是错误的叙述。

typedef struct {int no; char *name; int cj; }S,*p; A. S是一个结构体类型名 B. p是一个结构体类型名

C.p是指向结构体类型S的指针类型名 D.no是结构体类型S的成员

51909下面程序段的运行结果是( A )。 int p=7,q=4; printf(\ A. 4 B. 5 C.6 D.7

51910若有以下类型说明,则叙述错误的是( C )。

typedef union {char name[10]; int age; }ustu,*umy;

A. umy是指向共用体类型ustu的指针类型名 B. ustu是一个共用体类型名 C.umy是一个共用体类型名 D.age是共用体类型ustu的成员 51911定义枚举类型的关键字是( C )。 A. typedef B. include C.enum D.fnum 51912下面程序段的运行结果是( B )。 main()

{int a=5,b=3;

printf(\ } A. 0 B. 1 C.2 D.3

51913( A )对枚举类型的定义是错误的。

A. enum b{1, 2, 3}; B. enum a{A, B, C}; C.enum c{D=3, E, F}; D.enum d{X=0, Y=5, Z=9}; 51914若有定义:enum day{sun,mon, tue, wed, thu, fri, sat} ; ,则枚举常量sun、mon的值分别为(A )。

A. 0 1 B. 7 1 C. 1 2 D. 7 0

51915若有定义: typedef int * INTEGER; INTEGER p; 则下面叙述正确的是( C )。 A. p是与INTERGE相同的类型 B. p是一个整形变量

C.程序中可用INTEGER定义int类型指针变量 D.程序中可用INTEGER定义int类型变量 51918若有定义:enum num{a1,a2=3,a3,a4=10} ; ,则枚举常量a2、a3的值分别为( D )。 A. 1 2 B. 2 3 C. 3 3 D. 3 4

52000以下程序的功能是( C )。 #include main()

{ FILE *fp; long int n;

fp=fopen(\ fseek(fp,0,SEEK_END); n=ftell(fp); fclose(fp);

printf(\ }

A. 计算文件wj.txt的起始地址 B. 计算文件wj.txt的终止地址 C.计算文件wj.txt的长度 D.将文件指针定位到文件末尾

52002文本文件quiz.txt的内容为\不包含引号),以下程序段的运行结果是( B )。 FILE *fp; char *str;

if((fp=fopen(\ str=fgets(str,7,fp); printf(\

A. Progr B. Progra C.Program D.Programming 52004下面程序的运行结果是( B )。 #include main()

{ FILE *fp;

int a=2,b=4,c=6,k,n;

fp=fopen(\ fprintf(fp,\

fprintf(fp,\ %d\\n\ fclose(fp);

fp=fopen(\

fscanf(fp,\ printf(\ %d\\n\ fclose(fp); }

A. 2 4 B. 2 6 C. 4 2 D. 6 2

52005对于以下程序,说法正确的是( B )。 #include main()

{ FILE *fp;

fp=fopen(\ if(fp!=NULL)

{ fprintf(fp,\ fclose(fp);

printf(\ } }

A. 程序运行后,当前工作目录下存在quiz.txt文件,其中的内容是\ B. 程序运行后,当前工作目录下存在quiz.txt文件,其中的内容是\C.程序运行之前,当前工作目录下一定不存在quiz.txt文件 D.程序运行之前,当前工作目录下一定存在quiz.txt文件 52006以下程序运行后,文件test.txt的内容是( B )。 #include main()

{ FILE *fp;

char str[][10]={\ fp = fopen(\ if(fp!=NULL)

fprintf(fp,\ fclose(fp);

fp = fopen(\ if(fp!=NULL)

fprintf(fp,\ fclose(fp); }

A. first B. second C.first second D.second first