C语言期末考试题库

一、单项选择题
1.已知int a,b;下列switch语句中正确的是( b )。
 A. switch(a)
{case a: a++;break;
case b: b++;break;}
 B. switch(a+b)
{case 1: a+b;break;
case 2: a-b;break;}
 C. switch(aa)
{case 1,2:++a;
case 3,4:–b;}
 D. switch(a/0.5+b)
{case 5-a:a/5;break;
default:a+b;}
2.若有如下语句,则下面正确的描述是 ( b )。
char x[ ]=“12345”;
char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};
A. 数组x和数组y的长度相同
B. 数组x的长度大于y数组的长度
C. 数组x等价于数组y
D. 数组x的长度小于数组y的长度
2.若有如下语句,则下面正确的描述是 ( b )。
char x[ ]=“12345”;
char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’};
A. 数组x和数组y的长度相同
B. 数组x的长度大于y数组的长度
C. 数组x等价于数组y
D. 数组x的长度小于数组y的长度
3.scanf ( ) 函数的正确调用形式是( d )。
A.scanf(格式控制串,输出项表列);
B.scanf(格式控制串,输出项地址表列);
C.scanf(格式控制串,输入项表列);
D.scanf(格式控制串,输入项地址表列);
4.下列说法正确的是( c )。
A. C 语言的主函数不允许有参数
B. C 语言的主函数最多允许 1 个参数
C. C 语言的主函数可以无参数
D. C 语言的主函数允许任意个参数
5.表达式 (!‘1’||‘1’)+5 的值是( c )。
A. 不确定 B. 5 C. 6 D. 7
7.若有以下定义和语句, char s1[]=“12345”, s2[]=“1234”;则函数strcmp(s1,s2)的值为( a )。
A. 大于0 B. 小于 0 C. 等于0 D. 等于1
8.选出表达式结果为假的一项( b )。
A. 1<4&&5>=4 B. (2>5==5) C. (3<=3)&&(2<5) D. !(4<=8)||(3<=7)
9.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( a )。
A. auto B. static C. extern D. register
10.下列表达式中,( a )是非法的。
已知float a=5;int b=4;
A. a%3+b B. b
b&&a||b C. (a>b)+(int)b%2 D. --b+a
11.下列运算符中,优先级别最高的是( b )。
A. <= B. % C. || D. +
12.关于下列语句描述正确的是( b )。
union
{ unsigned int n;
unsigned char c; }u1;
A. u1是共用体类型名
B. u1是共用体变量名
C. u1是结构体类型名
D. u1占用内存空间3字节
13.设有int x,y;正确的输入语句是( c )。
A. scanf(“%d%d”,x,y);
B. scanf(“x=%f,y=%f”,&x,&y);
C. scanf(“%d,%d”,&x,&y);
D. scanf(“x=%d,y=%d”,x,y);
14.在一个C语言程序中( b )。
A. main函数必须出现在所有函数之前
B. main函数可以在任何地方出现
C. main函数必须出现在所有函数之后
D. main函数必须出现在固定位置
15.有关预处理命令#define N 10,以下描述正确的是( c )。
A. N在程序运行时可以被改变
B. N是个整型变量
C. N没有值和类型的含义
D. N是个标识符,称为宏体
16.当调用函数时,实参是一个数组名,则向函数传送的是( b )。
A. 数组的长度
B. 数组的首地址
C. 数组每一个元素的地址
D. 数组每个元素中的值
17.有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf(“%d”,i);
case 2: printf(“%d”,i);
default: printf(“%d”,i);
}
}
执行后输出的结果是 ( a )。
A. 011122 B. 012
C. 012020 D. 120
18.以下程序的输出结果是( d )。
#define M(x,y,z) xy+z
main()
{ int a=1,b=2, c=3;
printf(“%d\n”, M(a+b,b+c, c+a));
}
A. 19 B. 17
C. 15 D. 12
19.下列程序的输出结果是( d )。
main()
{ char a[10]={9,8,7,6,5,4,3,2,1,0},p=a+5;
printf(“%d”,p);
}
A. 非法 B. a[4]的地址
C. 5 D. 4
20.函数fun(float x)的函数类型是( a )。
A. int B. void
C. float D. 不确定
21.关于C程序说法正确的是( c )。
A. 一行只能写一条语句
B. 一个语句不可以分写在多行上
C. C语言本身没有输入输出语句
D. 分号不是C语句的必要组成部分
22.关于语句FILE fp;描述错误的是( c )。
A. fp是一个指向FILE类型的指针变量
B. 通过fp可以实现对与它相关文件的访问
C. fp指向与它相关文件的地址
D. 函数fclose(fp)可关闭fp指针指向的文件
23.假定x和y为double型,则表达式x=2,y=x+3/2的值是( d )。
A. 3.500000 B. 3
C. 2.000000 D. 3.000000
24.下列运算符结合方向是右结合的是( d )。
A. + B. &&
C. >= D. ?:
25.以下语句中不正确的是( a )。
A. char s[10];s=“test”;
B. char s[]={‘t’,‘e’,‘s’,‘t’};
C. char s[20]=“test”;
D. char s=“test\n”;
26.有以下程序段
int k=0;
while(k=1) k++;
while 循环执行的次数是( a )。
A.无限次
B.有语法错,不能执行
C.一次也不执行
D.执行1次
27.关于else语句描述正确的是( c )。
A. 不可缺少
B. 必须与离之最近的if语句配对使用
C. 不可以单独使用
D. 必须使用缩进格式表示
28.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( c )。
A. 0 B. 1
C. 2 D. 3
29.合法的赋值语句是( b )。
A. x=y=100
B. d–;
C. x+y;
D. c=int(a+b);
30.以下程序段的输出结果是( c )。
int x=3;
do
{ printf(“%3d”,x-=2);
}while(!(–x));
A. 1 B. 3 0
C. 1 -2 D. 死循环
31.只有当整数x为奇数时,表达式为逻辑“真”的是( b )。
A. x%20
B. !(x%2
0)
C. (x-x/2
2)0
D. !(x%2)
31.下列程序段的输出结果是( a )。
for(a=1;a<=10;a++)
if(a%3
1)break;
printf(“%d\n”,a);
A. 1 B. 2
C. 3 D. 4
32.以下叙述中正确的是( b )。
A. 全局变量的作用域一定比局部变量的作用域范围大
B. 静态(static)类别变量的生存期贯穿于整个程序的运行期间
C. 函数的形参都属于全局变量
D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值
33.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5)); ,该函数调用语句中,含有的实参个数是( a )。
A. 3 B. 4
C. 5 D. 有语法错误
34.与y=(x!=0?1:-1);功能相同的if语句是( b )。
A.if(x<>0) y=1;
else y=-1;
B.if(x) y=1;
else y=-1;
C.if(x) y=-1;
else y=1;
D.if(x>=0) y=1;
35.以下能正确定义数组并正确赋初值的语句是( d )。
A. int N=5,b[N][N];
B. int a[0][2]={{1},{3}};
C. int c[2][]={{1,2},{3,4}};
D. int d[3][2]={{1,2},{3,4}};
36.下列选项中合法的字符常量是 ( b )
A. “&” B. ‘R’
C. “ABC” D. “\n”
37.若有如下定义:
    int a[10];
