C语言基础期末复习题(带详解答案)

 1. 以下不是C语言的特点的是(  C  )

A、C语言简洁,紧凑                          B、能够编制出功能复杂的程序

C、C语言可以直接对硬件进行操作    D、C语言的移植性好

2. 一个C程序是由(   )B

A、一个主程序和若干个子程序组成    B、一个或多个函数组成

C、若干过程组成                    D、若干子程序组成

3.以下描述正确的是 (       )  C

A、 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B、 do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。

C、 在do-while循环体中,不一定要有能使while后面表达式的值变成零(“假”)的操作。

D、 do-while循环中,根据情况可以省略while。

4.以下对一维整形数组a的正确说明是 (       )  D

A、 int a(10);   B、 int n=10,a[n];

C、 int n;       D、 int a[10];

5.以下对二维数组a的正确说明是 (       ) C

A、 inta[3][];         B、 float a(3,4);

C、 double a[1][4];    D、 float a(3)(4);

6.数组名作为实参传给被调用的函数时,形参获得的是(   ) C

A、 该数组第一个元素的值

B、 该数组所有元素的值

C、 该数组第一个元素的首地址

D、 该数组所有元素的首地址

7. C程序的开始是从(   )A

A、 main()函数开始,直到main()函数结束

B、 第一个函数开始,直到最后一个函数结束

C、 第一个语句开始,直到最后一个语句结束

D、 main()函数开始,直到最后一个函数结束

8.在C程序中,main()函数的位置(   )C

A、必须作为第一个函数   B、必须作为第二个函数

C、可以任意             D、必须放在它所调用的函数之后

9. C编译程序是(   )C

A、C语言的机器语言版本             B、一组机器语言指令

C、将C源程序编译成目标程序的程序   D、是由自己编制的

10.以下叙述中错误的是 (       )C

A、 C程序经过编译、连接之后形成一个真正可执行的二进制机器指令文件

B、 用C语言编写的程序称为源程序,它以ASCⅡ代码形式存放在文件中

C、 C语言中的每条可执行语句和非执行语句最终被转换成二进制的机器指令

非执行的语句不转换:例如///**/是注释的意思

D、 C语言源程序经编译后生成后缀为.obj的目标程序

1.以下不正确的C语言标识符是 (       )D

字母,数字,下划线组成,但是不能以数字开头

A、 ABC   B、 abc   C、 a_bc   D、 ab.c

12.一个C语言程序是由 (       ) B

A、 一个主程序和若干子程序组成     B、 函数组成

C、 若干过程组成                   D、 若干子程序组成

13.以下叙述错误的是 (       ) C

算法可以没有输入输入,但是一定不能没有输出

A、 算法正确的程序最终一定会结束 B、 算法正确的程序可以有零个输入

C、 算法正确的程序可以有零个输出

D、 算法正确的程序对于相同的输入一定有个相同的结果

14.设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+ i*f值的数据类型为 (       )  C

强制类型转换

A、 int   B、 float   C、 double   D、 不确定

15.以下叙述中错误的是(    )C

A、结构化程序由顺序、分支、循环三种基本结构组成

B、C语言是一种结构化程序设计语言

C、使用三种基本结构构成的程序只能解决简单问题

D、结构化程序设计提倡模块化的设计方法

16.以下叙述中错误的是(   )C

A、算法正确的程序最终一定会结束      B、算法正确的程序可以有零个输入

C、算法正确的程序可以有零个输出      D、算法正确的程序对于相同的输入一定有相同的结果

17.以下选项中关于程序模块化的叙述错误的是(   )B

A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块

B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序

C、把程序分成若干相对独立的模块,可便于编码和调试

D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序

18. 关于C语言的符号常量,以下叙述中正确的是(   )C

A、符号常量的名是标识符,必须大写  B、符号常量的名是标识符,必须小写

C、符号常量是指用一个符号名来代表一个常量

D、符号常量的符号名必须是常量

19.关于C语言的变量,以下叙述中错误的是(    )B

A、所谓变量是指在程序运行过程中其值可以被改变的量

B、变量所占的存储单元地址可以随时改变

C、程序中用到的所有变量都必须先定义后使用

D、由三条下划线构成的符号名是合法的变量名

20.以下选项中合法的变量名是(    )C

A、  5a         B、  A%         C、  _10_             D、  sizeof

21.在C语言中,char型数据在内存中的存储形式是 (       )  D

A、 补码 B、反码 C、源码 D、ASCII码

22.有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是 (       ) 。B

#include<stdio.h>

main(){

int x;

float y;

scanf("%d%f",&x,&y);

}

A、 123   B、 12345   C、 45   D、 345

23. C语言中,不合法的字符常量是(  )。B

双引号“”包括起来的整体是字符串

A. ‘\t’          B.“a”           C. ‘a’          D.‘\x32’

24.在C语言中,数字0x32是一个(  )。D

