导言
还是比较基础的五道题,但相较于前面的几篇则好一些。
1.
题干:
答案:
A
知识点:
首先,很重要的一点是数组名是地址常量。常量之间是不能互相赋值的。
所以,此处我们要用C语言自带的库函数来实现赋值,即strcpy 、memcpy和strncpy函数。
1、strcpy:
语法格式:strcpy(字符数组1,字符串2)
作用:可以简单地理解为,将字符串2复制到字符数组1中去。
2、memcpy:
内存拷贝函数,/*memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 */
用法:void *memcpy(void *dest, const void *src, size_t n);
3.二者的区别
1)复制的内容不同,前者只能复制字符串,而后者可以复制任意内容。
2)复制的方法不同:前者复制时可以不用指定长度 后者需要指定长度
3)用途不同:通常复制字符串时用前者,复制其他内容时用后者。
2.
题干:
答案:
B
概念辨析:
直接递归调用、间接递归调用、函数循环调用
直接递归调用
指在函数a(或过程)中直接引用(调用)函数a本身
间接递归调用
指在函数a(或过程)中调用另外一个函数b,而该函数b又引用(调用)了函数a
函数循环调用
指在函数体内部调用自身的情况,也被称为递归调用。
3.
题干:
答案:
C
知识点:
函数声明可以省略形参名,定义时则不可以。
4.
题干:
答案:
C
解析:
A:
P是指针型变量,根据scanf中的格式字符串:%d,可知取出的应该是整型变量的地址,而不是整形指针变量的地址
B:
scanf中&P是整型变量空间的地址,但P没有初值,P的值是不确定的,也就是常说的野指针
D:
p=&k 是把k的地址赋值给p,p相当于p所指向的变量。这里p没有被赋初值(注意这一点:没初始化的指针是野指针),也就没有指向任何变量,所以使用p时出错,
5.
题干:
答案:
B
解析:
这个函数想实现的功能是在字符串中所有数字字符前面加一个$字符,if语句中要填入的就是判断这个字符是否是数字
1)首先要知道‘0’~‘9’的ASCII码值(48–57),当然这道题是直接用字符‘0’和‘9’来比较的,这样也可以
2) s一般表示的是数组的首地址,所以D中的*s表示的是第一个字符
结语:
今天的五道到这里就结束了,大家下次见。