C语言程序设计期末复习基础50道选择题

如果你正在寻找一份,以“C语言基础入门”作为核心内容,涵盖50道选择题的教程,那么这就是你需要的。这份教程是基于C语言编程入门新手们进行设计的。这一部分包含50道以基础理论、基础C语法的选择题,这将是你检验学习效果的最好方式。这些题目覆盖了C语言的基础知识并给出题目的解析,希望通过这些题目,可以帮助你更好的理解和运用C语言。
如果有任何建议和需要改进的地方,欢迎随时提出。

1、下面关于C语言的叙述中,正确的是( )
选项:
A. 每行只能写一条语句
B. 程序中必须包含有输入语句
C. main函数必须位于文件的开头
D. 每条语句最后必须有一个分号

答案:D
解析:在C语言中,不同于Python,一行可以写多条语句,只需要用分号进行分隔。程序不强制必须有输入语句,完全取决于业务需要。main函数没有位置要求,它是入口函数,编译器自动定位,不需要是文件的第一个函数。每条C语言语句的末尾必须有一个分号,它是语句结束的标志。

2、下面关于C语言的叙述中,错误的是( )
选项:
A. 若一条语句较长,也可分写在下一行上
B. 构成C语言源程序的基本单位是表达式
C. C语言源程序中大、小写字母是有区别的
D. 一个C语言源程序可由一个或多个函数组成

答案:B
解析:C语言中的一条语句如果太长,确实可以分成几行书写。C语言的源程序是由一条条的语句和多个函数组成,但不是由表达式构成的。在C语言中大小写字母是有区别的。

3、关于C语言数据类型的叙述,正确的是( )
选项:
A. 枚举类型不是基本类型
B. 数组不是构造类型
C. 变量必须先定义后使用
D. 不允许使用空类型

答案:C
解析:在C语言中,所有的变量必须电焊后才能使用。对于A、B、D选项,枚举是一种派生类型,不是基础类型,数组是一种构造类型,空类型是可以的,比如void类型。

4、C程序中main函数的位置( )
选项:
A. 必须在最开始
B. 必须在系统库函数后面
C. 可以在自定义函数后面
D. 必须在最后

答案:C 解析:main函数是C程序的入口,它可以出现在源文件的任何位置,但无论其在源文件中的位置如何,程序执行时都是从main函数开始的。

5、C语言的函数体由( )括起来
选项:
A. ( )
B. { }
C. [ ]
D. /* */

答案:B
解析:在C语言中,函数体是由花括号({ })括起来的。

6、关于C语言的叙述中,不正确的是()
A. C程序可由一个或多个函数组成
B. C程序必须包含一个main()函数
C. C程序的基本组成单位是函数
D. 注释说明只能位于一条语句的后面

答案:D
解析:在C语言中,注释可以位于代码的任何地方,不必非要在一条语句的后面。因此,选项D不正确。

7、一个程序的执行是从()
A. 本程序的第一个函数开始,到最后一个函数结束
B. 本程序的main函数开始,到main函数结束
C. 本程序的main函数开始,到最后一个函数结束
D. 本程序的第一个函数开始,到main函数结束

答案:B
解析:一个C语言程序的执行始终从main()函数开始,当main函数执行结束后,程序也会随之结束。因此,答案是选项B。

8、结构化程序设计的三种基本结构是( )
A. 函数结构、分支结构、判断结构 B. 函数结构、嵌套结构、平行结构
C. 顺序结构、分支结构、循环结构 D. 分支结构、循环结构、嵌套结构

答案:C
解析:在结构化程序设计中,我们通常会使用到三种基本的设计结构,即顺序结构、分支结构和循环结构。因此,相对于其他选项,选项C是最正确的。

9、调试程序是指对程序进行()
A. 编辑 B. 编译 C. 查错和排错 D. 连接

答案:C
解析:调试程序主要是指查错和修复错误的过程,包括单步调试、设置断点、查看变量值等操作。选项C是正确的。