A.非法数       B.八进制数     C.十进制数     D.十六进制数

25.已知字母A的ASCII码是65,以下程序的执行结果是 (       )D

#include<stdio.h>

main()

{

char c1='A',c2='C';

printf("%d,%d\n",c1,c2);

}

A、 A,Y   B、 65,65   C、 65,90   D、 65,67

26.下列运算符中优先级最高的是 (       )  C

A、 <   B、 +   C、 !   D、=

27.若变量均已正确定义并赋值,以下合法的C语言赋值语句是(   )D

赋值语句=左边必须为变量,不能为常量。B选项等式两边均为变量

A、 x=m%2.5;    B 、x+n=i;    C 、x=5=4+1;     D、  x=y= =5;

28.若有定义语句int a=3,b=2,c=1;以下选项中错误的赋值表达式是(   )B

A 、a=b=c+1;     B、 a= (b=4) =3;   C 、a= (b=4) +3;   D、 a=1+ (b=c=4);

29. 有以下程序

main()

{int x=l, y=0;

if(!x) y++;

else if(x==0)

if(x) y+=2;

else y+=3;

printf("%d\n", y);}

程序运行后的输出结果是(    )B

#include <stdio.h>

int main(void)

{

   int x=1,y=0;

   if(!x)

   y++;

   else if(x==0)//这里不满足,直接就结束了

          if(x)

          y+=2;

          else//这个else只和最近的if生效

          y+=3;

   printf("%d\n",y);

   return 0;

  

  

}

A 、 2           B、  0         C、  1           D、  3

30. 有以下程序段, 程序的运行结果是(    )D

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{case  1:a++;b++;a++;break;

case  2:a++; b++;break;

case  3:a++; b++; }

printf("a=%d,b=%d\n",a,b); }

A、  a=2,b=2      B 、a=1,b=1    C 、a=1,b=0    D 、a=2,b=1

31.下列叙述中正确的是(    )C

A、在switch语句中必须使用default

B、 break语句必须与switch语句中的case配对使用

C、在switch语句中,不一定使用break语句D、 break语句只能用于 switch语句

32. 以下叙述中正确的是(   )A

可以自己调用自己:eg:递归函数

A、函数名代表该函数入口地址    B、所有函数不能接受函数名作为实参传入

C、函数体中的语句不能对自己的调用 D、如果函数带有参数,就不能调用自己

33. 若有定义语句:double  a , *p=&a;以下叙述中错误的是(    )D

A、 定义语句中的*号是一个说明符

B、 定义语句中的p只能存放double类型变量的地址

C、 定义语句中*p=&a把变量a的地址作为初值赋给指针变量p

D、 定义语句中的*号是一个间址运算符

34. 下列定义数组的语句中,正确的是(    )。B

A、 int N=10; int x[N];  B、#define N 10 int x[N]; C、 int[0..10];    D 、int x[];

35. 下面程序的运行结果是(    )A

这是结构体,就是看着有点复杂

#include<stdio. h>

#include<string.h>

void main()

{truct student

{ int xh;

char xm [20];

}stud1={1001,"LiMing"};

printf("xh=%d,xm=%s\n", stud1.xh, stud1. xm);}

A、xh=1001,xm= LiMing               B、xh=1001,xm=   

C、xh=    ,xm=                     D、xh=1  xm= L

36.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是 (       ) 。  D

A、 ‘x’&& ‘y’

B、 x<=y

C、 x || y+z && y-z

D、 !((x<y)&&!z || 1)

37.判断char型变量cl是否为小写字母的正确表达式为 (       )D

A、 ’a’<=c1<=f’z’       B、 (c1>=a)&&(c1<=z)

C、 (‘a’>=c1) (‘z’<=c1)    D、 (c1>=’a’)&&(c1<=’z’)

38.字符串"a"在内存中占据的字节个数为 (      ) C

字符串以\0结束,占用一个字节,但是如果计算机的话不会算\0,后面有题

A、 0   B、 1   C、 2   D、 3

37.下面有关for循环的正确描述是(    )  D

A、 for循环只能用于循环次数已经确定的情况

大多数用于循环次数已知的

B、 for循环是先执行循环体语句,后判定表达式

先判定,后循环

C、 在for循环中,不能用break语句跳出循环体

D、 for循环体语句中,可以包含多条语句,但要用花括号括起来

40.下面程序的运行结果是(    ) C

#include<stdio.h>

main()

{int num=0;

while(num<=2)

{num++;

printf(“%d ,num);}

}

A、 1    B、 1 2     C、 1 2 3    D、 1 2 3 4

41. C程序是由函数构成,C程序总是由(   main  )函数开始执行。

42. C程序书写自由,(   ;  )是C程序语句结束的标志。

43. 结构化程序设计的三种基本机构为顺序结构选择结构(分支结构)循环结构   。

