vlambda博客
学习文章列表

C语言期末复习(选择题)

C语言期末复习

说明:习题是我平时从练习册上做错的或者易错的题目,大致包含了c语言所有基本模块。其中绿色字段是我对题目的疑问,若用红色字段解析则说明问题已解决。期末将至,学习电子信息类专业(计算机类)的同学可以参考,这里面也可能会有一些错误,你们能帮我指出那也是最好的。希望能帮助你们!

模块一:有疑问或者易错的习题

1.以下错误的转义字符是______。 

A)\\          B)\’         C)\118        D)\0

    本题标准答案:[C]

    您的实际答案:[B]

    本题实际得分:0

    折算实际得分:0

解析:1.\’代表单引号字符

      2.\ddd其功能是13位八进制数所代表的字符,例如题目中的\118则代表字符‘v’

      3.还有一些不熟悉的转义字符:\xhh12位十六进制数所代表的字符

                                  \’’双引号字符

2.  

若定义:“int z,x,y;”,执行“x=y=3; z=x+++y; ”后x y的值为______。 

A)3,3        B)4,3            C)3,4      D)4,4

    本题标准答案:[B]

    您的实际答案:[C]

    本题实际得分:0

    折算实际得分:0

问题:根据一元运算符的右结合型,我认为是先给y1,但为何是给x1

解析:右结合型是说明++a的右侧结合,不是按顺序从右向左。所以a++后值变为4b还是原来的3

3.  【试题代码:VC04136】

下面程序的输出结果是________。 

  

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

    本题标准答案:[D]

    您的实际答案:[A]

    本题实际得分:0

    折算实际得分:0

问题:难道case2后面的b++不执行了吗?

解析:x=0,在其取非后值变为1;直接匹配case1后的a++,又由于case1后面没有break;语句,不能跳出循环,执行两次a自增,一次b自增。因此,本题选择D项。

 

4.  【试题代码:VC04140】

以下程序的输出结果是________。 

C语言期末复习(选择题)

A)8     B)22     C)6     D)7

    本题标准答案:[A]

    您的实际答案:[D]

    本题实际得分:0

    折算实际得分:0

解析:本题旨在考察break;语句与continue;语句各自的功能。在本题中,若执行break语句,则跳出整个for循环;但若执行continue语句,只是结束了本轮循环,后面的b-=5不执行罢了。

 

5.  【试题代码:VC05126】

以下程序运行后,输出结果是________。 

C语言期末复习(选择题)

A) 9,9       B) 8,9       C) 1,8       D) 9,8 

 

    本题标准答案:[D]

    您的实际答案:[C]

    本题实际得分:0

    折算实际得分:0

解析:本题有一个易错点,本人在做题时会认为sizeofa)测的是一个字符的长度,一个字符占用一个字节,当然长度是1。但是本题并非如此,sizeofa)是测量a数组的长度,其值为9

 

 

 

 

6  【试题代码:VC06122】

以下程序的正确运行结果是________。 

C语言期末复习(选择题)

A)12,2    B)2,25     C)5,25     D)12,25

    本题标准答案:[C]

    您的实际答案:[A]

    本题实际得分:0

    折算实际得分:0

解析:本题考察的是变量的作用域问题,在本题中出现了extern这个全局变量,全局变量的作用域是从它的定义处开始到本程序文件末尾。如果位于全局变量定义之前的函数想引用该全局变量,需要在函数内用关键字extern对它做外部变量声明,表示该变量是一个已经定义的全局变量,声明后其作用域便扩展到了声明处。在用extern声明时,变量的数据类型可以写也可以不写。

7.【试题代码:VC09161】

若有说明语句 

char a[]="It is mine"; 

char *p="It is mine"; 

则以下不正确的叙述是________。 

B)p指向另外的字符串时,字符串的长度不受限制 

D)a中只能存放10个字符

    本题标准答案:[D]

    您的实际答案:[C]

    本题实际得分:0

    折算实际得分:0

问题:在本题中,p所指向的内容是一个字符串,它是常量,我认为是不能改变的。

 

8.考点:二级指针

C语言期末复习(选择题)

 

9.若有以下的程序段,则对数组元素的错误引用的是________。

C语言期末复习(选择题)

问题:a数组明明是一个有15个元素的一维数组,D选项在对其引用时使用了二维数组的引用方式,为什么?



10.考点:二级指针

C语言期末复习(选择题)

 

11.考点:指针变量作为函数参数