10、C语言中,复合语句的构成是将一系列语句置于()
A. begin与end之间
B. 一对圆括号“( )”之间
C. 一对花括号“{ }”之间
D. 一对方括号“[ ]”之间

答案:C
解析:在C语言中,复合语句是以一对花括号括起来的一组语句,它在语法上被视为一个单一的语句。因此,答案是选项C。

11、构成C语言源程序的基本单位是()
A. 语句 B. 过程 C. 表达式 D. 函数

答案:D
解析:在C语言中,函数是构成源程序的基本单位。源代码文件由一个或多个函数组成,程序从main函数开始执行。

12、在C语言中,正确的用户标识符是()
A. 3f B. _for C. struct D. _f.5

答案:B
解析:C语言的标识符由字母、数字和下划线组成,且必须以字母或下划线开头。因此,选项B"_for"是正确的标识符。

13、C语言的基本数据类型包括()
A. 整型、实型、字符型 B. 整型、实型、字符型、逻辑型
C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型

答案:A
解析:C语言的基本数据类型包括整型、浮点型(实型)和字符型。C语言中没有内置的逻辑类型。

14、以下()是正确的常量
A. E-5 B. 1E5.1 C. ‘a12’ D. 32766L

答案:D
解析:在C语言中,D选项代表的是一个长整型的常量。其他选项中,A选项代表的是1.0*10^-5,是一个合法的双精度浮点型常量;B选项无效,因为科学计数法的形式应为一个实数跟着E或e,然后跟着一个整数,而这里的1E5.1不满足该条件;C选项无效,因为字符常量只能包含一个字符,而这里的‘a12’包含了多个字符。

15、以下()是正确的变量名
A. a.bee B. –p11 C. int D. p_11

答案:D
解析:在C语言中,变量名可以包含字母、数字和下划线,但必须以字母或下划线开头。因此,选项D "p_11"是正确的。

16、以下()是正确的字符常量
A. “c” B. ‘//” C. ‘W’ D. “\32a”

答案:C
解析:在C语言中,字符常量由单引号引起来的一个字符,如C选项‘W’。

17、以下()是不正确的字符串常量
A. ‘abc’
B. “12’12”
C. “0”
D. “ “

答案:B
解析:在C语言中,字符串常量是由双引号引起来的字符序列。因此,选项B "12’12"是不正确的,它使用了单引号。

18、C语言的整型数据在内存中的存储形式是()
A. 原码 B. 反码 C. 补码 D. ASCII码

答案:C
解析:C语言中,整数在内存中的存储形式是补码。

19、以下()是正确的浮点数
A. e3 B. .62 C. 2e4.5 D. 123

答案:B
解析:在C语言中,正常的浮点数忽略前置零,因此选项B ".62"是正确的浮点数表示

20、下列不属于C语言关键字的是()
A. continue B. integer C. static D. signed

答案:B
解析:在C语言中,“continue”, "static"和"signed"都是关键字,但"integer"不是C语言的关键字,所以选项B "integer"是正确答案。

21、C语言的字符型数据在内存中的存储形式是()
A. 原码 B. 补码 C. 反码 D. ASCII

答案:D
解析:C语言中字符型数据在内存中的存储形式是ASCII码。

22、在C语言中,变量所分配的内存空间大小是()
A. 由变量的类型决定
B. 由用户自己决定
C. 任意的
D. 均为两个字节

答案:A
解析:变量的内存空间大小由其类型决定。

23、若有定义:int a=2;则正确的赋值表达式是()
A. a-=(a3) B. double(-1) C. a3 D. a*4=3

答案:A
解析:正确的赋值表达式应该将某个值赋给一个变量,因此A选项“a-=(a*3)”是正确的。

24、语句x=(a=3,b=++a);运行后,x、a、b的值依次为()
A. 3,3,4 B. 4,4,3 C. 4,4,4 D. 3,4,3

