首页 › 答案 › 题库 › 知到智慧树 › 未分类

智慧树知到《C语言程序设计基础》章节测试答案

智慧树知到《C语言程序设计基础》章节测试答案
绪论单元测试
1、计算机能够直接识别的语言是()。
A.汇编语言
B.机器语言
C.高级语言
正确答案:机器语言
第一章单元测试
1、下列对C语言特点的描述中,错误的是()。
A.C语言编程简洁明了
B.C语言移植性好
C.C语言不是结构化程序设计语言
D.C语言功能较强
正确答案:C语言不是结构化程序设计语言
2、下列关于C语言程序在结构上特点的描述中,错误的是()。
A.C语言程序是一个函数串
B.C语言程序的诸多函数中,只能有一个主函数
C.C语言程序被执行时,通常是从第1个函数开始
D.C语言程序可以由一个或多个文件组成
正确答案:C语言程序被执行时,通常是从第1个函数开始
3、在scanf()函数的格式说明符中,长整型数的输入格式说明符是()。
A.%ld
B.%x
C.%d
D.%lf
正确答案:%ld
4、在printf()函数的格式说明符中,双精度浮点型数的输出格式说明符是()。
A.%ld
B.%s
C.%c
D.%lf
正确答案:%lf
5、下列不是C语言特点的是?
A.C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
B.语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
C.只有64个保留字(reserved keywords),使变量、函数命名有更多弹性。
D.不同的变量类型可以用结构体(struct)组合在一起。
正确答案:只有64个保留字(reserved keywords),使变量、函数命名有更多弹性。
6、几乎没有不能用C语言实现的软件?
A.正确
B.错误
正确答案:错误
7、C编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等?
A.正确
B.错误
正确答案:正确
8、Dev C++是一个开源的编程软件吗?
A.正确
B.错误
正确答案:正确
9、编程环境包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程对吗?
A.正确
B.错误
正确答案:正确
10、任何程序都有主函数吗?
A.正确
B.错误
正确答案:正确
第二章单元测试
1、若i=3,j=i++;执行运算后i和j的值为?
A.i=3,j=4
B.i=4,j=3
C.i=3,j=3
D.i=4,j=4
正确答案:i=4,j=3
2、下列函数在屏幕上输出的结果是?# include <;stdio.h>;int main(void ){;;printf(";学号 姓名 班级\n";);;return 0;}
A.";学号 姓名 班级"
B.学号班级姓名
C.";学号 姓名 班级\n"
D.学号;姓名;班级
正确答案:学号;姓名;班级
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.*******
**
*
正确答案:*******
**
*
4、关于关系运算,下列说法正确的是?
A.关系运算符的优先级低于赋值运算符
B.关系表达式“a>;b”的值为“真”,表达式的值为0。
C.>;=和==的优先级相同。
D.关系表达式的值是一个逻辑值,即“真”或“假”。
正确答案:关系表达式的值是一个逻辑值,即“真”或“假”。
5、下列运算符,优先级最高的是?
A.>
B.!
C.||
D.;&;&
正确答案:&;&
6、关于if-else 语句,下列说法错误的是?
A.在if语句中可嵌套一个或多个if语句。
B.当if和else数目不同时,可以加花括号来确定配对关系。
C.else总是与它上面的,最近的,同一复合语句中的,未配对的if语句配对。
D.if语句后面只能加逻辑表达式。
正确答案:if语句后面只能加逻辑表达式。
7、关于scanf()函数,说法正确的是?
A.scanf()函数中“u”是用来输入有符号的十进制整数的格式字符。
B.scanf()函数中“d”是用来输入无符号的十进制整数的格式字符。
C.scanf()函数中“u”是用来输入无符号的十进制整数的格式字符。
D.
A.scanf()函数中的“格式控制”后面应当是变量名。
正确答案:scanf()函数中“u”是用来输入无符号的十进制整数的格式字符。
8、语句for(i=1;i<;=100;i++) sum=sum+i; 的功能是?
A.1~100以内所有偶数的和
B.1~100以内所有整数的和
C.1~100以内所有奇数的和
D.1~100最大的数的值。
正确答案:1~100以内所有整数的和
9、关于函数,下列说法正确的是?
A.一个C程序只能由一个函数构成。
B.同一个函数可以被一个或多个函数调用任意多次。
C.main函数和其他函数一样,可以互相调用。
D.函数可以嵌套定义
正确答案:同一个函数可以被一个或多个函数调用任意多次。
10、关于函数的类型,下列说法正确的是?
A.用户可以自己定义函数。
B.标准函数,即库函数。这是由用户自己定义的。
C.在调用被调用函数时,主调函数不向被调用函数传递数据。
D.在调用无参函数时,主调函数向被调用函数传递数据。
正确答案:用户可以自己定义函数。
第三章单元测试
1、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。
A.正确
B.错误
正确答案:正确
2、下列是输出显示字符';a';的八进制ASCII码的语句,正确的是()。
A.printf(";%c\n";, ';a';)
B.printf(";%d\n";, ';a';)
C.printf(";%o\n";, ';a';)
D.printf(";%s\n";, ';a';)
正确答案:printf(";%o\n";, ';a';)
3、C语言中合法的字符常量是()。
A.110
B.n
C.';\n'
D.";n"
正确答案:';\n'
4、表达式1/5+3%4+4.5/5的值是()。
A.3.9
B.3.900000
C.1.85
D.1.100000
正确答案:3.900000
5、有以下程序:main(){int ;m;m=10;printf(";%d\n";,(--m*3/5));};程序运行后的输出结果是()。
A.5
B.4
C.6
D.7
正确答案:5
6、表达式(int)(1/3+.5*3+5%3);的计算结果为()。
A.7
B.3
C.1
D.2
正确答案:3
7、下列不正确的转义字符是()。
A.\\
B.\0
C.\'
D.074
正确答案:074
8、无符号基本整型的数据类型符为;,双精度实型数据类型符为;,字符型数据类型符为()。
A.chara ;unsignedint ;double
B.char ;unsigned int ;double
C.double;char ;unsigned int
D.unsigned int;double;char
正确答案:unsigned int;double;char
9、printf(";%c,%d";,';a';, ';a';);的输出结果是()。
A.a ;97
B.97 ;a
C.a,97
D.97,a
正确答案:a,97
10、下列格式符中,哪一个可以用于以八进制形式输出整数()。
A.%d
B.%o
C.%8d
D.%ld
正确答案:%o
第四章单元测试
1、以下运算符中,优先级最高的运算符是().
A.>;=
B.*=
C.(类型)
D.+
正确答案:(类型)
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.2
B.4
C.3
D.5
正确答案:2
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.输入数据4和3,则输出4和4
B.输入数据4和3,则输入3和4
C.语法错误,不能通过编译
D.输入数据3和4,则输入4和5
正确答案:语法错误,不能通过编译
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.6和3
B.6和4
C.7和5
D.7和4
正确答案:7和5
5、执行下列语句后的输出为().;int j=-1;;if(j<;=1);;printf(";****\n";);;else ;;printf(";%%%%\n";)。
A.****
B.有错,执行不正确
C.%%%%
D.%%%%c
正确答案:****
6、为了避免在嵌套的条件语句if···else中产生二义性,C语言规定:else子句总是与()配对.
A.其之前最近的if
B.同一行上的if
C.其之后最近的if
D.缩排位置相同的if
正确答案:其之前最近的if
7、C语言的switch语句中case后().
A.可为任何量或表达式
B.只能为常量或常量表达式
C.只能为常量
D.可为常量或表达式或有确定值的变量及表达式
正确答案:只能为常量或常量表达式
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.1,1
B.2,1
C.2,2
D.1,0
正确答案:2,1
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.3
B.2
C.4
D.编译时有错,无结果
正确答案:3
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.3
B.6
C.2
D.1
正确答案:2
第五章单元测试
1、对于while(!E) s;,若要执行循环体语句s,则E的数值应为()。
A.E等于0
B.E不等于1
C.E等于1
D.E不等于0
正确答案:E等于0
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)*(n/10)
B.(n%10)*(n%10)
C.n/10
D.n%10
正确答案:(n%10)*(n%10)
3、对以下程序段,循环体执行的次数是;。int k=0;while(k=1) ;k++
A.一次也不执行
B.无数次
C.有语法错误,不能执行
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.2,1,1
B.2,1,0
C.1,2,0
D.1,2,1
正确答案:1,2,0
5、下列叙述中正确的是()。
A.do-while语句构成的循环只能用break语句退出
B.do-while语句构成的循环不能用其他语句构成的循环来代替
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环
D.用do-while语句构成的循环,在while后的表达式为零时结束循环
正确答案:用do-while语句构成的循环,在while后的表达式为零时结束循环
6、执行int x=-1;do {x=x*x;} while(x==0);循环时,下列说法正确的是()。
A.循环体将执行两次
B.系统将提示有语法错误
C.循环体将执行一次
D.循环体将执行无限次
正确答案:循环体将执行一次
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.1
B.6
C.10
D.3
正确答案:6
8、若S=0,执行循环语句“for(i=1;i<;=10;i=i+3) s=s+i;”后,i的值为()。
A.13
B.11
C.10
D.12
正确答案:13
9、与下面程序段等价的是。for(n=100;n<;=200;n++){if(n%3==0) continue;printf(“%4d”,n);}
A.for(n=100;n<;=200;n++){
if(n%3) printf(“%4d”,n)
else continue
break
}
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%3)||n<;=200;n++) printf(“%4d”,n)
正确答案:for(n=100;n<;=200;n++) if(n%3!=0) printf(“%4d”,n)
10、下面程序段;。for(t=1;t<;=100;t++){scanf(“%d”,&;x);if(x<;0);break;printf(“%3d”,t);}
A.x>;=0时什么也不输出
B.循环一次也不会被执行
C.printf函数永远也不执行
D.当x<;0时整个循环结束
正确答案:当x<;0时整个循环结束
第六章单元测试
1、以下正确的函数形式是()。
A.double fun(x,y){ int x,y; double z; z=x+y; return z; }
B.double fun(int x,y){ int z; return z; }
C.double fun(int x,int y){ z=x+y; return z; }
D.double fun(int x,int y){ double z; z=x+y; return z; }
正确答案:double fun(int x,int y){ double z; z=x+y; return z; }
2、若调用一个函数,且此函数中没有return语句,则正确的说法是。
A.该函数没有返回值
B.该函数返回若干个系统默认值
C.该函数能返回一个用户所希望的函数值
D.该函数返回一个不确定的值
正确答案:该函数返回一个不确定的值
3、以下正确的说法是。
A.形参是虚拟的,不占用存储单元
B.只有当实参和与其对应的形参同名时才共占用存储单元
C.实参和与其对应的形参共占用一个存储单元
D.实参和与其对应的形参各占用独立的存储单元
正确答案:实参和与其对应的形参各占用独立的存储单元
4、下面函数调用语句含有实参的个数为。func((exp1,exp2),(exp3,exp4,exp5))。
A.2
B.4
C.1
D.5
正确答案:2
5、若使用一维数组名作函数实参,则以下正确的说法是。
A.实参数组类型与形参数组类型可以不匹配
B.实参数组名与形参数组名必须一致
C.必须在主调函数中说明此数组的大小
D.在被调函数中,不需要考虑形参数组的大小
正确答案:在被调函数中,不需要考虑形参数组的大小
6、凡是函数中未指定存储类型的局部变量,其隐含的存储类别为。
A.自动(auto)
B.寄存器(register)
C.外部(extern)
D.静态(static)
正确答案:自动(auto)
7、执行下列程序:#define M(x,y) ;(x*y)i=3;i=M(i,i+1)-8;变量i的值应为。
A.2
B.5
C.3
D.4
正确答案:2
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
正确答案:5,7
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%10
B.k/10
C.k%10
D.k*10
正确答案:k/10
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.4
C.5
D.7
正确答案:7
第七章单元测试
1、下列数组定义语句中,正确的是()。
A.int a[][]={1,2,3,4,5,6}
B.static int a[][]={{1,2,3},{4,5,6}}
C.int a[][3]= {1,2,3,4,5,6}
D.char a[2]「3]=';a';,';b'
正确答案:int a[][3]= {1,2,3,4,5,6}
2、设有下列数据定义语句,则数组元素x[i]的值是()。
int i= 3,x[4]={1,2,3}
A.2
B.3
C.0
D.1
正确答案:0
3、运行下列程序的输出结果是();main(){int a[]={1,2,3,4,5},i;for(i=1;i<;5;i++);printf(";%d";,a[i]-a[i-1]);}
A.1111
B.111
C.222
D.11111
正确答案:1111
4、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是().
A.4
B.2
C.无确定值
D.3
正确答案:3
5、程序运行后的输出结果是()。#include <;stdio.h>;#include <;string.h>;main(){char a[10]=”abcd”;;printf(“%d,%d\n”,strlen(a),sizeof(a));}。
A.4,10
B.10,10
C.7,4
D.8,8
正确答案:4,10
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.9
B.4
C.3
D.1
正确答案:4
7、下面是对s的初始化,其中不正确的是。
A.char s[5]={“abc”}
B.char s[5]=“abcdef”
C.char s[5]={‘a’,‘b’,‘c’}
D.char s[5]=“”
正确答案:char s[5]=“abcdef”
8、下面程序段的运行结果是。char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c)。
A.ab
B.‘a’‘b’
C.ab c
D.cab
正确答案:ab
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数组长度长
正确答案:a数组比b数组长度长
10、有两个字符数组a、b,则以下正确的输入格式是。
A.gets(a,b)
B.scanf(“%s %s”,&;a,&;b)
C.gets(“a”),get(“b”)
D.scanf(“%s %s”,a,b)
正确答案:scanf(“%s %s”,a,b)
第八章单元测试
1、以下程序有错,错误原因是()。int;main();{int *p,i;char *q,ch;p=&;i;q=&;ch;*p=40;*p=*q;;┆}
A.q没有指向具体的存储单元,所以*q没有实际意义
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.p和q的类型不一致,不能执行*p=*q;语句
D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;
;语句
正确答案:p和q的类型不一致,不能执行*p=*q;语句
2、已有变量定义和函数调用语句:int a=25;print()value(&;a);下面函数的正确输出结果是 ; 。;void print()value(int *x);{printf(“%d\n”,++*x);}
A.23
B.25
C.24
D.26
正确答案:26
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.有语法错
正确答案:gae
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.aabcabc
B.bcabcabc
C.cabcabc
D.abcabcabc
正确答案:aabcabc
5、若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达式*language[1]>;*language[3]比较的是。
A.字符B和字符J
B.字符串FORTRAN和字符串PASCAL
C.字符串BASIC和字符串JAVA
D.字符F和字符P
正确答案:字符串BASIC和字符串JAVA
6、若有说明语句char a[]=”It is mine”;char *p=”It is mine”;则以下不正确的叙述是()。
A.p变量中存放的地址值可以改变
B.a中只能存放10个字符
C.p指向另外的字符串时,字符串的长度不受限制
D.a+1表示的是字符t的地址
正确答案:a中只能存放10个字符
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
正确答案:*k=i
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,9
B.9,0
C.0,9
D.0,0
正确答案:0,9
9、以下正确的定义语句和赋值语句是()。
A.char b[3][5],*p[3];p[0]=b[0];p[2]=*b+4
B.double b[3][5],s[5][3],*q;q=b;s=q
C.int b[3][5],(*p)[3],(*q)[5];p=b;q=b
D.int b[10],*q;char *s;q=b;s=b
正确答案:char b[3][5],*p[3];p[0]=b[0];p[2]=*b+4
10、

