C语言程序设计基础(石河子大学)智慧树知到章节测试答案
知更鸟Skill
2024年12月26日 21:38
收录于文集
共243篇

word文档:

https://pan.quark.cn/s/4592723e5a0b

C语言程序设计基础(石河子大学)智慧树知到章节测试答案

第一章测试

1、下列对C语言特点的描述中,错误的是( )。

A、C语言不是结构化程序设计语言

B、C语言编程简洁明了

C、C语言功能较强

D、C语言移植性好

我的答案:A

2、下列关于C语言程序在结构上特点的描述中,错误的是( )。

A、C语言程序是一个函数串

B、C语言程序可以由一个或多个文件组成

C、C语言程序的诸多函数中,只能有一个主函数

D、C语言程序被执行时,通常是从第1个函数开始

我的答案:D

3、在scanf()函数的格式说明符中,长整型数的输入格式说明符是( )。

A、%d

B、%lf

C、%ld

D、%x

我的答案:C

4、在printf()函数的格式说明符中,双精度浮点型数的输出格式说明符是( )。

A、%ld

B、%lf

C、%c

D、%s

我的答案:B

5、下列不是C语言特点的是?

A、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

B、语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。

C、不同的变量类型可以用结构体(struct)组合在一起。

D、只有64个保留字(reserved keywords),使变量、函数命名有更多弹性。

我的答案:D

6、几乎没有不能用C语言实现的软件?

我的答案:X

7、C编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等?

我的答案:√

8、Dev C++是一个开源的编程软件吗?

我的答案:√

9、编程环境包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程对吗?

我的答案:√

10、任何程序都有主函数吗?

我的答案:√

第二章测试

1、若i=3,j=i++;执行运算后i和j的值为?

A、i=4,j=3

B、i=3,j=4

C、i=3,j=3

D、i=4,j=4

我的答案:A

2、下列函数在屏幕上输出的结果是? # include <stdio.h> int main(void ) { printf("学号 姓名 班级\n"); return 0; }

A、学号 姓名 班级

B、学号班级姓名

C、"学号 姓名 班级"

D、"学号 姓名 班级\n"

我的答案:A

3、下列函数在屏幕上输出的结果是? # include <stdio.h> int main(void ) { printf("****\n***\n**\n*\n"); return 0; }

A、"****\n***\n**\n*\n"

B、****\n***\n**\n*\n

C、**** \*** ** *

D、**** *** ** *

我的答案:D

4、关于关系运算,下列说法正确的是?

A、关系表达式的值是一个逻辑值,即“真”或“假”。

B、关系表达式“a>b”的值为“真”,表达式的值为0。

C、>=和==的优先级相同。

D、关系运算符的优先级低于赋值运算符

我的答案:A

5、下列运算符,优先级最高的是?

A、||

B、&&

C、!

D、>

我的答案:B

6、关于if-else 语句,下列说法错误的是?

A、当if和else数目不同时,可以加花括号来确定配对关系。

B、if语句后面只能加逻辑表达式。

C、else总是与它上面的,最近的,同一复合语句中的,未配 对的if语句配对。

D、在if语句中可嵌套一个或多个if语句。

我的答案:B

7、关于scanf()函数,说法正确的是?

A、A. scanf()函数中的“格式控制”后面应当是变量名。

B、scanf()函数中“u”是用来输入无符号的十进制整数的格式字符。

C、scanf()函数中“d”是用来输入无符号的十进制整数的格式字符。

D、scanf()函数中“u”是用来输入有符号的十进制整数的格式字符。

我的答案:B

8、语句for(i=1;i<=100;i++) sum=sum+i; 的功能是?

A、1~100最大的数的值。

B、1~100以内所有整数的和

C、1~100以内所有奇数的和

D、1~100以内所有偶数的和

我的答案:B

9、关于函数,下列说法正确的是?

A、一个C程序只能由一个函数构成。

B、同一个函数可以被一个或多个函数调用任意多次。

C、函数可以嵌套定义

D、main函数和其他函数一样,可以互相调用。