44. 程序中注释采用(  //或者/**/   )标识作为对程序进行解释说明。 

46.在C语言中的实型变量分为两种类型,它们是___float_____ 和 ____double_____。

47.当a=5,b=4,c=2时,表达式 a>b!= c的值是 ____1____。左结合

48.下列程序片段运行后的输出结果是 ____0124____。

for(k=0;k<5; k++)

{

if(k= = 3) continue;

printf("%d ",k);

}

K=3的时候不输出直接continue,开始下一个k=4,然后输出k=4

49. 实型变量分为单精度和双精度,定义双精度变量的类型说明符为(   double   )。

50. 表达式a+=a-=a=9的值是(  0   )。

a=9a=a-9;a=0;a=a+0;a=0

51. 若有以下程序,则程序的输出结果是(  5,-2   )。

#include <stdio.h>

main()

{int a=-11,b=10;

a/=b/=- 4

printf("%d, %d\n", a, b);}

52. 表示关系式x≤y≤z的C语言表达式为( (y>=x)&&(y<=z)            )。

53. 设int w=1,x=2,y=3,z=4,a=5,b=6;则执行语句(a=w>x)&&(b=y>z) ;后b=(     )

逻辑 运算符&&,当左边不成立时,右边直接不看,b的赋值直接不执行,还是b=6

54. 执行程序中printf("%d", strlen("good"));的输出结果为(   4    )。

计算机并不会加上\0

55.数学表达式0<x<10在C语言中正确的表达方式是___(0<x)&&(x>10)_____。

56.在C语言中,二维数组元素的内存中的存放顺序是__按行存放______。

57.在C语言中,表达式后加     ;   构成C语言语句。

分号一定要是英文的哦

58.C语言中文件的存取方式可以顺序存取,也可以随机存取。(  ) T

59.系统分配给一个结构体变量的内存空间字节数是各成员所需内存字节数的总和。 (  ) T

60.C语言程序的变量必须先定义再使用。(  ) T

61.C语言中一行可以写多个语句,一个语句也可以写多行。(  ) T

62.C语言是属于高级语言。 (  ) T

这个高级的意思并不是优先级高(并不是等级高的意思),而是相较机器语言那一种低级语言语言来说是高级语言。

63.C语言程序的变量必须符合标识符的命名格式。(  ) T

64.同一结构体类型中的各成员项数据类型可以不相同。(  ) T

数组中必须要求是同一类型

 65.C语言程序中,switch语句可以使用break。(  )T                                                                                                        

66.关系表达式或逻辑表达式用1代表逻辑“真”,0代表逻辑“假”。(  ) T

67.同一结构体类型中的各成员项数据类型可以不相同。(  ) T

 68.C语言程序中,switch语句不一定使用default。(  ) T

69.条件表达式只能是关系表达式或逻辑表达式。(  ) F

还有算数表达式

70.运算符/和%要求参加运算的对象均为整型数据。(  )     F

71.Abs  100 是合法的标识符。(  )T

72.函数的调用次数可以是多次的。(  ) T

73.函数的类型可以是整型、实型、字符型,但不可以是指针型。(  ) F

74.使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值。F

程序设计题

1. 输入圆的半径,输出圆的周长、面积,编写程序的要求如下:

(1)定义符号常量: #define  PI  3.1415926。

(2)定义双精度变量:圆半径r,圆周长l,圆面积s。

(3)输出10位宽度,其中两位小数,输出数字左对齐。

Printf里面的%f改为%10.2f

10表示宽度,2表示两位小数,若没有限制宽度只限制二位小数则把%f改为%0.2f

2.输入矩形的长a,宽b、求出矩形的周长L和面积S,编写程序的要求如下:

(1)定义双精度变量:长a,宽b、周长L和面积S。

(3)从键盘上输入a、b的值,计算周长L和面积S并输出,保留两位小数。

Printf里面的%f改为%.2f

3. 输出100-999之间所有的水仙花数。水仙花数指的是:各位数字立方和等于该数本身例如:153=1*1*1+5*5*5+3*3*3。

4.从键盘输入三个整数,输出其中最大整数。

 同样也可以使用两次if-else语句,先将a的值赋给max,然后依次与b,c比较,最后将最大的值赋给max,如何输出

5. 输出Fibonacci(斐波那契)数列的前20个数。这个数列有如下特点。第1、2个数为1,1。从第3个数开始,该数是其前面两个数之和,。即该数列为1,1,2,3,5,8,13,21,34。。。。。。

这是最直接的用数组表示斐波那契数列,同时也可以写递归调用函数来表示

6. 要求从键盘输入百分制分数,输出百分制以及对应的五级制分数。90分以上输出A,80-89分输出B,70-79分输出C,60-69分输出D,60分以下输出E。

 写在最后,祝各位期末取得好成绩!

 喜欢的话,记得动动小手关注一下!

  • 400
    点赞
  • 2323
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 49
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱德苏

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值