A.*p1=p2
B.*p1=*p2
C.p1=p2
D.p1=*p2
正确答案:p1=p2
第九章单元测试
1、有以下结构体定义:struct example{ int x;int y; }v1;则正确的引用或定义是()。
A.v1.x=10
B.struct example v2={10}
C.struct v2; v2.x=10
D.example v2; v2.x=10
正确答案:v1.x=10
2、对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是()。struct date{ int year,month,day;};struct worklist{ char name[20];;char sex;;struct date birth;}person。
A.birth.year=1976
B.year=1976
C.person.birth.year=1976
D.person.year=1976
正确答案:person.birth.year=1976
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[0]))
B.printf(";%c";,man[3].name)
C.printf(";%c";,other.name[0])
D.printf(";%c";,man[2].other.name[0])
正确答案:printf(";%c";,man[2].other.name[0])
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++
正确答案:++p->;n
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.2,USA
C.4,g
D.5,Spanish
正确答案:3,a
6、定义以下结构体数组;struct c;{ int x;;int y;;}s[2]={1,3,2,7};语句printf(";%d";,s[0].x*s[1].x)的输出结果为()
A.2
B.21
C.6
D.14
正确答案:2
7、定义以下结构体类型struct ;student{char ;name[10];float;score[50];double;average;}stud1;则stud1占用内存的字节数是()。
A.218
B.64
C.228
D.7
正确答案:218
8、能在一个存储区内处理不同的类型的数据叫结构体。
A.正确
B.错误
正确答案:错误
9、在编译时对结构体类型不分配空间,只能对结构体变量分配空间。
A.正确
B.错误
正确答案:正确
10、结构体一旦定义,系统就给它分配所需的内存单元。
A.正确
B.错误
正确答案:错误
第十章单元测试
1、以下叙述中错误的是()。
A.C语言中,随机文件以二进制代码形式存储数据
B.C语言中的文本文件以ASCII码形式存储数据
C.C语言中对二进制文件的访问速度比文本文件快
D.语句 FILE; fp; 定义了一个名为fp的文件指针
正确答案:语句 FILE; fp; 定义了一个名为fp的文件指针
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.1; 2
B.123; 45
C.1; 4
D.0; 0
正确答案:1; 2
3、以下与函数fseek(fp,0L,SEEK()SET)有相同作用的是()。
A.feof(fp)
B.fgetc(fp)
C.ftell(fp)
D.rewind(fp)
正确答案:rewind(fp)
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.startend
C.end
D.endrt
正确答案:end
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.abcgood
C.abc
D.abcd
正确答案:abc
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. 0; 0
B.123; 0
C.1; 2
D.1; 23
正确答案:123; 0
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.1
B.2
C.3
D.4
正确答案:3
8、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()。
A.一个非0值
B.0
C.1
D.-1
正确答案:一个非0值
9、下列关于C语言数据文件的叙述中正确的是()。
A.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
B.文件由二进制数据序列组成,C语言只能读写二进制文件
C.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
D.文件由ASCII码字符序列组成,C语言只能读写文本文件
正确答案:文件由ASCII码字符序列组成,C语言只能读写文本文件
10、以下叙述中不正确的是()。
A.C语言中,随机读写方式不适用于文本文件
B.C语言中的文本文件以ASCⅡ码形式存储数据
C.C语言中,顺序读写方式不适用于二进制文件
D.C语言中对二进制文件的访问速度比文本文件快
正确答案:C语言中,顺序读写方式不适用于二进制文件