我的答案:B

10、关于函数的类型,下列说法正确的是?

A、标准函数,即库函数。这是由用户自己定义的。

B、在调用无参函数时,主调函数向被调用函数传递数据。

C、用户可以自己定义函数。

D、在调用被调用函数时,主调函数不向被调用函数传递数据。

我的答案:C

第三章测试

1、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。

我的答案:√

2、下列是输出显示字符'a'的八进制ASCII码的语句,正确的是( )。

A、printf("%c\n", 'a');

B、printf("%d\n", 'a');

C、printf("%s\n", 'a');

D、printf("%o\n", 'a');

我的答案:D

3、C语言中合法的字符常量是 。

A、n

B、'\n'

C、110

D、"n"

我的答案:B

4、表达式1/5+3%4+4.5/5的值是 。

A、3.9

B、3.900000

C、1.100000

D、1.85

我的答案:B

5、有以下程序: main( ) {int m; m=10; printf("%d\n",(--m*3/5)); } 程序运行后的输出结果是 。

A、6

B、5

C、4

D、7

我的答案:B

6、表达式(int)(1/3+.5*3+5%3) 的计算结果为 。

A、3

B、2

C、1

D、7

我的答案:A

7、下列不正确的转义字符是 。

A、\\

B、\'

C、074

D、\0

我的答案:√

8、无符号基本整型的数据类型符为 ,双精度实型数据类型符为 ,字符型数据类型符为 。

A、unsigned int double char

B、double char unsigned int

C、char unsigned int double

D、chara unsignedint double

我的答案:A

9、printf("%c,%d",'a', 'a');的输出结果是 。

A、a,97

B、a 97

C、97,a

D、97 a

我的答案:A

10、下列格式符中,哪一个可以用于以八进制形式输出整数 。

A、%d

B、%8d

C、%o

D、%ld

我的答案:C

第四章测试

1、以下运算符中,优先级最高的运算符是( ).

A、*=

B、>=

C、(类型)

D、+

我的答案:C

2、执行下列程序段后,m的值是( ). int w=2,x=3,y=4,z=5,m; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;

A、4

B、3

C、5

D、2

我的答案:D

3、对下述程序,( )是正确的判断. #include<stdio.h> void main() {int x,y; scanf("%d,%d",&x,&y); if(x>y) x=y;y=x; else x++;y++; printf("%d,%d",x,y);}

A、语法错误,不能通过编译

B、输入数据3和4,则输入4和5

C、输入数据4和3,则输入3和4

D、输入数据4和3,则输出4和4

我的答案:A

4、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( ). #include <stdio.h> void main( ) { int x; scanf(" %d ", &x); if(x++>5) printf(" %d",x); else printf(" %d\n", x--); }

A、7和5

B、6和3

C、7和4

D、6和4

我的答案:A

5、执行下列语句后的输出为( ). int j=-1; if(j<=1) printf("****\n"); else printf("%%%%\n");

A、****

B、%%%%

C、%%%%c

D、有错,执行不正确

我的答案:A

6、为了避免在嵌套的条件语句if···else中产生二义性,C语言规定:else子句总是与( )配对.

A、缩排位置相同的if

B、其之前最近的if

C、其之后最近的if

D、同一行上的if

我的答案:B

7、C语言的switch语句中case后( ).

A、只能为常量

B、只能为常量或常量表达式

C、可为常量或表达式或有确定值的变量及表达式

D、可为任何量或表达式

我的答案:B