则下面不能正确表示 a[1]地址的 表达式是( d )。
A. &a[1] B. &a[0]+1
C. a+1 D. a++
38.若有以下程序:
main ( )
{ int a[3][3]={1,2,3,4,5,6,7,8,9} , i=0,sum=0;
do
{ sum+=a[i][i];
i++;
} while(i<3);
printf( “%d” , sum ); }
则程序运行后的输出结果是 ( a )。
A. 15 B. 12
C. 16 D. 18
39.下列数组声明中不正确的是( c )。
A.char a[4] ;
B. char a[ ][4]={“aa”,“”};
C. char a[4][ ];
D.char a[5][4];
40.有以下声明语句:
struct x
{ int a ; float b; char c; } y ; 则下列叙述中不正确的是 ( b )。
A. x 是定义的结构体名.
B. y 是定义的结构体类型名.
C. struct是结构体类型的关键字.
D. a,b,c 都是结构体成员名.
41.已知int t=0;则以下关于 while(t=1){. . .}的说法正确的是( c )。
A. 循环控制表达式不正确
B. 循环控制表达式的值永远为1
C. 死循环,永远无法结束
D. 一次循环体都不会执行.
42.int x=3,y=4,a=5,b=6; 则表达式(a=x) &&(b=y)的值是 ( b )。
A. 0 B. 1
C. 2 D. 不确定
43.执行以下程序后的输出结果为( b )。
   # include <stdio.h>