答案:C
解析:逗号运算符按照从左到右的顺序计算表达式,并返回最后一个表达式的值,所以x、a、b的值依次为4,4,4。

25、语句a=(3/4)+3%2;运行后,a的值为()
A. 0 B. 1 C. 2 D. 3

答案:B
解析:在C语言中,整数除法会取整,因此3/4为0,3%2为1,所以a的值为1。

26、以下四项中,符合C语言语法的语句是()
A. int a+b=c;
B. int a=12:b=12:c=12;
C. int a=12,b=12,c=12;
D. int a,b=12,float c=21

答案:C
解析:同时定义多个同类型变量时,应该使用逗号分隔变量名,所以C选项符合C语言语法。

27、若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为()
A. 3,3 B. 4,4 C. 4,3 D. 3,4

答案:C
解析:逗号表达式返回的是其最后一个子表达式的值,所以a的值为3,x的值为4。

28、若变量已正确定义并赋值,符合C语言语法的表达式是()
A. a=8+b+c,a++
B. a=3a
C. int(12.3%4)
D. a=a+1=c+b

答案:D
解析:只有赋值符右边的值能够赋给左面的变量,所以选项D是符合C语言语法的。

29、若有定义:int a,b;double x;则以下不符合C语言语法的表达式是()
A. x%(-3)
B. a+=-1
C. a=b=2
D. x=a+b

答案:A
解析:在C语言中,只有整数才能参与模运算。

30、若有定义:int x=2,y=3;float i;则以下符合C语言语法的表达式是()
A. x=x*3=2
B. x=(y==1)
C. i=float(x)
D. i%(-3)

答案:B
解析:C语言中的比较运算符==可以用于判断两个值是否相等,返回值为布尔类型。

31、若有定义:int x;则语句x=(2*3)+6%5;运行后,x的值是()
A. 8
B. 7
C. 6
D. 5

答案:B
解析:运算符的优先级为先乘法,后加法,最后取模,所以x的值为7。

32、下面关于C语言变量的叙述中,错误的是()
A. 可以用const关键字定义变量 B. 在C程序中,SUM和sum是不同的变量
C. 变量名必须由字母或下划线组成 D. 变量的类型确定了变量的取值范围

答案:C
解析:C语言变量名必须以字母或下划线开头,并且可以包含字母、数字和下划线。

33、若有定义:int x=5,y=6;则表达式x=(y==6)的值为()
A. 5 B. 1 C. 6 D. 0

答案:B
解析:==是判断是否相等的操作,如果y等于6,则表达式的值为1,否则为0。

34、下面叙述正确的是()
A. 2/3与2.0/3.0等价
B. (int)2.0/3与2/3等价
C. ++5与6等价
D. ‘A’与”A”等价

答案:B
解析:(int)2.0/3与2/3等价,都是先进行强制类型转换,再进行除法运算。

35、下面叙述中,错误的是()
A. C语言基本的算术运算符不包含模运算符”%”
B. 算术运算符的优先级高于关系运算符
C. 自加和自减运算符的结合方向是”自右向左”
D. C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行

答案:A
解析:C语言基本的算术运算符包括模运算符”%”。

36、下面叙述正确的是()
A. 强制类型转换运算的优先级高于算术运算
B. 若a和b是整型变量,(a+b)++是合法的
C. ‘A’*’B’是不合法的
D. “A”+”B”是合法的

答案:A
解析:强制类型转换运算的优先级高于算术运算。

37、若有定义:int i=1,j=5;则表达式(++j)*(i–)的值为()
A. 1 B. 0 C. 6 D. 7

答案:D
解析:先进行的是前置++运算,j变为6,然后进行乘法,乘以i的值1,然后i进行后置–运算,所以i的值变为0,表达式的值为7。

38、设整型变量a为5,使b不为2的表达式是()
A. b=(++a)/3
B. b=6-(–a)
C. b=a%2
D. b=a/2

