第1章 C语言概述 1
问1 C语言是谁发明的?是怎样发展起来的 1
问2 C语言有何特点 2
问3 编译型语言和解释型语言有何区别 2
问4 Turbo C是一个什么样的产品 3
例1 编写第一个简单的C语言程序 4
问5 C语言程序的基本结构如何 4
问6 C语言源程序的书写格式有何特点 5
问7 C语言程序中的main函数有什么作用 5
问8 什么是函数库 5
问9 C语言程序的输入到执行需要一个怎样的过程 5
问10 源程序的编译及连接是怎样一个过程 6
例2 经典的Hello World!程序 6
问11 什么是头文件 7
例3 程序代码的编译、连接与运行 8
第2章 数据类型、运算符与表达式 10
问12 什么是常量 10
问13 如何定义符号常量 10
问14 符号常量只能用大写字母表示吗 11
问15 什么是变量?如何定义变量 11
例4 常量和变量的简单使用 12
问16 C语言中有哪些基本数据类型 13
问17 编写C程序时,如何确定使用哪种整数类型 13
问18 C语言是强类型的语言,这是什么意思 13
问19 C语言如何表示不同进位计数制的整型常量 14
例5 整型常量的表示 14
问20 什么是整型变量?整型变量有哪些类型 15
例6 整型变量的定义和使用 15
问21 什么是实型变量?实型数据有哪些类型 16
例7 实型变量的定义和使用 17
问22 C语言中如何表示字符型常量 17
问23 字符在内存中存储的是字符本身吗 17
例8 字符常量的表示与输出 18
例9 输出字符的ASCII码值 18
问24 不同数值类型的数据混合运算时如何进行类型转换 19
问25 C语言中为什么要使用转义字符 19
问26 C语言中转义字符是如何表示的 20
例10 转义字符的使用 20
例11 输出特殊的字符 21
问27 什么是字符串常量 21
问28 字符串常量与字符常量有何不同 22
例12 输出字符与字符串 22
例13 字符数组的定义和使用 23
问29 什么是表达式 24
问30 如何正确理解和使用赋值运算符 24
问31 如何正确理解和使用条件运算符 25
问32 为什么表达式1/2的值为0 26
例14 从键盘输入数据并进行计算处理 26
问33 如何指定输出数据的域宽、小数位数和对齐方式 27
问34 如何理解自增运算符与自减运算符 27
问35 自增运算符“++”和自减运算符“--”运算可对常量执行吗 28
例15 正确理解和使用自增运算符和自减运算符 28
例16 进一步理解自增运算符与自减运算符 29
例17 利用自增运算符“++”实现累加 30
例18 正确理解算术运算符的优先级 30
问36 如何计算表达式(x++)+(++x)+(x++) 31
例19 以下程序的运行结果为什么与问36的解释不一致 32
问37 字符型数据与整型数据、浮点型数据为什么可以直接运算 32
例20 转换字母的大小写 33
问38 如何理解表达式x=y=1 33
例21 理解赋值运算符、赋值表达式及运算符优先级 34
问39 如何理解逗号运算符和逗号表达式 34
问40 逗号表达式是如何运算的 35
例22 理解逗号运算符 35
问41 如何理解复合赋值运算符 36
例23 理解复合赋值运算符 36
问42 int x=32767;x++;为什么x的值为-32768 37
例24 整型数据的溢出问题 37
问43 对于浮点型数据执行相等比较为什么有时会出现问题 38
第3章 最简单的C语言程序设计 40
问44 什么是程序的顺序结构 40
问45 C语言的基本语句包含哪些类型 40
问46 什么是程序的选择结构 41
问47 在C语言中如何实现数据的输入/输出 41
问48 C语言中有哪几种语句 42
问49 C语言中没有输入/输出语句是什么意思 43
问50 没有初始化的变量的初始值是什么 43
问51 C语言中,必须在程序退出之前释放所有的资源吗 43
问52 为什么调用库函数printf时可以不添加包含stdio.h头文件的语句 44
问53 如何使用scanf函数控制输入格式 44
问54 如何使用printf函数控制输出格式 44
例25 printf格式控制输出 45
例26 利用printf函数实现实型数据的输出 46
例27 putchar函数的使用 46
例28 puts函数的使用 47
问55 以下的程序为什么会出现编译错误 47
问56 getchar函数有何作用 48
例29 getchar函数的使用 48
例30 gets函数的使用 49
问57 在使用scanf函数读入数据时,应该采用哪种符号做分隔符 50
例31 用scanf函数读入两个字符,输出其ASCII码之差 50
例32 一个简单的加法计算器程序 51
例33 以下程序的结果为什么是错误的 51
例34 为什么输入数据与输出结果不一致 52
例35 从键盘输入圆的半径,计算其直径、周长和面积 53
例36 进位计数制转换 53
例37 交换两个变量的值 54
例38 计算圆周长和圆面积 55
例39 求树的高度 55
第4章 逻辑运算与判断选取控制 58
问58 关系运算符的优先级次序是什么样的 58
问59 关系表达式的值是如何表示的 58
问60 如何理解表达式x=y==1 59
问61 C语言中逻辑值1和0是如何判断的 59
例40 求解关系表达式的值 59
问62 C语言中有哪些逻辑运算符 59
例41 求解逻辑表达式的值 60
问63 求解逻辑表达式时“有解即停”是什么意思 61
例42 变量y的值为什么还是5 61
问64 为什么条件语句“if (! a)语句;”与“if (a==0)语句;”等价 61
例43 If语句的应用 62
例44 求三个变量的最大值 63
例45 任意输入两个整数,输出其中的大者 63
例46 任意输入一个整数,求该整数的绝对值并输出 64
问65 if语句之间相互嵌套时,if和else是如何匹配的 65
例47 if语句的嵌套 65
例48 任意输入三个整数,比较大小,输出其中最大值 66
例49 任意输入一个百分制分数,输出该分数对应的等级制级别 66
例50 计算奖金 67
例51 将四个变量的值降序排序 68
问66 在C语言程序中如何判断两个数是否能够整除 69
例52 平年/闰年问题 70
问67 switch语句是如何执行的 70
例53 计算指定年份和月份的天数 71
例54 用switch语句输出分数对应的等级制级别 72
例55 计算任意三角形的面积 73
问68 什么是复合语句?什么时候应该使用复合语句 74
例56 分段函数值的计算之一 75
例57 分段函数值的计算之二 76
例58 分段函数值的计算之三 77
例59 百分制转换成五级分制 78
问69 在switch语句中,case是不是作为条件判断语句存在 79
例60 switch...case语句的使用 79
例61 使用switch语句解决实际问题 80
例62 析取一个三位整数的各位数字 82
问70 什么是三目运算符?条件运算符?是否与if语句等价 82
例63 使用条件运算符求最大值 83
例64 编制程序实现能完成简单加、减、乘、除、求余的运算器 84
第5章 循环控制 85
问71 什么是程序的循环结构 85
问72 为什么结构化程序设计不提倡使用goto语句 85
问73 在C程序中使用goto语句是不是有百害而无一利 86
例65 使用goto语句构成循环 86
问74 什么是标号?标号具有什么作用 87
问75 break和continue语句有什么区别 87
问76 while循环结构是如何执行的 87
例66 使用while循环结构计算n! 88
例67 计算1+2+3+4+5+…+99+100的结果 89
问77 do...while循环结构是如何执行的 90
问78 while语句和do...while语句是等同的吗 90
例68 用do...while循环语句计算1+2+3+4+5+…+99+100的值 90
例69 输入一个小于等于20的整数,求从该整数累加到20的和 91
例70 猴子吃桃子 92
例71 统计各种字符的个数 93
例72 使用do...while循环结构计算n! 93
问79 for循环结构是如何执行的 94
问80 for循环条件中的表达式哪些可以省略 95
例73 使用for循环结构计算n! 95
问81 什么是死循环 96
问82 如何理解for循环结构的多种省略写法 96
例74 水仙花数 99
例75 求数列之和 99
例76 for循环的嵌套使用 100
例77 输出9×9乘法口诀表 101
例78 输出斐波纳契数列 102
问83 类似于while(1)循环是“死循环”吗 102
例79 计算表达式s=1!+2!+3!+……+n!的值 103
例80 计算表达式s=1!+(1!+2!)+……+(1!+2!+……+n!)的值 104
问84 程序中常见的while((ch=getchar())!='\n')循环是如何执行的 104
例81 键盘输入中析取数值 105
例82 析取任意整数的各位数字 106
问85 穷举法的基本思想是什么 107
例83 水仙花数问题解法之一 108
例84 水仙花数问题解法之二 109
例85 矿石判断 110
例86 五个球分给五个人,共有多少种分法 111
例87 一元钱的分解问题 111
例88 湖泊大小问题 112
例89 用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根 113
例90 求任意10个非零整数中的正数之和 114
问86 什么是素数?如何判断一个数是否为素数 115
例91 素数问题 116
例92 最大公约数问题 116
例93 输入两个正整数m和n,求其最大公约数和最小公倍数 117
例94 记忆力测试游戏 117
例95 求1~100之间的全部素数 120
第6章 数组 121
问87 什么是构造数据类型 121
问88 如何定义一维数组 121
问89 数组在定义的同时赋初值,是否可以省略数组的大小 122
问90 运算符sizeof执行什么功能 122
问91 如何进行数组初始化 122
例96 数组元素的赋值与输出 123
例97 斐波纳契数列问题扩展 124
问92 如何定义二维数组 124
问93 如何进行二维数组初始化 125
例98 杨辉三角形问题 125
例99 魔方阵问题 127
问94 选择法排序的基本思想是什么 128
例100 选择法排序 129
问95 冒泡排序法的基本思想是什么 130
例101 冒泡排序法应用之一 130
例102 冒泡排序法应用之二 131
问96 顺序查找法的基本思想是什么 132
例103 顺序查找法 132
问97 二分查找法的基本思想是什么 133
例104 二分查找法 134
问98 如何定义和使用字符串数组 135
问99 字符数组与字符串有什么不同 135
例105 字符数组与字符串的区别 135
问100 字符数组与字符串是否等价 136
问101 如何输入含有空格的字符串 136
例106 计算一个字符串的长度 137
例107 输入两个字符串,统计和比较两个字符串的长度 138
例108 对比字符串的两种输出方式 139
例109 小写字母变成大写 140
例110 字符串排序 141
问102 C语言中有哪些字符串处理函数 142
例111 统计字符串中的单词个数 143
例112 统计字符串中的最长单词的长度 144
例113 判断一个字符串是否能够构成一个有效数值 145
例114 求一个N×N的矩阵对角线元素之和 145
例115 形成一个3行4列数组,将一个3行4列数组转置后输出 146
例116 寻找一个整型二维数组中的“鞍点” 148
例117 输出成绩最高的学生的情况 149
例118 将1~12月中每月对应的月份宝石名称输出 149
例119 三子棋游戏 150
例120 加密 152
第7章 函数 154
问103 函数有哪两种基本类型 154
问104 如何定义一个函数 155
问105 如何实现一个函数 155
问106 哪些函数不需要声明就可以使用 156
问107 函数的形参在函数定义时就有确定的存储空间和值吗 156
问108 函数的实参和形参之间是如何进行数据传递的 156
例121 从小到大输出三个整数 156
例122 计算组合数 157
例123 数组名作函数参数 158
问109 什么是“传值调用” 159
例124 以数组作函数参数 160
问110 什么是局部变量 161
问111 什么是全局变量 161
问112 如何使一个函数产生一个以上的结果值 162
例125 使用全局变量 163
问113 如何理解“静态存储类别static”的变量 163
例126 静态存储类别变量的使用 165
问114 函数可以嵌套定义和调用吗 165
问115 什么是函数的嵌套调用和递归调用 166
例127 函数的递归调用 166
例128 求n的阶乘 167
例129 计算圆的面积 168
问116 变量的定义和声明是一样的吗 169
例130 外部变量的使用 169
例131 奥赛罗游戏 171
第8章 编译预处理 179
问117 什么是宏 179
问118 宏是如何工作的 180
例132 宏定义、宏调用与宏展开 181
例133 定义交换两个变量值的宏 181
问119 什么是文件包含 183
问120 #include<文件名>和#include"文件名"有什么区别 183
问121 带参宏和函数能等价吗 183
问122 条件编译有什么作用 184
例134 使用条件编译 184
例135 使用带参宏,从三个整数中找出最大的一个 185
第9章 指针 187
问123 如何定义和引用指针变量 187
问124 指针变量的基类型具有什么作用 187
问125 表达式*p++是自增p还是p所指向的变量值 188
问126 什么是空指针? 189
问127 C语言中NULL代表什么 189
问128 表达式p++是表示将指针p往后移动一个字节吗 189
例136 使用指针变量作函数参数 189
例137 使用指针变量使函数返回多个结果值 190
问129 数组名和指针是否相同 191
问130 如何通过指针引用数组元素 191
例138 指向数组的指针 191
例139 用指针输出一维数组的全部元素 192
例140 利用指针交换两个数组的对应元素 193
例141 把一个一维数组中的元素按初始顺序的倒序排列 194
问131 两个指针可以执行加减运算吗 195
问132 二维数组的行指针和列指针有何区别 195
例142 用指针输出二维数组的全部元素 195
例143 输出二维数组b中各行各列元素的值 197
例144 输出数组中最大元素和最小元素的值 197
例145 通过指针操作字符串 198
例146 通过指针数组对二维数组的元素进行输入和输出 199
例147 按字符串从小到大的顺序排列输出5个字符串 200
问133 什么是函数指针和指针函数 201
例148 使用函数指针 202
例149 使用指针数组模拟字符串数组的处理 202
问134 C语言如何实现动态数组 203
问135 一个指针变量到底会分配多少内存空间 204
例150 动态分配内存 204
例151 找出成绩最低的学生记录 205
例152 通过函数调用分别求两数之和、差、积、商 206
例153 输出10个整数中最大数的值 207
例154 使用指针数组完成对10个字符串的排序 208
例155 求字符串长度 209
例156 利用指针函数求和 210
例157 利用指针实现混合运算计算器 212
第10章 结构体与共用体 215
问136 如何定义结构体和结构体变量 215
问137 如何引用结构体变量中的数据成员 216
例158 结构体变量的定义与使用 217
问138 结构体中可以包含指向自己的指针吗 218
问139 什么是共用体?共用体与结构体有何区别 218
例159 结构体与共用体的区别 219
问140 如何使用typedef命名数据类型 220
问141 链表是一种怎样的数据结构 220
例160 采用动态方式创建一个单向链表 221
例161 使用链表输入动态字符串并显示输入的字符串 222
问142 如何从链表中删除一个结点 224
例162 从链表中删除一个结点 224
问143 如何向链表中插入一个结点 225
例163 向链表中插入一个结点 225
例164 合并两个单向有序链表 226
问144 结构体和共用体的区别在哪里 228
例165 报数 228
问145 枚举元素的值是多少 229
例166 枚举元素的输出 229
问146 typedef可以创建新的数据类型吗 230
例167 编写一个程序,为一组数值生成相应的条状图 230
第11章 位运算 234
问147 C语言中有哪些位运算符?各完成什么运算 234
例168 使用位运算将一个正整数转换为相应的二进制数 234
例169 给定一个整数,请取出该整数从右端开始的4~7位 235
第12章 文件 236
问148 什么是文件类型指针 236
问149 文件的打开和关闭是什么意思 236
例170 文件的打开与关闭实例 237
问150 如何向ASCII文本文件中写入字符 238
问151 如何从ASCII文本文件中读取字符 238
例171 读取并显示文本文件的内容 239
例172 写磁盘文件操作 239
例173 复制文件 240
例174 复制文本文件 241
问152 如何判断一个文件是否存在 242
例175 复制文本文件的内容,增加判断功能 242
问153 在读/写二进制文件时如何判断文件是否结束 243
问154 如何从二进制数据文件中读/写一组数据 243
例176 向二进制文件写入一组数据 244
例177 从二进制文件中读出数据 245
问155 如何将数据写入到文本文件中 246
例178 向文本文件中写入格式化数据 246
问156 如何从文本文件中读取具有一定格式的数据 248
例179 从文本文件中读出格式化数据 248
问157 如何控制文件的读/写位置 249
例180 文件读/写指针演示 249
问158 如何进行文本文件的随机读/写 250
例181 文本文件中数据的随机读/写 250
问159 如何进行二进制文件的随机读/写 251
例182 二进制文件中数据的随机读/写 252
例183 电子通讯录的排序 253
第13章 常见错误与程序调试 256
问160 计算机程序通常有哪几种错误 256
例184 分析以下程序中的错误 256
问161 如何防护程序中可能出现的各种错误 257
例185 分析以下程序的运行结果 257
问162 如何设计调试用例 258
例186 分析以下程序的运行结果 258
第14章 常用数据结构和算法 260
问163 什么是数据结构 260
问164 什么是线性表 261
例187 两个顺序线性表的归并 261
问165 malloc函数是如何使用的 262
例188 malloc函数使用实例 263
例189 动态分配内存空间应用实例 264
问166 什么是链表 265
例190 单链表的动态创建 265
问167 链表结点是如何删除的 267
例191 链表结点的删除 268
问168 链表是如何遍历的 270
例192 链表的遍历实例 270
问169 链表结点是如何插入的 273
例193 链表结点插入实例 274
例194 多项式求和 277
例195 飞机实时售票系统 279
问170 怎样计算从确定地点出发到其他各地方的最短路径 285
例196 求单个源点出发的最短路径实例 287
第15章 等级考试应试指导20问 290
问171 什么是全国计算机等级考试 290
问172 一年中考试几次?分别在何时开考 290
问173 NCRE是否可以越级考试 290
问174 NCRE如何计算考试成绩 290
问175 如何认定通过NCRE考试 290
问176 NCRE证书的有效期是多久 291
问177 二级C语言程序设计考试采取何种考试形式 291
问178 二级C语言程序设计笔试试卷有几种题型?题量有多大 291
问179 二级C语言笔试试卷考点及分数分布情况如何 292
问180 如何进行考前复习?复习准备过程分为几个阶段 293
问181 如何进行针对性地复习?有何复习技巧 294
问182 进入考场参加笔试考试应注意哪些事项 296
问183 二级C语言上机考试环境如何 296
问184 上机考试的考题有几种题型?题量有多大 297
问185 上机题主要考核哪些内容 297
问186 上机考试题中可能会考查哪些主要算法 298
问187 上机考试有何应试技巧 298
问188 上机考试应注意些什么 299
问189 上机考试是一个怎样的流程 300
问190 上机考试过程分几个阶段?如何操作 300
第16章 经典C语言面试问题和案例 304
题1 基本编程能力 304
题2 long a=0x801010;a+5= 305
题3 int i=10, j=10, k=3; k*=i+j; k最后的值是 305
题4 写出float x与“零值”比较的if语句 305
题5 -1,2,7,28,?,126请问28和126中间那个数是什么 305
题6 回答下列预处理器(Preprocessor)相关问题 305
题7 判断表达式是否正确 306
题8 计算sizeof()的值 307
题9 考考你是否真的掌握了循环语法 307
题10 阅读GetMemory函数,回答程序结果 307
题11 编写strcat字符串函数 310
题12 回答下列操作系统相关问题 310
题13 Linux有内核级线程吗 311
题14 C和C++有哪些区别 311
题15 调用动态链接库有哪两种方式 312
题16 static有什么用途 312
题17 引用与指针有什么区别 312
题18 你是否知道全局变量和局部变量的区别 312
题19 系统级程序员常见面试题 313
题20 写一个最简单的病毒,让机器溢出 313
题21 你是不是明白运算优先级 313
题22 回答下面关于static用法的问题 314
题23 考查存储空间大小sizeof() 314
题24 你看得懂带有函数指针的代码吗 315
题25 指出字符串相关代码使用方法的错误 316
题26 队列和栈有什么区别?数组和链表有何区别 317
题27 用两个栈实现一个队列的功能?要求给出算法和思路 317
题28 请回答进程和线程的区别 317
题29 线程是否具有相同的堆栈?DLL是否有独立的堆栈 317
题30 用宏写swap(x,y) 318
题31 写出宏Max(a,b) 318
题32 写一个“标准”宏,这个宏输入两个参数并返回较小的一个 318
题33 写一条语句实现x是否为2的若干次幂的判断 318
题34 指针和const使用综合题 318
题35 以下代码中的两个sizeof用法有问题吗 319
题36 一个32位的机器,该机器的指针是多少位 320
题37 Visual C++中,指针占用的空间多大 320
题38 写出下面代码的输出结果 320
题39 请问以下代码有什么问题 321
题40 字符串和指针查错 321
题41 测试你的指针应用能力 321
题42 你理解了const的用法吗 322
题43 函数swap(a,b)的实现 322
题44 快速简单地回答下面关于C++的常识 323
题45 如何强行跳转程序 323
题46 已知一个数组table,用一个宏定义,求出数据的元素个数 323
题47 int向unsigned int的转换 324
题48 char aa[10],strlen(aa)为什么等于15 324
题49 函数代码编写改错 324
题50 位域计算 325
题51 看代码,计算返回值 325
题52 如何处理溢出 326
题53 位域分析 326
题54 下面的代码有错吗2如果有,请改错 328
题55 为什么这个程序会有错 328
题56 为什么struct结构相同,内存中占用空间大小不同 329
题57 位域,struct和sizeof() 329
题58 使用相同名字的static变量可以吗 330
题59 如何输出源文件的标题和目前执行行的行数 330
题60 如何定位全局数组的写越界 331
题61 ++i与i++的区别有哪些 331
题62 全英文面试题 332