第一章 单元测试
1、单选题:
下列对C语言特点的描述中,错误的是( )。
选项:
A:C语言编程简洁明了
B:C语言移植性好
C:C语言不是结构化程序设计语言
D:C语言功能较强
答案: 【C语言不是结构化程序设计语言】
2、单选题:
下列关于C语言程序在结构上特点的描述中,错误的是( )。
选项:
A:C语言程序是一个函数串
B:C语言程序的诸多函数中,只能有一个主函数
C:C语言程序可以由一个或多个文件组成
D:C语言程序被执行时,通常是从第1个函数开始
答案: 【C语言程序被执行时,通常是从第1个函数开始】
3、单选题:
在scanf()函数的格式说明符中,长整型数的输入格式说明符是( )。
选项:
A:%d
B:%x
C:%lf
D:%ld
答案: 【%ld】
4、单选题:
在printf()函数的格式说明符中,双精度浮点型数的输出格式说明符是( )。
选项:
A:%s
B:%c
C:%lf
D:%ld
答案: 【%lf】
5、单选题:
下列不是C语言特点的是?
选项:
A:只有64个保留字(reserved keywords),使变量、函数命名有更多弹性。
B:C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
C:不同的变量类型可以用结构体(struct)组合在一起。
D:语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
答案: 【只有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=4,j=4
B:i=3,j=3
C:i=3,j=4
D:i=4,j=3
答案: 【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:****
***
**
*
B:****n***n**n*n
C:”****n***n**n*n”
D:**** *** ** *
答案: 【****
***
**
*
】
4、单选题:
关于关系运算,下列说法正确的是?
选项:
A:关系运算符的优先级低于赋值运算符
B:关系表达式“a>b”的值为“真”,表达式的值为0。
C:关系表达式的值是一个逻辑值,即“真”或“假”。
D:>=和==的优先级相同。
答案: 【关系表达式的值是一个逻辑值,即“真”或“假”。】
5、单选题:
下列运算符,优先级最高的是?
选项:
A:>
B:||
C:
&&
D: !
答案: 【
&&
】
6、单选题:
关于if-else 语句,下列说法错误的是?
选项:
A:在if语句中可嵌套一个或多个if语句。
B:if语句后面只能加逻辑表达式。
C:当if和else数目不同时,可以加花括号来确定配对关系。
D:else总是与它上面的,最近的,同一复合语句中的,未配
对的if语句配对。
答案: 【if语句后面只能加逻辑表达式。】
7、单选题:
关于scanf()函数,说法正确的是?
选项:
A:A. scanf()函数中的“格式控制”后面应当是变量名。
B:scanf()函数中“d”是用来输入无符号的十进制整数的格式字符。
C:scanf()函数中“u”是用来输入有符号的十进制整数的格式字符。
D:scanf()函数中“u”是用来输入无符号的十进制整数的格式字符。
答案: 【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:main函数和其他函数一样,可以互相调用。
B:函数可以嵌套定义
C:同一个函数可以被一个或多个函数调用任意多次。
D:一个C程序只能由一个函数构成。
答案: 【同一个函数可以被一个或多个函数调用任意多次。】
10、单选题:
关于函数的类型,下列说法正确的是?
选项:
A:在调用无参函数时,主调函数向被调用函数传递数据。
B:标准函数,即库函数。这是由用户自己定义的。
C:用户可以自己定义函数。
D:在调用被调用函数时,主调函数不向被调用函数传递数据。
答案: 【用户可以自己定义函数。】
第三章 单元测试
1、判断题:
标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。
选项:
A:错
B:对
答案:
2、单选题:
下列是输出显示字符’a’的八进制ASCII码的语句,正确的是( )。
选项:
A:printf(“%cn”, ‘a’);
B:printf(“%sn”, ‘a’);
C:printf(“%on”, ‘a’);
D:printf(“%dn”, ‘a’);
答案:
3、单选题:
C语言中合法的字符常量是 。
选项:
A:110
B:”n”
C:’n’
D: n
答案:
4、单选题:
表达式1/5+3%4+4.5/5的值是 。
选项:
A:3.900000
B:1.85
C:
1.100000
D:3.9
答案:
5、单选题:
有以下程序:
main( )
{int m;
m=10;
printf(“%dn”,(–m*3/5));
}
程序运行后的输出结果是 。
选项:
A:4
B:5
C:6
D:7
答案:
6、单选题:
表达式(int)(1/3+.5*3+5%3) 的计算结果为 。
选项:
A:2
B:1
C:3
D:7
答案:
7、单选题:
下列不正确的转义字符是 。
选项:
A:
B:’
C:
D:074
答案:
8、单选题:
无符号基本整型的数据类型符为 ,双精度实型数据类型符为 ,字符型数据类型符为 。
选项:
A:double char unsigned int
B: char unsigned int double
C:unsigned int double char
D: chara unsignedint double
答案:
9、单选题:
printf(“%c,%d”,’a’, ‘a’);的输出结果是 。
选项:
A:97 a
B: a 97
C:97,a
D:a,97
答案:
10、单选题:
下列格式符中,哪一个可以用于以八进制形式输出整数 。
选项:
A:%8d
B:%o
C:%ld
D:%d
答案:
第四章 单元测试
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:3
C:5
D:4
答案:
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:语法错误,不能通过编译
C:输入数据3和4,则输入4和5
D:输入数据4和3,则输入3和4
答案:
4、单选题:
两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( ).
#include <stdio.h>
void main( )
{ int x;
scanf(” %d “, &x);
if(x++>5) printf(” %d”,x);
else printf(” %dn”, x–); }
选项:
A:6和4
B:7和5
C:6和3
D:7和4
答案:
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
答案:
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
答案:
9、单选题:
有以下程序
main()
{ int a =5,b =4,c= 3,d= 2;
if (a> b> c)
printf(” %dn”,d);
else if ((c-1> = d) = = 1)
printf(” %dn”,d+ 1);
else
printf(” %dn”,d + 2);}
执行后输出结果是( ).
选项:
A:4
B:3
C:2
D:编译时有错,无结果
答案:
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
答案:
第五章 单元测试
1、单选题:
对于while(!E) s;,若要执行循环体语句s,则E的数值应为 。
选项:
A:E不等于0
B:E不等于1
C:E等于1
D: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
答案:
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:1,2,1
C:1,2,0
D:2,1,0
答案:
5、单选题:
下列叙述中正确的是( )。
选项:
A:do-while语句构成的循环不能用其他语句构成的循环来代替
B:用do-while语句构成的循环,在while后的表达式为非零时结束循环
C:用do-while语句构成的循环,在while后的表达式为零时结束循环
D:do-while语句构成的循环只能用break语句退出
答案:
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(“%dn”,s);
}
A)10 B)6 C)3 D)1
选项:
A:10
B:1
C:6
D:3
答案:
8、单选题:
若S=0,执行循环语句“for(i=1;i<=10;i=i+3) s=s+i;”后,i的值为( )。
选项:
A:10
B:12
C:11
D: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%3)||n<=200;n++) printf(“%4d”,n);
D: 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:printf函数永远也不执行
B:x>=0时什么也不输出
C:当x<0时整个循环结束
D:循环一次也不会被执行
答案:
第六章 单元测试
1、单选题:
以下正确的函数形式是 。
选项:
A: double fun(int x,int y)
{ z=x+y; return z; }
B:double fun(int x,int y)
{ double z; z=x+y; return z; }
C:double fun(int x,y)
{ int z; return z; }
D:double fun(x,y)
{ int x,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:5
B:2
C:1
D:4
答案:
5、单选题:
若使用一维数组名作函数实参,则以下正确的说法是 。
选项:
A:实参数组类型与形参数组类型可以不匹配
B:在被调函数中,不需要考虑形参数组的大小
C:实参数组名与形参数组名必须一致
D:必须在主调函数中说明此数组的大小
答案:
6、单选题:
凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 。
选项:
A:寄存器(register)
B:外部(extern)
C:静态(static)
D:自动(auto)
答案:
7、单选题:
执行下列程序:
#define M(x,y) (x*y)
i=3;
i=M(i,i+1)-8;
变量i的值应为 。
选项:
A:3
B:5
C:4
D: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,%dn”,x,y);
return 0;
}
选项:
A:7,5
B:3,5
C:5,3
D: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
答案:
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(“%dn”,fun(9));
return 0;
}
正确的输出是 。
选项:
A:7
B:4
C:5
D:9
答案:
第七章 单元测试
1、单选题:
下列数组定义语句中,正确的是( )。
选项:
A:int a[][3]= {1,2,3,4,5,6};
B:int a[][]={1,2,3,4,5,6};
C:static int a[][]={{1,2,3},{4,5,6}};
D:char a[2]「3]=’a’,’b’;
答案:
2、单选题:
设有下列数据定义语句,则数组元素x[i]的值是( )。
int i= 3,x[4]={1,2,3};
选项:
A:2
B:3
C:0
D:1
答案:
3、单选题:
运行下列程序的输出结果是( )
main()
{
int a[]={1,2,3,4,5},i;
for(i=1;i<5;i++)
printf(“%d”,a[i]-a[i-1]);
}
选项:
A:222
B:11111
C:111
D:1111
答案:
4、单选题:
若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( ).
选项:
A:3
B:2
C:无确定值
D:4
答案:
5、单选题:
程序运行后的输出结果是( )。
#include <stdio.h>
#include <string.h>
main()
{
char a[10]=”abcd”;
printf(“%d,%dn”,strlen(a),sizeof(a));
}
选项:
A:4,10
B:8,8
C:7,4
D:10,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(“%dn”,t);
}
选项:
A:3
B:4
C:1
D:9
答案:
7、单选题:
下面是对s的初始化,其中不正确的是 。
选项:
A:char s[5]={“abc”};
B:char s[5]={‘a’,‘b’,‘c’};
C:char s[5]=“abcdef”;
D:char s[5]=“”;
答案:
8、单选题:
下面程序段的运行结果是 。
char c[5]={‘a’,‘b’,‘’,‘c’,‘’};
printf(“%s”,c);
选项:
A:‘a’‘b’
B:ab
C:ab c
D:cab
答案:
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数组长度长
答案:
10、单选题:
有两个字符数组a、b,则以下正确的输入格式是 。
选项:
A:gets(a,b);
B:gets(“a”),get(“b”);
C:scanf(“%s %s”,a,b);
D:scanf(“%s %s”,&a,&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;
语句
答案:
2、单选题:
已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是 。
void print_value(int *x)
{printf(“%dn”,++*x); }
选项:
A:26
B:24
C:23
D:25
答案:
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:Language
B:gae
C:有语法错
D:ga
答案:
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(“%sn”,str);
}
选项:
A:cabcabc
B:aabcabc
C:bcabcabc
D:abcabcabc
答案:
5、单选题:
若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式*language[1]>*language[3]比较的是 。
选项:
A:字符B和字符J
B:字符串BASIC和字符串JAVA
C:字符F和字符P
D:字符串FORTRAN和字符串PASCAL
答案:
6、单选题:
若有说明语句
char a[]=”It is mine”; char *p=”It is mine”;
则以下不正确的叙述是_ 。
选项:
A:a中只能存放10个字符
B:p指向另外的字符串时,字符串的长度不受限制
C:a+1表示的是字符t的地址
D:p变量中存放的地址值可以改变
答案:
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,%dn”,k,a[k]);
return 0;
}
选项:
A:k=i-s;
B:k=i;
C:*k=i-s;
D:*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,%dn”,a,b);
return 0;
}
程序的输出结果是 。
选项:
A:0,9
B:9,0
C:0,0
D:9,9
答案:
9、单选题:
以下正确的定义语句和赋值语句是_ 。
选项:
A: double b[3][5],s[5][3],*q; q=b; s=q;
B: int b[10],*q; char *s; q=b; s=b;
C:int b[3][5],(*p)[3],(*q)[5]; p=b; q=b;
D: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;
答案:
第九章 单元测试
1、单选题:
有以下结构体定义:
struct example
{ int x;
int y; }v1;
则正确的引用或定义是( ) 。
选项:
A:struct example v2={10};
B: v1.x=10;
C:struct v2; v2.x=10;
D:example v2; v2.x=10;
答案:
2、单选题:
对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是( )。
struct date
{ int year,month,day;
};
struct worklist
{ char name[20];
char sex;
struct date birth;
}person;
选项:
A:person.year=1976
B:birth.year=1976
C: year=1976
D: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[3].name);
B:printf(“%c”,man[2].(* other[0]));
C:printf(“%c”,man[2].other.name[0]);
D:printf(“%c”,other.name[0]);
答案:
4、单选题:
若有以下程序段:
struct st
{ int n;
struct st *next; };
struct st a[3]={5,&a[1],7,&a[2],9, ”} ,*p=a;
则值为6的表达式为( )。
选项:
A:p->n++
B:++p->n
C:p++->n
D: (*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:2,USA
B: 5,Spanish
C:4,g
D:3,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:21
D:2
答案:
7、单选题:
定义以下结构体类型
struct student
{char name[10];
float score[50];
double average;
}stud1;
则stud1占用内存的字节数是( )。
选项:
A:64
B:218
C:7
D:228
答案:
8、判断题:
能在一个存储区内处理不同的类型的数据叫结构体。
选项:
A:错
B:对
答案:
9、判断题:
在编译时对结构体类型不分配空间,只能对结构体变量分配空间。
选项:
A:对
B:错
答案:
10、判断题:
结构体一旦定义,系统就给它分配所需的内存单元。
选项:
A:对
B:错
答案:
第十章 单元测试
1、单选题:
以下叙述中错误的是( )。
选项:
A:C语言中对二进制文件的访问速度比文本文件快
B:语句 FILE fp; 定义了一个名为fp的文件指针
C:C语言中,随机文件以二进制代码形式存储数据
D:C语言中的文本文件以ASCII码形式存储数据
答案:
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 %dn”, k, n);
fclose(fp);
}
程序运行后的输出结果是 ( )。
选项:
A:0 0
B:123 45
C:1 2
D:1 4
答案:
3、单选题:
以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。
选项:
A:feof(fp)
B:fgetc(fp)
C:rewind(fp)
D:ftell(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:startend
B:start
C:endrt
D:end
答案:
5、单选题:
有如下程序
#include <stdio.h>
main()
{FILE *fp1;
fp1=fopen(“f1.txt”,”w”);
fprintf(fp1,”abc”);
fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为( )。
选项:
A: abcgood
B:abc
C:abcd
D:goodabc
答案:
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 %dn”,k,n);
fclose(fp);
}
执行后输出结果是( )。
选项:
A: 0 0
B: 1 23
C: 1 2
D: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(“%dn”,B) ;
}
执行后输出结果是( )。
选项:
A:1
B:4
C:2
D:3
答案:
8、单选题:
若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
选项:
A:-1
B:1
C:一个非0值
D:0
答案:
9、单选题:
下列关于C语言数据文件的叙述中正确的是( )。
选项:
A:文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
B:文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
C:文件由ASCII码字符序列组成,C语言只能读写文本文件
D:文件由二进制数据序列组成,C语言只能读写二进制文件
答案:
10、单选题:
以下叙述中不正确的是 ( )。
选项:
A:C语言中的文本文件以ASCⅡ码形式存储数据
B:C语言中,随机读写方式不适用于文本文件
C:C语言中,顺序读写方式不适用于二进制文件
D:C语言中对二进制文件的访问速度比文本文件快
答案:
请先
!