二级C语言笔试379
(总分100, 做题时间90分钟)
一、选择题
1.
语句“printf("a\bhow\'are\'y\\\bou\n");”的输出结果是( )。
A a\bhow\'are\'y\\bou
B a\bhow\'are\'y\bou
C how'are'you
D ahow'are'y\bou
分值: 2
答案:C
[解析] “\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\b'’ 格式符前面的字母不能输出;“\'”格式符表示输出单引号字符;“\\”格式符表示输出反斜线字符。
2.
下列程序中c的二进制值是( )。
char a=2,b=4,C;
c=a^b>>2;
A 00000011
B 00010100
C 00011100
D 00011000
分值: 2
答案:A
[解析] 本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。
3.
下列描述中正确的是( )。
A 软件工程只是解决软件项目的管理问题
B 软件工程主要解决软件产品的生产率问题
C 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D 软件工程只是解决软件开发过程中的技术问题
分值: 2
答案:C
[解析] 软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。
4.
两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是( )。
main()
{ int x;
scanf("%d",&x);
if(x++>2) printf("%d",x);
else printf("%d\n",x--);
}
A 4和2
B 4和1
C 4和0
D 3和1
分值: 2
答案:A
[解析] 本题考查if else语句。首先scanf函数通过键盘读入x的值。,当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf
语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。
5.
下列合法的字符型常量是( )。
A '\x13'
B '\081'
C '65'
D "\n"
分值: 2
答案:A
[解析] C语言的字符常量是用单引号(')括起来的一个字符,也可以用以一个“\”开头的字符序列来表示字符常量。其中形式\ddd表示1到3位8进制数所代表的字符;形式\xhh表示1到2位16进制数所代表的字符。在本题中'\x13'表示回车符,是一个字符常量;而'\081'用8进制数所代表的字符形式不正确,因为8进制数所表示的字符中不会出现数字“8”;'65'单引号(即撇号)括起来的不是一个字符,而是一个+进制数字:"\n"是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。
6.
下列程序段的运行结果是( )。
#include<stdio.h>
void main()
{ char str[]="ABC",*p=str;
printf("%d\n",*(p+3) );
}
A 67
B 0
C 字符'C'的地址
D 字符'C'
分值: 2
答案:B
[解析] 先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\0',所以*(p+3)=0。
7.
下列程序的输出结果是( )。
#include<stdio.h>
main()
{ stmct st
{ int y,x,z;
};
union
{ long i;
int j;
char k;
}un;
printf("%d,%d\n",sizeof(stmct st),sizeof(un));
}
A 6,2
B 6,4
C 8,4
D 8,6
分值: 2
答案:B
[解析] 本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。
8.
下列说法不正确的是( )。
A C程序是以函数为基本单位的,整个程序由函数组成
B C语言程序的一条语句可以写在不同的行上
C C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D C程序的每个语句都以分号结束
分值: 2
答案:C
[解析] 本题涉及C语言基本的3个知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;⑧注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。
9.
下列程序的运行结果是( )。
#include<stdio.h>
#include<string.h>
main()
{ char*s1="abDuj";
char*s2="ABdUG";
int t;
t=strcmp(s1,s2) ;
printf("%d",t);
}
A 正数
B 负数
C 零
D 不确定的值
分值: 2
答案:A
[解析] 本题考查字符串比较函数和两个字符串比较的原则两个知识点:①原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。② strcmp(s1,s2)的返回值,当str1<str2时,返回值<0:当 str1=str2时,返回值为0;当str1>str2,返回值>0。
10.
设有下列定义:
struct sk
{ int m;
float x;
}data,*q;
若要使q指向data中的m域,正确的赋值语句是( )。
A q=&datm;
B *q=datm;
C q=(struct sk*)&datm;
D q=(struct sk*)datm;
分值: 2
答案:C
[解析] 利用强制类型转换(street sk*),把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。
11.
下列4个关于C语言的结论中错误的是( )。
A 可以用do…while语句实现的循环一定可以用while语句实现
B 可以用for语句实现的循环一定可以用while语句实现
C 可以用while语句实现的循环一定可以用for语句实现
D do…while语句与while语句的区别仅是关键字“while”出现的位置不同
分值: 2
答案:D
[解析] 本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。
12.
待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70) ,要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第 ( )个位置。
A 3
B 5字符串比较函数实现
C 7
D 9
分值: 2
答案:B
[解析] 快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。
13.
分值: 2
答案:C
[解析] 带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论