8、void main() { int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d",a,b); } 该程序的输出结果是( ).

A、2,1

B、1,1

C、1,0

D、2,2

我的答案:A

9、有以下程序 main() { int a =5,b =4,c= 3,d= 2; if (a> b> c) printf(" %d\n",d); else if ((c-1> = d) = = 1) printf(" %d\n",d+ 1); else printf(" %d\n",d + 2);} 执行后输出结果是( ).

A、2

B、3

C、4

D、编译时有错,无结果

我的答案:B

10、当a=1、b=2、c=5、d=5时,执行下面的程序后,x的值是( ). if(a<b) if(c<d)x=1; else if(a<c) if(b<d)x=2; else x=3; else x=6; else x=7;

A、1

B、2

C、3

D、6

我的答案:B

第五章测试

1、对于while(!E) s;,若要执行循环体语句s,则E的数值应为 。

A、E等于1

B、E不等于0

C、E不等于1

D、E等于0

我的答案:D

2、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include <stdio.h> main() { int n,sum=0; n=2345; do{ sum=sum+ ; n=n/10; }while(n); printf(“sum=%d”,sum); }

A、n%10

B、(n%10)*(n%10)

C、n/10

D、(n/10)*(n/10)

我的答案:B

3、对以下程序段,循环体执行的次数是 。 int k=0; while(k=1) k++;

A、有语法错误,不能执行

B、一次也不执行

C、执行一次

D、无数次

我的答案:D

4、下面程序段的执行结果是( )。 a=1;b=2;c=2; while(a<b<c ) {t=a;a=b;b=t;c--;} printf(“%d,%d,%d”,a,b,c);

A、1,2,0

B、2,1,0

C、1,2,1

D、2,1,1

我的答案:A

5、下列叙述中正确的是( )。

A、do-while语句构成的循环不能用其他语句构成的循环来代替

B、do-while语句构成的循环只能用break语句退出

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环

D、用do-while语句构成的循环,在while后的表达式为零时结束循环

我的答案:D

6、执行int x=-1;do {x=x*x;} while(x==0);循环时,下列说法正确的是( )。

A、循环体将执行一次

B、循环体将执行两次

C、循环体将执行无限次

D、系统将提示有语法错误

我的答案:A

7、以下程序段的输出结果是( )。 int main() {int num=0,s=0; while(num<=2) { num++; s+=num; } printf("%d\n",s); } A)10 B)6 C)3 D)1

A、10

B、6

C、3

D、1

我的答案:B

8、若S=0,执行循环语句“for(i=1;i<=10;i=i+3) s=s+i;”后,i的值为( )。

A、12

B、10

C、11

D、13

我的答案:D

9、与下面程序段等价的是 。 for(n=100;n<=200;n++) { if(n%3==0) continue; printf(“%4d”,n); }

A、for(n=100;(n%3)&&n<=200;n++) printf(“%4d”,n);

B、for(n=100;(n%3)||n<=200;n++) printf(“%4d”,n);

C、for(n=100;n<=200;n++) if(n%3!=0) printf(“%4d”,n);

D、for(n=100;n<=200;n++) { if(n%3) printf(“%4d”,n); else continue; break; }

我的答案:C

10、下面程序段 。 for(t=1;t<=100;t++) { scanf(“%d”,&x); if(x<0) break; printf(“%3d”,t); }

A、当x<0时整个循环结束

B、x>=0时什么也不输出

C、printf函数永远也不执行

D、循环一次也不会被执行

我的答案:A

第六章测试

1、以下正确的函数形式是 。

A、double fun(int x,int y) { z=x+y; return z; }

B、double fun(int x,y) { int z; return z; }

C、double fun(x,y) { int x,y; double z; z=x+y; return z; }

D、double fun(int x,int y) { double z; z=x+y; return z; }

我的答案:D

2、若调用一个函数,且此函数中没有return语句,则正确的说法是 。

A、该函数没有返回值

B、该函数返回若干个系统默认值

C、该函数能返回一个用户所希望的函数值

D、该函数返回一个不确定的值

我的答案:A

3、以下正确的说法是 。

A、实参和与其对应的形参各占用独立的存储单元

B、实参和与其对应的形参共占用一个存储单元

C、只有当实参和与其对应的形参同名时才共占用存储单元

D、形参是虚拟的,不占用存储单元

我的答案:A

4、下面函数调用语句含有实参的个数为 。 func((exp1,exp2),(exp3,exp4,exp5));

A、1

B、2

C、4

D、5

我的答案:B

5、若使用一维数组名作函数实参,则以下正确的说法是 。

