一、判断题
1 广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。(对)
2 getchar()函数的作用是从标准输入设备上读入一个字符. (对)
3 putchar()函数的作用是把一个字符输出到标准输出设备. (对)
4 在给scanf函数提供数据时,数据之间一律用空格分隔. (错)
5 在switch语句中,每一个case的常量表达式的值必须互不相同. (对)
6 C语言中的逻辑"真"是用1表示的,逻辑"假"是用0表示的. (对)
7 每个switch结构中都必须含有default分支. (错)
8 在使用switch语句时,多个case可以共用一个执行语句. (对)
9 在使用switch语句时,case和后面的常量表达式之间可以没有空格. (错)
10 C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的. (对)
11 在实际编程中,do-while循环完全可以用for循环替换。(对)
12 continue语句的作用是结束本次循环。(对)
13 在实际编程中,do-while循环完全可以用for循环替换. (对)
14 c语言中字符串的结束符是'\0'。(对)
15 进行宏定义时,宏名必须使用大写字母表示。(错)
16 主函数和其它函数可以相互调用。(错)
17 在C语言中,数组元素的下标是整型常量或整型变量,并且下标默认从1开始. (错)
18 字符数组只能定义和初始化为一个一维数组而不能定义和初始化为一个多维数组.
(错)
19 在不同函数中可以使用相同名字的变量。(对)
20 在c中,外部变量的隐含类别是自动存储类别。(对)
21 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值。(对)
22 全局变量都是静态存储。(错)
23 函数中的局部变量都是动态存储。(错)
24 extern变量的生命期是整个程序执行期。(对)
25 函数不能嵌套定义,但可以嵌套调用. (对)
26 程序的运行最后在main函数中结束. (对)
27 当形参是变量时,实参与它所对应的形参占用不同的存储单元. (对)
28 宏定义不是C语句. (对)
29 主函数和其它函数可以相互调用. (错)
30 "在Turbo C中,下面的定义和语句是合法的:
file *fp;
fp=fopen(""a.txt"",""r"");" (错)
31 "在Turbo C中,此定义和语句是合法的:
enum aa{ a=5,b,c}bb;
bb=(enum aa)5;" (对)
32 结构体类型只有一种。(错)
33 共用体变量所占的内存长度等于最长的成员的长度。(对)
34 可以将一个结构体变量作为一个整体进行输入和输出. (错)
35 用typedef可以声明各种类型名,也有可以用来定义变量. (错)
36 用typedef不仅对已经存在的类型增加一个类型名,而且还可以创造新的类型. (错)
37 文件根据数据的组织形式,可分为ASCII文件和二进制文件. (对)
38 C语言对文件的处理方法有缓冲文件系统和非缓冲文件系统. (对)
39 C语言库函数fgets(str,n,fp)的功能是从文件fp中读取长度不超过n–1的字符串存入str 指向的内存. (对)
40 C语言中文件的存取方式可以是顺序存取,也可以是随机存取. (对)
41 "函数调用语句fseek(fp,10L,2)的含义是:
将文件位置指针从文件末尾处向文件头方向移动10个字节." (错)
42 在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量. (对)
43 共同体变量所占的内存长度等于最短的成员的长度. (错)
44 结构体中的成员名不可以与程序中的变量名相同. (错)
45 自增运算符(++)或自减运算符(--)不能用于常量,但能用于符号常量。(错)
46 在c程序中对用到的所有数据都必须指定其数据类型。(对)
47 在c程序中, APH 和aph 代表不同的变量。(对)
48 一个实型变量的值肯定是精确的。(错)
49 一个变量在内存中占据一定的存储单元。(对)
50 c语言不允许混合类型数据间进行运算。(错)
51 a-=7等价于a=a-7。(对)
52 一个C程序由一个或多个函数组成. (对)
53 一个C程序必须包含一个main函数. (对)
54 C程序的每一行上可以写多条语句. (对)
55 在C语言程序中main函数必须放在程序的开始位置. (错)
56 C语言程序的开始执行点是程序中的main函数. (对)
57 C程序的书写格式虽然自由,但为了清晰,一般在一行内写一个语句. (对)
58 C程序的书写格式自由,一行内可以写多个语句,一个语句也可以写在多行上. (对)
59 "在C语言中运算符的优先级高低的排列顺序是:
关系运算符、算术运算符、赋值运算符." (错)
60 在C语言中规定只能由字母、数字和下划线组成标识符,且第一个字符必须为下划线.
(错)
61 在C语言中关键字是一类特殊的标识符,不允许作为用户标识符使用. (对)
62 数据在内存中是以二进制形式存放的. (对)
63 C语言的字符常量是用双撇号括起来的一个字符. (错)
64 sum和SUM是相同的变量名. (错)
65 关系运算符<= 与== 的优先级相同. (错)
66 在一个整型常量后面加一个字母l或L,代表其类型为long int. (对)
二、填空题
1 C语言本身不提供输入输出语句,其输入输出操作是由【1】来实现的.
函数□库函数□输入输出函数2 "当a=3,b=2,c=1;时,执行以下程序段后,c的值为【1】.
if(a>b) a=b;
if(b>c) b=c;
else c=b;
c=a;" 2 3 "若a和b都是int型变量,函数scanf(""%3d%2d"",&a,&b)对应的键盘输入数据是: 2618223<回车>
则该函数执行后,变量b的值等于【1】." 82 4 "若a和b都是int型变量,执行函数scanf(""%3d%2x"",&a,&b)时,对应的键盘输入数据是:
26a23则该函数执行后,变量b的十进制值等于【1】." 162
5 "以下程序运行后的输出结果是【1】.
main()
{ char m;
m='A'+33; printf(""%c\n"",m);
}" b
6 在c语言中,所有的数据输入/输出都是由【1】完成的. 库函数
7 "在使用switch语句时,各case和default子句的先后顺序如果变动,
则程序执行结果【1】(填会/不会)受到影响." 不会
8 "执行下列程序段后,y的值为【1】.
int x,y,z,m,n; m=10;n=5;
x=(--m==n++)?--m:++n;
y=m++;" 9
9 "执行下面程序后,输出结果是【1】.
main()
{ int a=45,b=27,c=0;
c=max(a,b);
printf(""%d\n"",c);
}
int max(x,y)
int x,y;
{ int z;
if(x>y) z=x;
else z=y;
return(z);
}" 45
10 【1】语句强行结束循环,转向执行循环语句的下一条语句. break
11 do-while循环与while循环的不同在于:【1】先执行循环中的语句后做条件判断.
do-while循环□do-while□do while
12 goto语句的标号必须与goto语句同处于一个【1】中. 函数
13 "设有以下程序段,执行程序后a的值是【1】.
int x=0,a=0;
while(!x!=0) a+=++x;
printf(""%d"",a);" 1
14 "下面一段程序的功能是计算1到100之间的整数之和,并将结果保存到变量s中. int a=101,s=0;
while(【1】,a>0 )s=s+a;" --a□a--□a=a-1
15 "下面一段程序的功能是计算6的阶乘,并将结果保存到变量s中.
int a=1,s=【1】;
for(;s*=a,++a<=6;);" 1
16 "下面一段程序的功能是计算两个正整数(保存在int型变量m和n中)的最大公约数, 并将结果保存到变量gcd中.
for(;r=m%n;m=n,n=r);gcd=【1】;" n
17 "下面一段程序执行后,变量s的值等于【1】.
int a,s=0;
for(a=10;a>0;a-=3)s+=a;" 22
18 "下面一段程序执行后变量s的值等于【1】.
int s=0,i,j;
for(i=1;i<=3;i++);
for(j=1;j<=i;j++)s=s+j;" 10
19 循环结构中反复执行的程序段称为【1】. 循环体
20 "以下do-while语句中循环体的执行次数是【1】.
a=10;
b=0;
do{ b=a--; a-=2; }while(a>=0);" 4
21 "在for(表达式1;表达式2;表达式3) 语句中
表达式1执行了【1】次." 1□一□壹□单
22 "执行下列程序段后,s的值是【1】.
int k, s;
for(k=s=0; k<10&&s<=10; s+=k)k++;" 15
23 "执行以下程序段后,s的值是【1】.
int a[]={1,2,3,4,5,6,7,8},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);" 16
24 "执行以下程序后,输出'$'号的个数是【1】.
main()
{ int i,j;
for(i=1; i<5; i++)
for(j=2; j<=i; j++)
putchar('$');
}" 6
25 main()函数可以有两个参数,其中第【1】个参数等于命令行参数(包含命令程序文件标识符)的个数. 1□一
26 定义int a[2][3];表示数组a中的元素个数是【1】个. 6
27 取地址符(&)不能用于表达式、寄存器变量和【1】. 常量
28 若数组只有一个下标,称为一维数组,其数组元素被称为【1】下标变量. 单
29 若有定义:int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是【1】. 8
30 "设有以下定义的语句:
int a[3][2]={10,20,30,40,50,60}, (*p)[2];
p=a;
则*(*(p+2)+1)值为【1】." 60
31 数组初始化赋值是指在数组定义时给数组元素赋予初值.数组初始化是在【1】阶段进行的. 编译
32 数组元素通常也称为【1】. 下标变量
33 "下面程序的输出结果是【1】.
int a[3]={1,2,3},(*p)[3]=&a;
*(p[0]+1)=6;
printf(""%d%d%d"",a[0],a[1],a[2]);" 163
34 "下面程序段的输出结果是【1】.
int a[3]={2,4,6},*p=a+1;
printf(""%d"",*--p);" 2
35 "下面程序段的运行结果是【1】.
char a[]=""language"",*p;
p=a;
while(*p!='u')
{printf(""%c"",*p); p++;}" lang
36 "下面是指针变量p的定义语句,p指向的数组有【1】个int型元素.int (*p)[2][3][4];"
24
37 "有如下二维数组定义:int a[3][4];可以把a[0]看做一个【1】维数组名。"
1□一□壹
38 某个变量允许被多个函数访问,该变量应该在函数的【1】部定义. 外
39 在C语言中,实参与形参之间的数据传递是【1】向的值传递. 单□单方
40 "C语言的fgetc()和fread()两个函数都能够从文件中读取字符,当需要从二进制文件成批输入相同类型的数据时,应该使用【1】函数." fread□fread()□fread( )□第二个
41 C语言的数据文件分为文本文件和【1】文件两种. 二进制□2进制
42 "C语言对文件的输入输出操作是通过函数实现的.有些函数可以处理所有文件,有些函数只能处理文本文件,有些函数只能处理二进制文件.fscanf函数只能处理【1】文件."
文本□ASCII
43 C语言中的文件的存储方式可以是顺序存取,也可是【1】. 随机存取□随机
44 "变量x由下面的语句定义,x的存储空间由成员【1】决定. union{int n;long p;}x;"
p□x.p
45 当函数fopen()打开文件失败时,函数值等于【1】.
NULL□空指针□空地址□0□\0□'\0' 46 根据数据的流向,文件操作包括输入操作和输出操作两种,feof函数用在【1】操作中.
输入□读
47 "结构体变量所占内存空间的大小等于各成员变量所占空间之和,在实际程序设计中,
应该使用运算符【1】得到结构体变量所占内存空间的大小." sizeof□sizeof() 48 "结构体是不同数据类型的数据集合,作为构造数据类型,必须先声明结构体【1】,再定义结构体变量." 类型□类型名
49 数组是一组有序的【1】数据类型变量的集合. 同□相同□同样□一样
50 "下面程序执行后,输出的结果等于【1】.
enum dt{a=7,b=1,c,d,e=8}x=d;
printf(""%d"",x);" 3
51 用fclose()函数成功地关闭一个文件后,函数值等于【1】. 0□零
52 "在下列程序段中,枚举变量c1,c2的值依次是【1】.
enum color {red,yellow,blue=4,green,white} c1,c2;
c1=yellow;c2=white;
printf(""%d,%d\n"",c1,c2);""" 1,6□1 6□1和6
53 C把括号、赋值、逗号等都作为【1】处理. 运算符
54 C语言中,只有单目运算符、【1】和赋值运算符是右结合的.
条件运算符□?:□三目运算符55 C语言中的预处理功能包括宏定义、【1】和条件编译三种.
文件包含□include□#include
56 C语言中的预处理命令都是以字符【1】开始. #
57 比较两个量的运算符称为【1】运算符. 关系
58 关键字是由C语言规定的具有特定意义的字符串,通常也称为【1】. 保留字
59 空格符、制表符、换行符等统称为【1】. 空白符
60 若数组a有10个元素,表达式sizeof(a[3])的值是4,则表达式sizeof(a)的值是【1】. 40
三、选择题
1 在C语言中,形参的缺省存储类别是()。
A:auto B:register C:static D:extern 答案:A
2 "有以下程序
void fun(int n,int *p)
{ int f1,f2;
if(n==1||n==2) *p=1;
else
{ fun(n-1,&f1);
fun(n-2,&f2);
*p=f1+f2;}
}
main( )
{ int s;
fun(3,&s);
printf(""%d\n"",s);
}
程序的运行结果是( )."
A:2 B:3 C:4 D:5 答案:A
3 C语言允许函数类型缺省定义,此时函数值隐含的类型是().
A:float B:int C:long D:double 答案:B
4 "假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROG ABCDEFGH IJKL<回车>,则输出结果为( ).
main( int argc, char *argv[])
{ while(--argc>0)
printf(""%s"",argv[argc]);
printf(""\n"");
}"
A:ABCDEFG B:IJHL C:ABCDEFGHIJKL D:IJKLABCDEFGH 答案:C
5 "请阅读以下程序:
void fun(int s[])
{ static int j=0;
do
{s[j]+=s[j+1];}while(++j<2);
}
main( )
{ int k,a[10]={1,2,3,4,5};
for(k=1;k<3;k++) fun(a);
for(k=0;k<5;k++) printf(""%d"",a[k]);
}
上面程序的输出是( )."
A:34756 B:23445 C:35745 D:12345 答案:C
6 "以下程序的输出结果是( ).
int fun(int n,int *s)
{ int f1,f2;
if(n==0‖n==1) *s=1;
else
{ fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main( )
{ int x;
fun(6,&x);
printf(""\n%d"" ,x);
}"
A:7 B:13 C:9 D:10 答案:B
7 以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序.
void f(int b[],int n,int flag)
{ int i,j,t;
for(i=0;i for(j=i+1;j if(flag?b[i]>b[j]:b[i] } main( ) { int a[10]={5,4,3,2,1,6,7,8,9,10},i; f(&a[2],5,0); f(a,5,1); for(i=0;i<10;i++) printf("%d,",a[i]); } 程序运行后的输出结果是( ). A:1,2,3,4,5,6,7,8,9,10, B:3,4,5,6,7,2,1,8,9,10, C:5,4,3,2,1,6,7,8,9,10, D:10,9,8,7,6,5,4,3,2,1, 答案:B 8 "有如下程序: long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main( ) { printf(""%d\n"",fib(3));} 该程序的输出结果是( )." A:2 B:4 C:6 D:8 答案:B 9 "有以下程序 main(int argc, char *argv[]) { int n=0, i; for (i=l; i n=n*10+*argv[i] - '0'; printf(""%d\n"", n); } 编译连接后生成可执行文件tt.exe.若运行时输入以下命令行 tt 12 345 678 程序运行后的输出结果是( )." A:12 B:12345 C:12345678 D:136 答案:D 10 "有以下程序 void f(int n, int *r) { int rl=0; if (n%3==0) r1=n/3; else if(n%5==0) r1=n/5; else f(--n, &r1); *r=r1; } main( ) { int m=7, r; f(m,&r); printf(""%d"", r); } 程序运行后的输出结果是( )." A:2 B:1 C:3 D:0 答案:A 11 在C语言中,形参的缺省存储类别是(). A:auto B:register C:static D:extern 答案:A 12 "对下述程序的判断中,正确的是( ). #include ""stdio.h"" void main( ) { char*p,s[128]; p=s; while(strcmp(s,""End"")) { printf(""请输入一个字符串:""); gets(s); while(*p) putchar(*p++); } }" A:此程序循环接收字符串并输出,直到接收字符串"End"为止 B:此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止 C:此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作 D:此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串答案:A 13 判断字符串s1是否等于字符串s2,应当使用( ). A:if (s1==s2) B:if (s1=s2) C:if (strcpy(s1,s2)) D:if (strcmp(s1,s2)==0) 答案:D 14 有以下程序: #include "stdio.h" main( ) { int c; while((c=getchar( ))!='\n') { switch(c-'2') { case 0: case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); case 4:putchar(c+3);break; } } printf("\n"); } 程序运行时输入:2743后回车,程序的输出结果是( ). A:66877 B:668966 C:6677877 D:6688766 答案:A 15 "阅读下列程序,则在执行后,程序的运行结果为( ). #include ""stdio.h"" #include ""string.h"" main( ) { char a[30]=""nice to meet you!""; strcpy(a+strlen(a)/2,""you""); printf(""%s\n"",a); }" A:nice to meet you you B:nice to C:meet you you D:nice to you 答案:D 16相同结构体类型的变量之间可以( ). A:相加B:赋值C:比较大小D:地址相同答案:B大一C语言期末考试题