- C 语言教程
- C - 首页
- C 语言基础
- C - 概述
- C - 特性
- C - 历史
- C - 环境设置
- C - 程序结构
- C - Hello World
- C - 编译过程
- C - 注释
- C - 词法单元
- C - 关键字
- C - 标识符
- C - 用户输入
- C - 基本语法
- C - 数据类型
- C - 变量
- C - 整数提升
- C - 类型转换
- C - 类型强制转换
- C - 布尔值
- C 语言中的常量和字面量
- C - 常量
- C - 字面量
- C - 转义序列
- C - 格式说明符
- C 语言中的运算符
- C - 运算符
- C - 算术运算符
- C - 关系运算符
- C - 逻辑运算符
- C - 位运算符
- C - 赋值运算符
- C - 一元运算符
- C - 自增和自减运算符
- C - 三元运算符
- C - sizeof 运算符
- C - 运算符优先级
- C - 其他运算符
- C 语言中的决策
- C - 决策
- C - if 语句
- C - if...else 语句
- C - 嵌套 if 语句
- C - switch 语句
- C - 嵌套 switch 语句
- C 语言中的循环
- C - 循环
- C - while 循环
- C - for 循环
- C - do...while 循环
- C - 嵌套循环
- C - 无限循环
- C - break 语句
- C - continue 语句
- C - goto 语句
- C 语言中的函数
- C - 函数
- C - 主函数
- C - 按值传递函数
- C - 按引用传递函数
- C - 嵌套函数
- C - 可变参数函数
- C - 用户自定义函数
- C - 回调函数
- C - 返回语句
- C - 递归
- C 语言中的作用域规则
- C - 作用域规则
- C - 静态变量
- C - 全局变量
- C 语言中的数组
- C - 数组
- C - 数组的特性
- C - 多维数组
- C - 将数组传递给函数
- C - 从函数返回数组
- C - 变长数组
- C 语言中的指针
- C - 指针
- C - 指针和数组
- C - 指针的应用
- C - 指针运算
- C - 指针数组
- C - 指针到指针
- C - 将指针传递给函数
- C - 从函数返回指针
- C - 函数指针
- C - 指向数组的指针
- C - 指向结构体的指针
- C - 指针链
- C - 指针与数组
- C - 字符指针和函数
- C - 空指针
- C - 空类型指针
- C - 野指针
- C - 解引用指针
- C - 近、远和巨型指针
- C - 指针数组的初始化
- C - 指针与多维数组
- C 语言中的字符串
- C - 字符串
- C - 字符串数组
- C - 特殊字符
- C 语言中的结构体和联合体
- C - 结构体
- C - 结构体和函数
- C - 结构体数组
- C - 自引用结构体
- C - 查找表
- C - 点 (.) 运算符
- C - 枚举 (或 enum)
- C - 结构体填充和打包
- C - 嵌套结构体
- C - 匿名结构体和联合体
- C - 联合体
- C - 位段
- C - Typedef
- C 语言中的文件处理
- C - 输入与输出
- C - 文件 I/O(文件处理)
- C 预处理器
- C - 预处理器
- C - 编译指示
- C - 预处理器运算符
- C - 宏
- C - 头文件
- C 语言中的内存管理
- C - 内存管理
- C - 内存地址
- C - 存储类
- 其他主题
- C - 错误处理
- C - 可变参数
- C - 命令执行
- C - 数学函数
- C - static 关键字
- C - 随机数生成
- C - 命令行参数
- C 语言资源
- C - 问答
- C - 快速指南
- C - 速查表
- C - 有用资源
- C - 讨论
C 语言模拟测试
本节为您提供各种与C 编程框架相关的模拟测试。您可以将这些示例模拟测试下载到本地机器上,并在方便时离线解决。每个模拟测试都附带一个模拟测试答案,让您验证最终分数并给自己评分。
C 语言模拟测试一
第 1 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int const a = 5; a++; printf(“%d”,a); }
答案:D
解析
编译错误 - 常量变量不能被修改。
main() { int const a = 5; a++; printf(“%d”,a); }
第 2 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { const int a = 5; a++; printf("%d", a); }
答案:D
解析
编译错误 - 常量变量不能被修改。
main() { const int a = 5; a++; printf("%d", a); }
第 3 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { char s[]="hello", t[]="hello"; if(s==t){ printf("eqaul strings"); } }
答案:C
解析
无输出,因为我们比较的是两个基地址,它们并不相同。
第 4 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int a = 5, b = 3, c = 4; printf("a = %d, b = %d\n", a, b, c); }
答案:A
解析
a=5,b=3,因为只有两个格式说明符用于打印。
第 5 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int a = 1; float b = 1.3; double c; c = a + b; printf("%.2lf", c); }
答案:A
解析
2.30,加法有效,并且指定了小数点后两位。
第 6 题 - 以下程序的输出是什么?
#include<stdio.h> main() { enum { india, is=7, GREAT }; printf("%d %d", india, GREAT); }
答案:C
解析
0 8,枚举从 0 开始顺序排列。如果分配了一个值,则序列从分配的值继续。
第 7 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { char c = 'A'+255; printf("%c", c); }
答案:A
解析
A,ASCII 字符的 ASCII 值范围为 0-255。因此,加法运算循环回 'A'。
第 8 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { short unsigned int i = 0; printf("%u\n", i--); }
答案:A
解析
0,使用后减减运算符,变量的值将被视为表达式的值,然后被递减。
第 9 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { unsigned x = 5, y=&x, *p = y+0; printf("%u",*p); }
答案:D
解析
5,因为 p 保存了 x 的地址,即 y+0。
第 10 题 - 您对以下 C 语句有什么评论?
signed int *p=(int*)malloc(sizeof(unsigned int));
答案:D
解析
选项 (d),因为 int 和 unsigned 的大小相同,分配内存没有问题。
第 11 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int x = 5; if(x==5) { if(x==5) break; printf("Hello"); } printf("Hi"); }
答案:A
解析
编译错误,关键字 break 只能出现在循环/switch 语句中。
第 12 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int x = 5; if(x=5) { if(x=5) break; printf("Hello"); } printf("Hi"); }
答案:A
解析
编译错误,关键字 break 只能出现在循环/switch 语句中。
第 13 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int x = 5; if(x=5) { if(x=5) printf("Hello"); } printf("Hi"); }
答案:A
解析
HelloHi,两个 if 语句的表达式都计算为真。
第 14 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { for(;;)printf("Hello"); }
答案:A
解析
无限循环,当 'for' 的第二个表达式不存在时,它默认被视为真。
第 15 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { for()printf("Hello"); }
答案:D
解析
编译错误,虽然表达式对于 'for' 循环是可选的,但分号需要出现。
第 16 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { for(1;2;3) printf("Hello"); }
答案:A
解析
无限循环,因为第二个表达式非 0,因此条件始终为真。
答案:D
解析
-2,1 的反码是 1110(二进制),它等价于 2 的反码,即 -2。
第 18 题 - 以下程序的输出是什么?
#include<stdio.h> void f() { static int i; ++i; printf("%d", i); } main() { f(); f(); f(); }
答案:D
解析
1 2 3,静态局部变量在函数调用之间保留其值,默认值为 0。
第 19 题 - 以下代码片段的输出是什么?
#include<stdio.h> main() { int *p = 15; printf("%d",*p); }
答案:C
解析
运行时错误,因为指针变量没有保存正确的地址,从同一地址读写数据会引发运行时错误。
第 20 题 - 以下程序的输出是什么?
#include<stdio.h> main() { register int x = 5; int *p; p=&x; x++; printf("%d",*p); }
答案:A
解析
编译错误,我们不能获取寄存器变量的地址。
第 21 题 - 以下程序的输出是什么?
#include<stdio.h> main() { int x = 65, *p = &x; void *q=p; char *r=q; printf("%c",*r); }
答案:B
解析
A,空类型指针是一个通用指针,可以保存任何变量的地址。值为 65 的 ASCII 字符是 'A'。
第 22 题 - 以下程序的输出是什么?
#include<stdio.h> void f() { printf(“Hello\n”); } main() { ; }
答案:A
解析
无输出,除了选项 (a) 之外,针对其他选项的注释都是无效的。
答案:D
解析
编译错误,printf 的格式字符串没有终止。
第 24 题 - 以下程序的输出是什么?
#include<stdio.h> { int x = 1; switch(x) { default: printf("Hello"); case 1: printf("hi"); break; } }
答案:B
解析
Hi,在比较完其他 case 常量后,控制权到达 default-case。
第 25 题 - 以下程序的输出是什么?
#include<stdio.h> main() { struct { int x;} var = {5}, *p = &var; printf("%d %d %d",var.x,p->x,(*p).x); }
答案:A
解析
5 5 5,使用指针访问结构体元素的两种可能方式是使用 ->(箭头运算符)或 *。
第 26 题 - 以下程序的输出是什么?
#include<stdio.h> void swap(int m, int n) { int x = m; m = n; n = x; } main() { int x=5, y=3; swap(x,y); printf("%d %d", x, y); }
答案:B
解析
5 3,按值传递机制无法改变实际参数。
#include <stdio.h> void swap(int m, int n) { int x = m; m = n; n = x; } main() { int x=5, y=3; swap(x,y); printf("%d %d", x, y); }
第 27 题 - 以下语句将打印什么?
#include<stdio.h> main() { printf("%d",strcmp("strcmp()","strcmp()")); }
答案:A
解析
0,如果两个字符串相等,strcmp 返回 0。
第 28 题 - 以下程序在做什么?
#include<stdio.h> main() { FILE *stream=fopen("a.txt",'r'); }
答案:D
解析
编译错误,fopen 的第二个参数无效,应该是字符串。
第 29 题 - 以下程序的输出是什么?
#include<stdio.h> main() { int r, x = 2; float y = 5; r = y%x; printf("%d", r); }
答案:D
解析
编译错误,模运算符 (%) 的任何一个操作数为实数都是无效的。
Q 31 - 以下联合体定义的大小是多少?
#include<stdio.h> union abc { char a,b,c,d,e,f,g,h; int i; }abc; main() { printf( "%d", sizeof( abc )); }
答案:C
解析
联合体的大小是其最大元素的大小。联合体的所有元素共享公共内存。
答案:D
解析
short 用作 short int 的替代。
Q 34 - 对于以下代码段,‘y’ 的值是多少?
#include<stdio.h> main() { int x = 1; float y = x>>2; printf( "%f", y ); }
答案:C
解析
0,由于上述移位操作导致数据位丢失,因此值为 0。
Q 35 - 以下程序的输出是什么?
#include<stdio.h> main() { float t = 2; switch(t) { case 2: printf("Hi"); default: printf("Hello"); } }
答案:D
解析
错误,switch 表达式不能是浮点值。
Q 36 - 以下程序的输出是什么?
#include<stdio.h> main() { int i = 1; while(++i <= 5) printf("%d ",i++); }
答案:B
解析
2 4,在 while 循环中,先自增后比较,在 printf 中先打印后自增。
Q 37 - 以下程序的输出是什么?
#include<stdio.h> main() { int i = 1; while( i++<=5 ) printf("%d ",i++); }
答案:C
解析
2 4 6,在 while 循环中,先比较后自增,在 printf 中先打印后自增。
Q 38 - 以下程序的输出是什么?
#include<stdio.h> main() { int i = 1; while(i++<=5); printf("%d ",i++); }
答案:B
解析
6,在 ‘while’ 之后有一个空语句。
Q 39 - 以下程序的输出是什么?
#include<stdio.h> main() { int x = 1; do printf("%d ", x); while(x++<=1); }
答案:B
解析
1 2,do..while 是一个入口控制循环。由于表达式 x++ 是后缀形式,因此循环还会继续第二次。
Q 40 - 以下程序的输出是什么?
#include<stdio.h> main() { int a[] = {1,2}, *p = a; printf("%d", p[1]); }
答案:B
解析
2,由于 ‘p’ 保存基地址,因此我们可以像使用 ‘a’ 一样使用 ‘p’ 访问数组。
Q 41 - 以下程序的输出是什么?
#include<stdio.h> main() { int a[3] = {2,1}; printf("%d", a[a[1]]); }
答案:B
解析
1,内部间接寻址计算结果为 1,外部间接寻址索引 1 处的值为 1。
Q 42 - 以下程序的输出是什么?
#include<stdio.h> main() { int a[3] = {2,,1}; printf("%d", a[a[0]]); }
答案:D
解析
编译错误,初始化数组的语法无效。
Q 43 - 以下程序的输出是什么?
#include<stdio.h> main() { int a[] = {2,1}; printf("%d", *a); }
答案:C
解析
2,因为 ‘a’ 指向基地址。
Q 44 - 以下程序的输出是什么?
#include<stdio.h> main() { int i = 1; Charminar: printf("%d ",i++); if(i==3) break; if(i<=5) goto Charminar; }
答案:D
解析
编译错误,‘break’ 出现在错误的位置。
Q 45 - 以下程序的输出是什么?
#include<stdio.h> main() { int i = 13, j = 60; i ^= j; j ^= i; i ^= j; printf("%d %d", i, j); }
答案:B
解析
60 13,它在进行交换。
Q 46 - 以下程序的输出是什么?
#include<stdio.h> main() { union abc { int x; char ch; }var; var.ch = 'A'; printf("%d", var.x); }
答案:C
解析
65,因为联合体变量为所有元素共享公共内存,x 获取 ‘A’(其 ASCII 值为 65)并打印。
答案:A
解析
选项 (a),文件应该存在并以读写模式打开。
答案:C
解析
SEEK_BEG,其余都是 ‘stdio.h’ 中定义的有效常量。
答案:C
解析
UNIX。C 实际上是为了编写一个名为 UNIX 的操作系统而发明的。到 1973 年,整个 UNIX OS 都是使用 C 设计的。
答案表
题号 | 答案 |
---|---|
1 | D |
2 | D |
3 | C |
4 | A |
5 | A |
6 | C |
7 | A |
8 | A |
9 | D |
10 | D |
11 | A |
12 | A |
13 | A |
14 | A |
15 | D |
16 | A |
17 | D |
18 | D |
19 | C |
20 | A |
21 | B |
22 | A |
23 | D |
24 | B |
25 | A |
26 | B |
27 | A |
28 | D |
29 | D |
30 | D |
31 | C |
32 | D |
33 | D |
34 | C |
35 | D |
36 | B |
37 | C |
38 | B |
39 | B |
40 | B |
41 | B |
42 | D |
43 | C |
44 | D |
45 | B |
46 | C |
47 | C |
48 | A |
49 | C |
50 | C |