A、必须在主调函数中说明此数组的大小

B、实参数组类型与形参数组类型可以不匹配

C、在被调函数中,不需要考虑形参数组的大小

D、实参数组名与形参数组名必须一致

我的答案:A

6、凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 。

A、自动(auto)

B、静态(static)

C、外部(extern)

D、寄存器(register)

我的答案:A

7、执行下列程序: #define M(x,y) (x*y) i=3; i=M(i,i+1)-8; 变量i的值应为 。

A、2

B、3

C、4

D、5

我的答案:A

8、执行下列程序,正确的输出是 。 int x=3,y=5; void swap() { int a; a=x; x=y; y=a; } int main() { int x=5,y=7; swap(); printf(“%d,%d\n”,x,y); return 0; }

A、3,5

B、5,3

C、5,7

D、7,5

我的答案:C

9、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。 sub(int k,int n) { int a1,a2; a2= ; a1=k-a2*10; if((k%3==0&&a2==5)||(k%3==0&&a1==5)) { printf(“%d”,k); n++; return n; } else return -1; } int main() { int n=0,k,m; for(k=10;k<=99;k++) { m=sub(k,n); if(m!=-1) n=m; } printf(“\nn=%d”,n); return 0; }

A、k*10

B、k%10

C、k/10

D、k*10%10

我的答案:C

10、有以下程序: #include <stdio.h> int fun(int x) { int p; if(x==0 || x==1) return 3; p=x-fun(x-2); return p; } int main() { printf(“%d\n”,fun(9)); return 0; } 正确的输出是 。

A、9

B、7

C、5

D、4

我的答案:B

第七章测试

1、下列数组定义语句中,正确的是( )。

A、int a[][]={1,2,3,4,5,6};

B、char a[2]「3]='a','b';

C、int a[][3]= {1,2,3,4,5,6};

D、static int a[][]={{1,2,3},{4,5,6}};

我的答案:C

2、设有下列数据定义语句,则数组元素x[i]的值是( )。 int i= 3,x[4]={1,2,3};

A、0

B、1

C、2

D、3

我的答案:A

3、运行下列程序的输出结果是( ) main() { int a[]={1,2,3,4,5},i; for(i=1;i<5;i++) printf("%d",a[i]-a[i-1]); }

A、11111

B、1111

C、111

D、222

我的答案:A

4、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( ).

A、2

B、3

C、4

D、无确定值

我的答案:B

5、程序运行后的输出结果是( )。 #include <stdio.h> #​include <string.h> main() { char a[10]=”abcd”; printf(“%d,%d\n”,strlen(a),sizeof(a)); }

A、7,4

B、10,10

C、8,8

D、4,10

我的答案:D

6、程序运行后的输出结果是( )。 #include <stdio.h> main() { int b[3][3]={0,1,2,0,1,2,0,1,2}; int i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t+=b[i][b[j][i]]; printf("%d\n",t); }

A、1

B、3

C、4

D、9

我的答案:C

7、下面是对s的初始化,其中不正确的是 。

A、char s[5]={“abc”};

B、char s[5]={‘a’,‘b’,‘c’};

C、char s[5]=“”;

D、char s[5]=“abcdef”;

我的答案:D

8、下面程序段的运行结果是 。 char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’}; printf(“%s”,c);

A、‘a’‘b’

B、ab

C、cab

D、ab c

我的答案:B

9、对两个数组a和b进行如下初始化 char a[]=“ABCDEF”; char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’}; 则以下叙述正确的是 。

A、a与b数组完全相同

B、a与b长度相同

C、a和b中都存放字符串

D、a数组比b数组长度长

我的答案:D

10、有两个字符数组a、b,则以下正确的输入格式是 。

A、gets(a,b);

B、scanf(“%s %s”,a,b);

C、scanf(“%s %s”,&a,&b);

D、gets(“a”),get(“b”);

我的答案:B

第八章测试

1、以下程序有错,错误原因是 _。 int main() {int *p,i; char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ┆ }

A、p和q的类型不一致,不能执行*p=*q;语句