C语言期末复习(选择题)


下面,我们展示正确的交换:

int k;

k=*a;*a=*b;*b=k;

 

12.考点:带参数的mian()函数

C语言期末复习(选择题)

问题:不知道输入中的tt是什么意思?

 

13.考点:指针变量作为函数参数

C语言期末复习(选择题)

解析:本题的循环结束条件为st所指向的字符串到达末尾或者两字符串不相等。问题:*s-*t这个运算没看懂?

比较现在所指的不同字符的ascii码值。其功能相当于strcmp()函数,用于比较两个字符串的大小。

14.考点:带参数的main()函数

C语言期末复习(选择题)

问题:不懂参数的正确说明?

 

 

15.考点:指针变量作为函数参数

C语言期末复习(选择题)

程序运行后的输出结果是________

A 14       B 44      C 31       D 41

 

16.考点:switch多分支选择结构

C语言期末复习(选择题)

解析:switch语句后圆括号内表达式的类型一般为整型、字符型或枚举型,并且每个case后的常量表达式只能有一个。A选项圆括号内为浮点型,不符合;B选项case后面有两个常量表达式,不符合;D选项case后面的表达式与圆括号里面的无关,不符合。因此,答案为C项。

 

 

 

 

 

 

 

 

 

 

17.考点:函数的递归调用

C语言期末复习(选择题)

解析:在本题中,我们发现,函数的声明也可以放在main函数中,也就是说只要放在调用语句之前就是可以的。先进入fun5),进入fun4),进入fun3),进入fun2),进入fun1),进入fun0),不再进入,打印0,返回fun1),打印1,……打印5。因此,本题选择A

 

18.考点:宏展开

C语言期末复习(选择题)

解析:宏定义是没有优先级的,在本题中把x替换k+j直接从左向右运算。

Sk+j=4*k+j*k+j+1=33因此,答案选择C项。

 

 

 

 

 

 

19.考点:结构体类型变量的定义

C语言期末复习(选择题)

问题:在本题中,属于在声明结构体类型的同时定义了结构体变量,并且对其进行重新命名为T,那么D项为什么不对?

解析:我们把s称为结构体标签。在正常定义结构体时,会用以下方式:

struct s{

     int g;

     char h;

};

struct sstu1;

上面的struct s相当于int,而stu1才是变量名。在使用typedef更名后struct s可以写成T,用这个T去定义变量stu1,但千万不要误认为T就是stu1

 

20.考点:switch多分支选择结构

C语言期末复习(选择题)

解析:在本题中,要注意在switch语句中,default如果放在前面并且后面没有break;那么就在case结构中一直执行下去。当k=1时,执行c=c+kc=1,执行c++c=2,从循环中跳出;当k=2时,再执行c++c=3。最后,输出c=3

 

21.考点:字符常量

C语言期末复习(选择题)

解析:A项功能是13位八进制数所代表的字符,而在八进制数中不能出现‘8’,故不合法;B项代表的是反斜杠字符“\",是合法的;C项不能有两个字母,故不合法;D项字符是用单引号引起来的,故不合法。因此,本题选择B项。

 

 

 

22.考点:数组元素的引用

C语言期末复习(选择题)

解析:

  1     

   2

   0

   3

   4

   0

   5

   6

   0

一、当i=1时,

j=0时,s=s+a[1][0]=3;j=1时,s=3+a[1][1]=7;

二、当i=2时,

j=0时,s=7+a[2][0]=12;j=1时,s=12+a[2][1]=18;j=2时,s=18+a[2][2]=18.

因此,选择A项。

 

23.考点:指针变量与一维字符数组

下面关于字符串的定义和操作语句正确的是__________

C语言期末复习(选择题)

解析:B选项中定义的数组长度不够,因为单个单个字符去定义时里面还包含了字符串结束标志,应该至少定义6问题:为什么C选项中的指针变量s不能直接指向一直字符串常量?而D项就可以呢?

在使用字符串连接函数strcat时,括号内的第一个必须是数组(并且要定义地足够大),而不能是一个指针变量,因为一定要在内存中占用一定大小的内存空间。而第二个便可以是指针变量了。

 

 

 

 

 

 

24.考点:数组元素的引用

问题:a数组







本题中又定义了一个有三个指针变量的数组。

 

25.考点:字符常量

解析:\xab后两位表示16位进制符,16位进制可由0-9和a-f构成,本题正确答案选择D项。