main()
{ int i;
for (i=‘A’; i<‘I’;i++,i++)
printf(“%c”,i+32); printf(“\n”); }
A. abcdefghi B. aceg
C. acegi D.编译出错,无输出。
44.以下关于宏替换的叙述不正确的是( d )。
A. 宏替换不占用运行时间
B. 宏替换只是字符替换,不作语法检查
C. 宏名称无类型
D. 宏名称必须用大写字母表示
45.一个C语言程序由若干个函数组成,其中唯一不可缺少的函数是( d )。
A. 库函数 B. scanf 函数
C. printf函数 D. main函数
46.下面程序的输出是( a )。
main()
{ int a[10]={1,2,3,4,5};
   printf(“%d\n”,a[6]);
}
A. 0 B. 1 C. 2 D. 3
47.若有 static char s[10 ]=“abcdefg”; 则数组 s 所占的字节数是( b  )。
A.7 B. 10
C. 11 D. 8
48.下列程序的功能是 ( a )
main ( )
{
int s[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int m,n;
for (m=0;m<4;m++)
{ for (n=0;n<=m;n++)
printf(“%d”,s[m][n]);
printf(“\n”);
} }
A.输出4×4矩阵的下三角的元素.
B.输出4×4矩阵的上三角的元素.
C.输出4×4矩阵的对角线上的元素.
D.输出4×4矩阵的全部元素.
49.执行语句for ( x=4; x–>0 ; );后,变量x 的值是 ( a )。
A. -1 B. 0
C. 1 D.不确定
50.若有以下程序:
main ( )
{ int x[6]={11,16,17,28,20}, t=x+3;
printf (“%d” ,t-2);
}
则程序运行后的输出结果是 ( d )。
A. 18 B. 14
C. 29 D. 26
51.表达式x 和y 的取值同时在 ( 0, +∞) 或 同时在 (-∞, 0) “的表达式是 ( c ) 。
A. (x+y>0) && (x+y<=0)
B. (x>=0 | | y>=0) && (x<0 ||y<0)
C. x>0&&y>0 || x<0 && y<0
D. (x>=0&&y>=0) &&(x<0&&y<0)
52.有以下程序:
main( )
{ int n,s[8];
for ( n=1; n<=8;n++)
s[8-n]=n;
printf (”%d%d%d" ,s[2],s[4],s[6] ); }
则程序运行后的输出结果是 ( c )。
A. 246 B. 741
C. 642 D. 147
53.设int x=12,y=12345;则执行语句printf(“x=%4d,y=%4d”,x,y);的结果是( c )。
A. x= 12,y=1234
B. x=12,y=12345
C. x= 12,y=12345
D. x= 12,y=2345
54.C 语言规定函数返回值的类型由( a )。
A.在定义函数时所指定的函数类型所决定。
B.调用该函数时 的主调函数的类型所决定。
C.return语句中的表达式的类型所决定。
D.调用该函数时系统临时决定。
55.while 循环和 do -while 循环的区别是( c )
A. while 循环和 do -while 循环的循环体都可以不执行;
B. while 循环的循环体将至少执行一次,而do -while 循环的循环体可以不执行;
C. do- while 循环的循环体将至少执行一次,而while 循环的循环体可以不执行;
D. while 循环和 do -while 循环的循环体都将至少执行一次。
56.下列程序的执行结果是( c )。
main()
{ int n=9; while(n>6) printf(“%d”,n–);}
A. 9876 B. 876
C. 987 D. 8765
57.下列说法正确的是( d )。
A. C 语言能嵌套定义函数,但不能嵌套调用函数
B. C 语言不能嵌套定义函数,也不能嵌套调用函数
C. C 语言能嵌套定义函数,也能嵌套调用函数
D. C 语言不能嵌套定义函数,但能嵌套调用函数
58.a,b,c,d 都为float 型,且已正确赋值,则与数学表达式2ab/(5cd)等价的 C语言表达式是( a )。
A. a/c
b/d
2/5 B. a/(5
c
d)/2
b
C. 2
ab/5cd D. 2/5ab(1/cd)
59.下列程序的执行结果是( b )。
main()
{ int a,b,c; c=(a=3,b=a–);
 printf(“%d,%d,%d”,c,a,b); }
A. 3,3,3 B. 3,2,3
C. 2,3,3 D. 2,2,3
60.有如下定义:int a=3,b=-4; long c=5; float x; double y ; 则下列选项中不符合C语言语法的表达式是( c )。
A. a+=a-=a
b B. a%b
C. y=2*x; D. y=(float)c

1.在C语言中函数的隐含存储类型是( a )。
A. auto B. static
C. extern D. 无存储类型
2.执行语句for(i=1;i++<4;);后,变量i的值为( c )。
A. 3 B. 4
C. 5 D. 不定
3.以下说法不正确的是( c )。
A. C语言中函数和变量一样有数据类型
B. 函数即使没有参数,也不可以缺少函数名后的一对圆括号
C. 函数带有形参时,形参必须是变量
D. 对不需要函数返回值的函数,应定义为void类型
4.以下所列的各函数原型中,正确的是( c )。
A. void fun(var a:int,var b:int);
B. void fun(int a,b);
C. void fun(int a,int b);
D. void fun(a as int ,b as int);
5.若有定义和语句:char s[10];s=“abcd”;printf(“%s\n”,s);则结果是( d )。
A. 输出abcd B. 输出a
C. 输出abcd\n D. 编译不通过
6.关于数组元素的下标描述正确的是( c )。
A. 必须是常量;
B. 只能从0开始;
C. 必须是整型表达式
D. 下标的个数表示数组的长度
7.下列常数中哪个是不合法的C常量( c )。
A. -0. B. 0003
C. 3e+2.3 D. “105”
8.在C程序中,设有说明: static int a[2][3]={ 1,2,3,4,5,6 }; 则下列表达式对a数组中的元素值引用正确的是( b )。
A. a(1)(2) B. *a
C. a[1,2] D. a[0][3]
9.下列运算符中,优先级别最高的是( c )。
A. <= B. =
C. % D. &&
10.关于C程序说法正确的是( c )。
A. 一行只能写一条语句
B. 一个语句不可以分写在多行上
C. C语言本身没有输入输出语句
D. 分号不是C语句的必要组成部分
11.C语言中的if(表达式)语句里,表达式可以是( b )。
A. 逻辑表达式、关系表达式
B. 任何合法的表达式
C. 赋值表达式
D. 逻辑、关系和赋值表达式
12.float i,j,下列可以正确表示把i,j之和转换成整型的C语言表达式( c )。
A. int(i+j) B. int(i)+int(j)
C. (int)(i+j) D. (int)i+j
13.下列标识符中非法的是( a )。
A. FILE B. temp
C. stu_ave D. sum5
14.程序段:int x=10, y=3,z;
printf(“%d\n”,z=(x%y,x/y));的输出结果是:( c )。
A. 1 B. 0
C. 3 D. 4
15.以下程序的输出结果是( c )。
main()
{ int i,a[10];
for(i=9;i>=0;i–)
a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A. 258 B. 741
C. 852 D.369
16.下列说法正确的是( a )。
A. continue语句只能用于循环语句中
B. switch语句中必须有default语句
C. break语句只用于循环语句内
D. break终止本次循环 ,continue终止本重循环
17.关于函数的说法不正确的是( a )。
A. 被调用函数的定义必须放在主调函数之前
B. 函数调用可以嵌套
C. 程序的入口是从main()开始
D. 各函数之间是平行的,相互独立的
18.已知int a,b;则下列表达式不合法的是 ( b )。
A. a/b B. (a+b)++
C. a+=b D. a
=b+3
19.C语言中do {循环体}while( 表达式);语句中,说法正确的是( b )。
A. 循环体可能一次也不执行
B. 循环体会至少执行一次
C. 循环体必须用{}组成复合语句
D. 表达式的值为0时,返回循环体执行循环内容
20.下列属于C语言基本数据类型的是( c )。
A. 整型、实型、逻辑型
B. 整型、字符型、逻辑型
C. 整型、字符型、实型
D. 整型、实型、字符型、逻辑型
21.若给出以下定义:
char a[]=“abcdefg”;
char b[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};
正确的叙述为( c )。
A. 数组a与数组b等价
B. 数组a与数组b的长度相同
C. 数组a的长度大于数组b的长度
D. 数组a的长度小于数组b的长度
22.执行以下程序后的结果为( a )。
main( )
{int i=1;
while(i<=5)
printf(“%d,”,i++);}
A. 1,2,3,4,5, B. 2,3,4,5,6,
C. 2,3,4,5, D. 1,2,3,4,

23.以下描述中正确的是( c )。
A. 预处理指完成宏替换和文件包含中指定的文件的调用
B. 预处理命令也是C语句
C. 凡是行首以#开始的控制行都是预处理命令
D. 预处理命令只能放在程序的开头

24.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( b )。

A. 地址传递		
B. 单向值传递		
C. 由实参传给形参,再由形参传给实参
D. 传递方式由用户指定

25.为表示关系’a’≤x≤’z’ ,C 语言表达式应是( a )。
A. (x<=‘z’)&&(x>=‘a’)
B. (x<=‘z’)&(x>=‘a’)
C. (x<=‘z’) and (x>=‘a’)
D. (x<=‘z’)||(x>=‘a’)

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汇潮学堂

你的鼓励才是我的最大收获

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值