【C语言基础知识】
1. 用户标识符:在C语言中,用户标识符是程序员自定义的变量、函数或常量的名称。根据题目中的选项,正确的用户标识符是_D__,因为C语言允许以下划线开头的标识符,但不能以数字开头,也不能是保留字,case和else是C语言的保留字。
2. 浮点型常量:浮点型常量用于表示带有小数的数值。选项D,8.27e4.5是错误的,因为在C语言中,指数部分只能是整数,因此正确的浮点常量表示应为8.27e4。
3. 逻辑表达式:表达式`(a>=b && !b)`的值取决于a和b的值。在题目中,a=4, b=0,`!b`会将b转换为布尔值并取反,即`!0`为1,所以表达式的值是`(4>=0 && 1)`,结果为_B_,即1。
4. switch语句:在C语言中,switch语句用于多分支选择。题目中的代码没有在每个case后加break,这意味着如果满足了case条件,会继续执行后续的case。输入字母'a',程序会执行到case 'a',打印'A',然后因为没有break,会继续执行default,打印'F',所以输出为_F_。
5. while循环:`while(n--)`会先减一再判断条件,如果n为2时进入循环,循环一次后n变为1,再次判断条件不成立跳出循环,最后的n值为_A_,即-1。
6. 数组定义:在C语言中,二维数组`int a[][3]`的定义表示第一维的大小是未指定的,但可以通过初始化来推断。根据初始化`{1,2,3,4,5,6,7,8,9,10}`,第一维大小为_B_,即4,因为有4个完整的3元素子数组。
7. 函数返回类型:函数`float fun(int x)`定义返回类型为float,即使x++操作不会改变x的类型,函数仍返回一个浮点数,因此返回类型为_C_,即float。
8. 指针操作:在C语言中,`*p=a`定义了一个指向整型数组a的指针,`p=a+2`是正确的指针操作,将指针p移动到数组的第三个元素处。选项_B_尝试将指针与整型值相加,这是不允许的;选项_A_和_D_试图将指针与指针运算,也是错误的。
9. 链表操作:对于单链表的结点操作`curr->next = curr->next->next;`,这将使当前结点curr指向它下一个结点的下一个结点,因此_B_是正确的,删除了curr所指结点后面的1个结点。
10. 文件I/O:`fread()`函数用于从文件中读取数据。参数buffer是一个指针,代表_C_,即指向输入数据存入内存的首地址,用来存储读取的数据。
【程序填空题】
1. 统计整数中某个数字出现的次数:
```c
#include <stdio.h>
int count(int num, int digit) {
int i, m, n = 0;
if (num < 0) num = -(num); // (1) 将负数转换为正数
m = num % 10;
for (i = 0; num > 0; i++) {
if (m == digit) n = n + 1; // (2) 检查当前数字是否等于目标数字
num = num / 10;
m = num % 10;
}
// ...
}
```
这个函数用于计算整数num中数字digit出现的次数。当num为负数时,需要将其转换为正数以便正确处理数字。在for循环中,检查每一步的余数m是否等于目标digit,如果相等,就累加计数器n。