第一题 单项选择题 分数:6
若有以下定义和语句
char s1[]="12345",s2[]="1234";
int n=strcmp(s1,s2)
请问关于n的值,以下哪个选项是正确的?
A.等于0
B.小于0
C.大于0
D.无法确定
答案:C
解析:strcmp:C/C++函数,比较两个字符串,设这两个字符串为str1,str2,
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
若str1==str2,则返回零;
若str1>str2,则返回正数;
若str1<str2,则返回负数。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二题 单项选择题 分数:6
下面表达式中,a的值是什么?
int a=(!'1'||'1')+5;
A.不确定
B.5
C.6
D.7
E.53
F.54
G.55
答案:C
解析:!'1' 表示非真, '1'表示真, 或运算 (!'1' || '1')结果是真=1,1+5=6 赋值给a,所以a=6.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三题 单项选择题 分数:6
scanf()函数的正确调用形式是哪个?
A.scanf(格式控制串,输出项列表)
B.scanf(格式控制串,输出项地址列表)
C.scanf(格式控制串,输入项列表)
D.scanf(格式控制串,输入项地址列表)
答案:D
解析:scanf函数的一般形式为:
scanf(“格式控制字符串”, 地址表列);
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第四题 单项选择题 分数:6
以下代码的输出结果是什么?
void main()
{ int a=2;
a<<=2;
printf("%d\n",a);
}
A.0
B.2
C.4
D.8
答案:D
解析:a<<2 表示a 左移两位,数值上相当于a的十进制数乘以4
a<<n 数值上相当于a的十进制数乘以2的n次方
a>>n 数值上相当于a的十进制数除以2的n次方
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第五题 单项选择题 分数:6
字符串"\\0211\"xab"的长度(string length)是多少?
A.9
B.10
C.1
D.11
答案:A
解析:转义字符:
\0 :字符串结束标志;
\n :换行(ascⅱ码为10);
\t :横向跳格;
\b :退格;
\r :回车(ascⅱ码为13);
\f :走纸换页;
\\ :字符\(ascⅱ码为92);
\' :单引号;
'\"':双引号;
\ddd:用8进制表示字符;
\xhh:用16进制表示字符
所以题中的字符串可以分解为\\ 0211 \“ xab,即长度为9
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第六题 单项选择题 分数:6
以下哪个说法是正确的?
A.函数的定义可以嵌套,函数的调用不可以嵌套
B.函数的定义不可以嵌套,函数的调用可以嵌套
C.函数的定义和函数的调用都不可以嵌套
D.函数的定义和函数的调用都可以嵌套
答案:B
解析:因为函数的结果是一个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但是函数调用可以嵌套。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第七题 多项选择题 分数:12
以下哪些选项的语句或操作有错误?
A.char s[5] = "abcdef";
B.char *s; getchar(s);
C.char *s; s = "abcde";
D.char s[5]; scanf("s%", *s);
E.char *s = "abcde";
答案:ABD
解析:A.初始化的数组长度不能超过数组长度,B.在没有为指针分配地址空间的时候不能对指针指向的地址操作,D.输入函数输入字符串不需要*.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第八题 多项选择题 分数:12
以下错误的说法有哪些?
A.用户若需调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统根本不允许用户重新定义标准库函数
D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统会自动去调用
答案:ACD
解析:用户调用标准库函数前不必重新定义,而只需使用预编译命令将该函数所在文件包括到用户源文件中即可。而且,系统允许用户重新定义标准库函数,但此时该函数将失去原有含义。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第九题 填空题 分数:6
C语言里的整型类型有int,_____,_____等(unsigned不算)。
答案:short , long
解析:short int 和long int可以缩写为short 和 long
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第十题 填空题 分数:6
C语言中程序的入口函数名应该为_____,其标准返回值类型应该为_____。
答案:main , int
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第十一题 C语言编程题 分数:10
最简单的加法
下面给出了函数add的声明,请按要求完成该函数。
给定如下的代码:
/*返回a+b的结果
*/
int add(int a, int b);
请您按照题目要求编写代码。
答案:
int add(int a, int b)
{
return a+b;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第十二题 C语言编程题 分数:18
字符串连接
下面给出了一个join函数的声明。该函数的功能为将多个字符串连接成一个。
例如:
char* ss[ ] = {"hello, ", "welcome to ", "C contest!"};
char dest[1000];
join(ss, 3, dest);
printf("%s\n", dest); // 此处应该能输出 “hello, welcome to C contest!”
请按要求完成该函数的实现。
给定如下的代码:
#include<string.h>
/*将多个字符串连接成一个。
*strs: 要连接的字符串数组
*strNum: 字符串数组里字符串的个数
*dest: 存放连接后的字符串
*/
void join(char* strs[], int strNum, char *dest);