C 语言是一门强大的编程语言,广泛用于系统编程、嵌入式开发、算法实现等领域。下面是一份C 语言测验,涵盖基础语法、指针、函数、数据结构、内存管理等内容,适用于初学者到高级开发者测试自己的 C 语言掌握程度。


📖 目录

  1. 基础语法测试
  2. 运算符与表达式
  3. 控制流(判断与循环)
  4. 数组与指针
  5. 函数与作用域
  6. 结构体与共用体
  7. 内存管理
  8. 文件操作
  9. C 预处理器
  10. 综合挑战

1️⃣ 基础语法测试

📌 题目 1

C 语言的 printf() 函数用于:

  • A) 读取输入
  • B) 打印输出
  • C) 退出程序
  • D) 定义变量

正确答案B


📌 题目 2

下面哪个是正确的 C 语言变量声明?

  • A) int num = 10;
  • B) num int = 10;
  • C) int = 10 num;
  • D) variable int = 10;

正确答案A


📌 题目 3

C 语言中的 char 类型占用多少字节(假设 char 类型大小不变)?

  • A) 1 字节
  • B) 2 字节
  • C) 4 字节
  • D) 8 字节

正确答案A


2️⃣ 运算符与表达式

📌 题目 4

下面哪个是有效的 C 语言赋值语句?

  • A) 5 = x;
  • B) x == 5;
  • C) x = 5;
  • D) x := 5;

正确答案C


📌 题目 5

假设 int a = 5, b = 2;,那么 a % b 的值是多少?

  • A) 0
  • B) 1
  • C) 2
  • D) 5

正确答案B


3️⃣ 控制流(判断与循环)

📌 题目 6

以下 if 语句的输出是什么?

int x = 10;
if (x = 0) {
    printf("Hello");
} else {
    printf("World");
}

  • A) Hello
  • B) World
  • C) 编译错误
  • D) 不确定

正确答案Bx = 0 是赋值操作,if(0)false


📌 题目 7

while 循环和 for 循环的主要区别是:

  • A) for 适用于已知循环次数,while 适用于条件控制的循环
  • B) whilefor 运行得更快
  • C) for 只能用于整数循环,while 不能
  • D) while 只能用于无限循环

正确答案A


4️⃣ 数组与指针

📌 题目 8

以下代码的输出是什么?

int arr[5] = {1, 2, 3, 4, 5};
printf("%d", *(arr + 2));

  • A) 1
  • B) 2
  • C) 3
  • D) 4

正确答案C*(arr + 2) 访问 arr[2]


📌 题目 9

指针的默认值是什么?

  • A) 0
  • B) NULL
  • C) undefined
  • D) nullptr

正确答案BNULL 在 C 语言中表示空指针)


5️⃣ 函数与作用域

📌 题目 10

C 语言中的 static 变量的作用域是:

  • A) 仅在当前函数/文件内可用
  • B) 在整个程序中可用
  • C) 可以被外部文件访问
  • D) 以上都不是

正确答案A


6️⃣ 结构体与共用体

📌 题目 11

结构体 struct 与共用体 union 的主要区别是什么?

  • A) struct 所有成员共享同一块内存,而 union 不是
  • B) union 所有成员共享同一块内存,而 struct 不是
  • C) structunion 没有区别
  • D) struct 只能存储整数

正确答案B


7️⃣ 内存管理

📌 题目 12

malloc() 分配的内存需要:

  • A) free() 释放
  • B) delete 释放
  • C) 自动释放
  • D) clear() 释放

正确答案A


8️⃣ 文件操作

📌 题目 13

以下 fopen() 语句用于:

FILE *fp = fopen("test.txt", "r");

  • A) 以只读模式打开 test.txt
  • B) 以写入模式打开 test.txt
  • C) 以追加模式打开 test.txt
  • D) 以上都不是

正确答案A


9️⃣ C 预处理器

📌 题目 14

预处理器指令 #define MAX 100 的作用是:

  • A) 创建变量
  • B) 定义常量
  • C) 声明函数
  • D) 以上都不是

正确答案B


🔟 综合挑战

📌 题目 15

以下代码的输出是什么?

#include <stdio.h>

void func(int *p) {
    *p = 20;
}

int main() {
    int a = 10;
    func(&a);
    printf("%d", a);
    return 0;
}

  • A) 10
  • B) 20
  • C) 编译错误
  • D) 运行时错误

正确答案B(通过指针修改变量的值)


📚 参考资料

📖 C 语言官方文档
📖 C 语言测验 – W3Schools

希望这个测验能帮你复习 C 语言的知识!🚀