B、*p中存放的是地址值,因此不能执行*p=40;语句

C、q没有指向具体的存储单元,所以*q没有实际意义

D、q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q; 语句

我的答案:A

2、已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是 。 void print_value(int *x) {printf(“%d\n”,++*x); }

A、23

B、24

C、25

D、26

我的答案:D

3、下面程序的运行结果是 。 #include <stdio.h> int main() { static char a[]=”Language”,b[]=”programe”; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k)); }

A、gae

B、ga

C、Language

D、有语法错

我的答案:A

4、下面程序的运行结果是 。 #include <stdio.h> #​include <string.h> main() {char *p1,*p2,str[50]=”abc”; p1=”abc”;p2=”abc”; strcpy(str+1,strcat(p1,p2)); printf(“%s\n”,str); }

A、abcabcabc

B、bcabcabc

C、aabcabc

D、cabcabc

我的答案:C

5、若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”}; 则表达式*language[1]>*language[3]比较的是 。

A、字符F和字符P

B、字符串BASIC和字符串JAVA

C、字符B和字符J

D、字符串FORTRAN和字符串PASCAL

我的答案:B

6、若有说明语句 char a[]=”It is mine”; char *p=”It is mine”; 则以下不正确的叙述是_ 。

A、a+1表示的是字符t的地址

B、p指向另外的字符串时,字符串的长度不受限制

C、p变量中存放的地址值可以改变

D、a中只能存放10个字符

我的答案:D

7、以下程序调用fun函数求数组中最大值所在元素的下标。 #include <stdio.h> void fun(int *s,int n, int *k) { int i; for(i=0,*k=i;i<n;i++) if(s[i]>s[*k]) _ } int main() { int a[5]={1,8,3,6,9},k; fun(a,5,&k); printf(“%d,%d\n”,k,a[k]); return 0; }

A、*k=i;

B、k=i;

C、*k=i-s;

D、k=i-s;

我的答案:A

8、有以下程序: #include <stdio.h> void fun(int *p, int *q) { int *t; t=p; p=q; q=t; } int main() { int a=0,b=9; fun(&a,&b); printf(“%d,%d\n”,a,b); return 0; } 程序的输出结果是 。

A、9,0

B、0,9

C、9,9

D、0,0

我的答案:B

9、以下正确的定义语句和赋值语句是_ 。

A、int b[3][5],(*p)[3],(*q)[5]; p=b; q=b;

B、char b[3][5],*p[3]; p[0]=b[0]; p[2]=*b+4;

C、double b[3][5],s[5][3],*q; q=b; s=q;

D、int b[10],*q; char *s; q=b; s=b;

我的答案:B

10、

A、*p1=*p2;

B、p1=p2;

C、p1=*p2;

D、*p1=p2;

我的答案:B

第九章测试

1、有以下结构体定义: struct example { int x; int y; }v1; 则正确的引用或定义是( ) 。

A、v1.x=10;

B、example v2; v2.x=10;

C、struct v2; v2.x=10;

D、struct example v2={10};

我的答案:A

2、对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是( )。 struct date { int year,month,day; }; struct worklist { char name[20]; char sex; struct date birth; }person;

A、year=1976

B、birth.year=1976

C、person.birth.year=1976

D、person.year=1976

我的答案:C

3、根据下述定义,可以输出字符'A'的语句是( )。 struct person { char name[11]; struct { char name[11]; int age; }other; }; struct person man[10]={ {"Jone",{"Paul",20}},{"Paul",{"Mary",18}}, {"Mary",{"Adam",23}},{"Adam",{"Jone",22}} };

A、printf("%c",man[2].other.name[0]);

B、printf("%c",other.name[0]);

C、printf("%c",man[2].(* other[0]));

D、printf("%c",man[3].name);

我的答案:A

4、若有以下程序段: struct st { int n; struct st *next; }; struct st a[3]={5,&a[1],7,&a[2],9, '\0'} ,*p=a; 则值为6的表达式为( )。

A、p++->n

B、p->n++