答案:A
解析:只有选项A中,a的值达到了6,所以表达式(a=6)/3值为2,其余选项得出的结果都为2

39、若有定义:int a=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为()
A. 1 B. 0 C. 2 D. 3

答案:C
解析:由于运算符的短路性质,如果++a的结果为true,那么++b&&++c就不会被执行,所以b的值还是2。

40、若有定义:int i,j;则表达式(i=2,j=5,i++,i+j++)的值是()
A. 7 B. 8 C. 9 D. 10

答案:D
解析:在逗号表达式中,最后的结果是最后一个表达式的值,所以i的值为3,j的值为5,所以i+j++的值为8,然后j进行后置++操作,所以结果为10。

41、若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是()
A. 7 B. 8 C. 9 D. 10

答案:B
解析:逗号表达式的值为最后一个表达式的值。因此,a+b的值为7(2+5),但是注意b进行了后置自增操作,此时b的值为6,所以最终的结果为2+6,即8。

42、若有定义:int i=2,j=5;则表达式(i+1,j+1,(++i+(j–))的值为()
A. 8 B. 6 C. 7 D. 5

答案:C
解析:逗号运算符从左向右执行操作,取最后一个表达式的值。因此,此表达式的值为++i+(j–),其中i先自增1变为3,加上j先取值再自减1为4,结果为7。

43、若已定义:int i=3,k;则语句k=(i–)+(i–);运行后k的值为()
A. 4 B. 5 C. 6 D. 7

答案:C
解析:i–是后置自减运算,这意味着在这个表达式中,i的值被取出后,i才进行自减。因此,(i–)+(i–)的结果是 3 + 2,即5。

44、C语言的运算符按运算对象的个数可以分为()
A. 单目运算符一种
B. 单目和双目运算符
C. 单目、双目和三目运算符
D. 单目、双目、三目和四目运算符

答案:C
解析:在C语言中,运算符按运算对象的个数可以分为单目、双目和三目运算符。

45、若已定义:float m;拟从键盘输入135.78这一数据给变量m,则应选用的语句是()
A. scanf(“%5.2f”,&m);
B. scanf(“%3.2f”,&m);
C. scanf(“6.2f”,&m);
D. scanf(“6f”,&m);

答案:A
解析:%5.2f表示宽度为5的浮点数,其中有2位小数。

46、已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是()
A. scanf(“%ld”,&a);
B. scanf(“%lf”,&a);
C. scanf(“%c”,&a);
D. scanf(“%u”,&a);

答案:B
解析:%lf标记用于读取一个double类型的输入。

47、已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是()
A. scanf(“%d”,&a);
B. scanf(“%lf”,&a);
C. scanf(“%c”,&a);
D. scanf(“%u”,&a);

答案:D
解析:%u是用于无符号整型,不适用于字符类型。

48、putchar()函数的功能是向终端输出()
A. 多个字符 B. 一个字符 C. 一个实型变量值 D. 一个整型变量表达式

答案:B
解析:putchar()函数的功能是向终端输出一个字符。

49、以下程序段运行后的输出结果是()

int k=11;
printf(“k=%d,k=%o,k=%x\n”,k,k,k);

A. k=11,k=13,k=c
B. k=11,k=12,k=13
C. k=11,k=13,k=b
D. k=11,k=13,k=a

答案:A
解析:printf函数中,%d用于输出十进制,%o用于输出八进制,%x用于输出十六进制。因此,k的十进制输出为11,八进制输出为13,十六进制输出为b (十一在十六进制中表示为b)。

50、若有定义:int x=1234,y=123,z=12;则语句printf(“%4d+%3d+%2d”,x,y,z);运行后的输出结果为()
A. 123412312
B. 12341234123412341231231231212
C. 1234+1234+1234
D. 1234+123+12

答案:D
解析:在printf函数中,%4d,%3d,%2d指定输出的宽度,前方不足的部分用空格补充。所以输出结果才是1234+123+12的形式。

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值