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