C、(*p).n++

D、++p->n

我的答案:D

5、运行下列程序段,输出结果是( ) 。 struct country { int num; char name[10]; }x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"}; struct country *p; p=x+2; printf("%d,%c",p->num,(*p).name[2]);

A、3,a

B、4,g

C、2,USA

D、5,Spanish

我的答案:A

6、定义以下结构体数组 struct c { int x; int y; }s[2]={1,3,2,7}; 语句printf("%d",s[0].x*s[1].x)的输出结果为( )

A、14

B、6

C、2

D、21

我的答案:C

7、定义以下结构体类型 struct student {char name[10]; float score[50]; double average; }stud1; 则stud1占用内存的字节数是( )。

A、64

B、218

C、228

D、7

我的答案:B

8、能在一个存储区内处理不同的类型的数据叫结构体。

我的答案:X

9、在编译时对结构体类型不分配空间,只能对结构体变量分配空间。

我的答案:√

10、结构体一旦定义,系统就给它分配所需的内存单元。

我的答案:X

第十章测试

1、以下叙述中错误的是( )。

A、C语言中对二进制文件的访问速度比文本文件快

B、C语言中,随机文件以二进制代码形式存储数据

C、语句 FILE fp; 定义了一个名为fp的文件指针

D、C语言中的文本文件以ASCII码形式存储数据

我的答案:C

2、有以下程序 #include <stdio.h> main() { FILE *fp; int i, k, n; fp=fopen("data.dat", "w+"); for(i=1; i<6; i++) { fprintf(fp,"%d ",i); if(i%3==0) fprintf(fp,"\n"); } rewind(fp); fscanf(fp, "%d%d", &k, &n); printf("%d %d\n", k, n); fclose(fp); } 程序运行后的输出结果是 ( )。

A、0 0

B、123 45

C、1 4

D、1 2

我的答案:D

3、以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。

A、feof(fp)

B、ftell(fp)

C、fgetc(fp)

D、rewind(fp)

我的答案:D

4、以下程序 #include "stdio.h" void WriteStr(char *fn,char *str) { FILE *fp; fp=fopen(fn,"W"); fputs(str,fp); fclose(fp); } main() { WriteStr("t1.dat","start"); WriteStr("t1.dat","end"); } 程序运行后,文件t1.dat中的内容是 ( )。

A、start

B、end

C、startend

D、endrt

我的答案:B

5、有如下程序 #include <stdio.h> main() {FILE *fp1; fp1=fopen("f1.txt","w"); fprintf(fp1,"abc"); fclose(fp1); } 若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为( )。

A、goodabc

B、abcd

C、abc

D、abcgood

我的答案:C

6、有以下程序 #include <stdio.h> main( ) { FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i<4;i++) fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”); fscanf(fp,”%d%d”,&k,&n); printf(“%d %d\n”,k,n); fclose(fp); } 执行后输出结果是( )。

A、1 2

B、123 0

C、1 23

D、0 0

我的答案:B

7、有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节) #include <stdio.h> main( ) { FILE *fp; int i,a[4]={1,2,3,4},b; fp=fopen("data.dat","wb"); for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp); fclose(fp); fp=fopen("data.dat ","rb"); fseek(fp,-2L*sizeof(int).SEEK_END) ; fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp); printf("%d\n",B) ; } 执行后输出结果是( )。

A、2

B、1

C、4

D、3

我的答案:C

8、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。

A、0

B、1

C、-1

D、一个非0值

我的答案:A

9、下列关于C语言数据文件的叙述中正确的是( )。

A、文件由ASCII码字符序列组成,C语言只能读写文本文件

B、文件由二进制数据序列组成,C语言只能读写二进制文件

C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

我的答案:D

10、以下叙述中不正确的是 ( )。

A、C语言中的文本文件以ASCⅡ码形式存储数据

B、C语言中对二进制文件的访问速度比文本文件快

C、C语言中,随机读写方式不适用于文本文件

D、C语言中,顺序读写方式不适用于二进制文件

我的答案:D