学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
那么,我们如何学好《C程序设计》呢?
一.学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:
(1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;
(2)a = 3b = 5c =++ a* b ;d =a + +* b;
对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。
(4)a=5b=6c=a>b?a:b
例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。
二.学好C语言的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2) 分支结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①if(条件)
{
分支体
}
这种分支结构中的分支体可以是一条语句,此时“”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x
②if(条件)
else
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:
d=b*b-4*a*c
if(d>=0)
{x1=(-b+sqrt(d))/2a
x1=(-b-sqrt(d))/2a
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2)
}
else
{r=-b/(2*a)
i =sqrt(-d)/(2*a)
printf(“x1=%8.4f+%8.4fi\n”r, i)
printf(“x2=%8.4f-%8.4fi\n”r,i)
}
③嵌套分支语句:其语句格式为:
if(条件1) ;
else if(条件2)
else if(条件3)
……
else if(条件n)
else
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。
(4)模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
三.掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:
for(i=1i<=9i++)
for(j=i+1j<=10j++)
if(a[i]>a[j]
{temp=a[i]
a[i]=a[j]
a[j]=temp
}
结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。
第1章 初识C语言 1
问题1 C语言是如何发展起来的? 2
问题2 什么是ANSI标准? 2
问题3 C语言编写程序的优点有哪些? 3
问题4 如何规避C语言的不足之处? 4
问题5 C语言的应用领域有哪些? 5
问题6 什么是C99标准?与C89标准
相比,C99标准有哪些
新特性? 6
问题7 C语言是C++的子集吗? 10
问题8 C语言程序的开发过程是
怎样的? 11
问题9 什么是编译程序和解释程序? 12
问题10 ANSI C的编译限制有哪些? 13
第2章 一个简单的C程序 14
问题11 C语言的入口函数是什么? 15
问题12 C语言程序由哪些部分组成? 16
问题13 如何在Turbo C 2.0中输入一个
程序? 16
问题14 如何在Visual C++ 6.0中运行
一个C程序? 18
问题15 如何在Visual C++ 2008中运行
一个C程序? 22
问题16 如何提高程序的可读性? 26
问题17 什么是关键字?C语言的关键
字有哪些? 27
问题18 什么是标识符?使用标识符的
注意事项是什么? 29
问题19 void关键字都有哪些用途? 30
问题20 什么是匈牙利命名约定?它是否
是好的约定? 31
第3章 算法入门 33
问题21 为什么说算法是程序设计的
灵魂? 34
问题22 算法的特性有哪些? 34
问题23 如何评价一个算法的好坏? 35
问题24 算法的表示方法都有哪些? 36
问题25 算法的基本结构是什么? 40
问题26 算法有哪几类? 42
问题27 算法的效率度量方法有哪些? 42
问题28 什么是算法的时间复杂度? 43
问题29 什么是算法的空间复杂度? 44
问题30 什么是分治法算法思想? 45
第4章 常用数据类型 46
问题31 声明变量和定义变量的区别
是什么? 47
问题32 在开发时如何决定使用哪种
数据类型? 48
问题33 什么是常量?如何区分常量
和变量? 48
问题34 各种数据类型所占的内存是
多少? 49
问题35 字符与字符串的差别有
哪些? 50
问题36 变量是否必须初始化? 51
问题37 为什么会发生数据溢出?如何
避免数据溢出? 52
问题38 局部变量和全局变量能否
重名? 53
问题39 全局变量可不可以定义在可被
多个.C文件包含的头文件中?
为什么? 53
问题40 如何引用一个已经定义过的
外部变量? 54
问题41 全局变量和局部变量的存储
方式有什么区别? 55
问题42 整型常量的存储形式是
怎样的? 55
问题43 整型常量的表示形式有
哪几种? 56
问题44 使用了没定义的变量会有什么
现象? 56
问题45 static关键字有什么作用? 57
问题46 const关键字有什么作用? 59
问题47 const与#define相比有何
优点? 60
问题48 sizeof不是函数吗? 61
问题49 float类型数如何与0值
比较? 63
问题50 静态变量与自动变量的区别
有哪些? 64
第5章 运算符与表达式 66
问题51 运算符的优先级和结合性是
怎样的? 67
问题52 如何区分“,”是运算符还是
分隔符? 68
问题53 C语言如何解释x=a+=b+c? 69
问题54 x=x+1,x+=1,x++,哪个效率
最高? 70
问题55 什么是运算符的目?怎样进行
区分? 70
问题56 使用“++”和“--”运算符需要
注意些什么? 71
问题57 如何理解i+++j? 71
问题58 赋值表达式中什么是左值和右值?数组名作为左右值时又具有怎样的意义? 72
问题59 如何确定条件表达式的结果的
数据类型? 73
问题60 “%”运算符是否可以对小数
进行运算? 74
问题61 “/”运算符得到的结果一定为
整数吗? 75
问题62 在进行多种数据类型混合运算
的时候,数据类型自动转换有
哪些规则? 76
问题63 C语言中有哪些简化的运算
表达式? 77
问题64 使用逻辑表达式需要注意哪
几点问题? 77
问题65 i++*i++这样的表达式为什么
不能得到预期的结果? 78
问题66 a[i]=i++这样的代码正确吗? 79
问题67 编写表达式时需要注意
什么? 79
问题68 如何理解c=a,b? 80
问题69 为无符号类型变量赋值时,数据
类型应怎样转换? 81
问题70 C语言表达式的求值顺序总是
按照运算符的结合性保证
“自左至右”或者“自右
至左”吗? 81
第6章 输入/输出函数 83
问题71 函数printf()的基本格式
是什么? 84
问题72 如何认识printf()函数的格式
字符? 85
问题73 函数printf()的标志有几种?
如何使用? 91
问题74 如何控制输出最小宽度? 91
问题75 如何控制输出精度? 92
问题76 如何控制输出长度? 93
问题77 如何动态设置输出宽度和
精度? 94
问题78 printf()函数的返回值是
什么? 95
问题79 如何理解输出列表? 96
问题80 函数scanf()的基本格式是
什么? 96
问题81 scanf()函数的格式字符是
什么? 97
问题82 使用scanf()函数应注意的问题
是什么? 100
问题83 scanf()函数的返回值是
什么? 101
问题84 如何使用getchar()函数? 102
问题85 getch()函数如何使用? 104
问题86 如何应用gets()函数? 104
问题87 如何应用putch()函数? 105
问题88 puts()函数该如何应用? 106
问题89 如何控制多数值的输入? 107
问题90 如何输入字符数组? 108
第7章 选择、分支结构程序设计 110
问题91 5>4>3为什么不成立——谈谈
关系表达式的值 111
问题92 =和==如何区分? 112
问题93 什么叫逻辑短路? 113
问题94 if语句的基本形式有哪些?
如何应用? 114
问题95 浮点数的相等比较是否可以
用==? 116
问题96 关系运算符和数学不等号有
什么区别? 117
问题97 if语句后面一定不能写
分号吗? 118
问题98 这个程序为什么多执行了好多
语句? 119
问题99 不用关系表达式和逻辑表达式
做条件 120
问题100 怎样理解复合语句中的
变量? 122
问题101 如何进行if语句的嵌套? 123
问题102 条件运算符“? :”怎样
应用? 124
问题103 switch语句的基本格式是
什么? 125
问题104 if语句与switch语句的优缺
点是什么? 127
问题105 switch语句中的default关键字
是否必须? 128
问题106 break关键字在switch语句中
应注意什么? 128
问题107 如何正确判断if和else的
匹配? 130
问题108 switch和case后的表达式值的
类型是否可以是浮点型? 132
问题109 区段划分型条件有什么
技巧? 133
问题110 default必须写在所有case
之后吗? 134
第8章 循环结构 136
问题111 循环结构的基本概念是
什么? 137
问题112 while语句的基本格式是
什么? 138
问题113 while循环应注意什么
问题? 139
问题114 for循环语句的基本格式
是什么? 140
问题115 for语句的三个表达式都是
必须的吗? 142
问题116 do…while语句的基本格式
是什么? 144
问题117 分号在循环体中的作用? 146
问题118 while与do…while的
区别? 148
问题119 什么是循环嵌套? 149
问题120 循环嵌套的结构是
怎样的? 151
问题121 如何正确使用循环嵌套? 153
问题122 死循环是怎样产生的? 154
问题123 怎样提高循环语句的
效率? 156
问题124 continue语句的基本作用
是什么? 158
问题125 break语句的基本作用是
什么? 159
问题126 goto语句的基本格式是什么?
如何使用? 161
问题127 goto语句的缺陷是什么? 163
问题128 如何选择循环语句? 165
问题129 如何判定循环结束和提前
结束? 165
问题130 如何避免循环中的初值错误
问题? 167
第9章 数组 170
问题131 什么是数组?其存储有何
特点? 171
问题132 数组的维数该如何理解? 171
问题133 一维数组是怎样定义的? 172
问题134 如何引用一维数组元素? 173
问题135 如何初始化一维数组? 174
问题136 如何设计数组的排序
算法? 175
问题137 如何定义二维数组? 176
问题138 如何引用二维数组元素? 178
问题139 如何初始化二维数组? 179
问题140 如何定义字符数组? 180
问题141 如何初始化字符数组? 180
问题142 如何引用字符数组? 181
问题143 如何进行字符数组的
复制? 182
问题144 如何进行字符数组的
连接? 183
问题145 如何进行字符串的比较? 185
问题146 如何测定字符串的长度? 187
问题147 如何进行字符串大小写的
相互转换? 188
问题148 如何计算字符串中有多少个
单词? 190
问题149 gets()函数和scanf()函数在输入
字符串时有何区别? 191
问题150 puts()函数和printf()函数在输出
字符串时有何区别? 192
问题151 数组与指针的区别是什么? 193
问题152 为什么作为函数形参的数组和
指针可以互换? 195
问题153 为什么数组名作参数传递给子
函数时,子函数可以改变主
函数中数组的值? 196
问题154 C语言中有动态数组吗? 197
问题155 如何实现动态二维数组? 199
问题156 strcpy()函数可以复制字符串的
一部分吗? 201
问题157 字符串和字符数组有什么
区别? 202
问题158 ‘\0’和“\0”有什么区别? 203
问题159 字符数组占用内存
怎样算? 204
问题160 用字符数组和指针两种方式
定义的字符串有什么
不同? 204
第10章 函数编程基础 206
问题161 什么是函数?如何分类? 207
问题162 如何定义无参函数? 209
问题163 如何定义有参函数? 210
问题164 什么是空函数?作用是
什么? 210
问题165 什么是形参和实参?如何
使用? 211
问题166 如何从函数返回? 213
问题167 函数返回值你了解多少? 214
问题168 如何进行函数的一般
调用? 215
问题169 函数调用的基本方式有几种?
各是什么? 216
问题170 函数调用应具备哪些
条件? 216
问题171 如何进行函数的嵌套
调用? 218
问题172 什么是递归调用?如何
实现? 219
问题173 函数如何将数组元素作为
实参? 222
问题174 如何将数组名作为函数
参数? 224
问题175 如何将多维数组名作为函数
参数? 227
问题176 什么是局部变量? 228
问题177 什么是全局变量?如何
应用? 229
问题178 存储方式有哪几种?分别
是什么? 232
问题179 如何使用auto关键字? 233
问题180 什么是静态变量?如何
实现? 236
问题181 什么是寄存器变量?如何
实现? 238
问题182 如何声明外部变量? 239
问题183 如何调用编译后的函数? 240
问题184 如何限定外部变量的使用
范围? 241
问题185 如何使用函数调用实现对字
符串的统计? 242
问题186 main()函数有什么作用? 243
问题187 什么是内部函数? 243
问题188 什么是外部函数?
怎么用? 244
问题189 static()函数与普通函数有什么
区别? 245
问题190 形参和实参有什么区别? 246
第11章 指针解析 248
问题191 什么是指针?什么是指针
变量? 249
问题192 如何创建指针? 250
问题193 如何初始化指针? 251
问题194 如何使用指针? 252
问题195 函数中如何传递指针? 254
问题196 指针、数组和地址之间的关系
是什么? 255
问题197 如何进行指针运算? 256
问题198 如何使用指针操作数组? 258
问题199 如何用指针表示多维
数组? 260
问题200 如何使用指针操作多维
数组? 261
问题201 如何用指针为函数传递
数组? 263
问题202 如何用指针表示字符串? 264
问题203 如何使用字符串指针作为函数
参数? 265
问题204 字符数组和字符指针的区别
是什么? 266
问题205 什么是指针数组? 267
问题206 如何使用指针数组处理
字符串? 268
问题207 如何将指针数组作为函数的
参数? 269
问题208 什么是指向指针的指针? 270
问题209 二级指针如何应用于一维
数组? 271
问题210 如何实现二级指针对二维数组
的操作? 272
问题211 二级指针如何操作字符串数组
(指针数组)? 273
问题212 如何理解返回指针的
函数? 275
问题213 什么是指向函数的指针? 277
问题214 如何用const控制指针? 278
问题215 什么是“野指针”? 279
问题216 main()函数的指针数组形参
是怎么回事? 279
问题217 void指针就是空指针吗?它
有什么作用? 281
问题218 指针是一种特殊的变量,只能
用来保存地址。这句话
对吗? 282
问题219 字符指针、浮点数指针以及
函数指针这三种类型的变量
哪个占用的内存最大?
为什么? 282
问题220 一个32位的机器,该机器的
指针是多少位? 283
第12章 常用数据结构 284
问题221 空结构体所占的内存是
多少? 285
问题222 在C语言中,一个结构体可以
包含指向自己的指针吗? 286
问题223 struct person{...}person a
为什么编译出错? 287
问题224 怎样从/向数据文件读/写
结构? 289
问题225 枚举与#define宏的区别有
哪些? 290
问题226 如何看待枚举类型,枚举类型
的优点是什么? 291
问题227 关键字typedef的功能是
什么? 292
问题228 类型定义是否允许嵌套? 294
问题229 typedef与#define宏的相似之处
与不同之处是什么? 295
问题230 什么是散列法? 296
问题231 大小端模式对union类型数据
有什么影响? 297
问题232 如何为联合体变量赋
初值? 298
问题233 如何证明联合体变量的所有成员是共享一个内存单元的? 300
问题234 堆和栈的区别是什么? 301
问题235 举例说明,什么是静态链表?
什么是动态链表? 302
问题236 单向链表、双向链表和循环链
表有什么区别? 304
问题237 如何在链表中的指定位置插入
结点? 305
问题238 如何删除链表中指定位置的
结点? 306
问题239 如何创建一个动态链表? 308
问题240 指向结构体数组的指针如何
应用? 310
第13章 位运算操作符 312
问题241 什么是位运算?位运算符包括
哪些? 313
问题242 移位运算中如何补位? 314
问题243 移位运算符与加减运算符的
优先级哪个较高? 315
问题244 什么是循环移位? 316
问题245 什么是位段?其优点是
什么? 317
问题246 如何正确使用位段? 318
问题247 数据在计算机中的存储单位有
哪些?有几种存储形式? 320
第14章 存储管理 322
问题248 与内存息息相关的重要概念
有哪些? 323
问题249 指针指向不合法引起了哪些
内存问题? 324
问题250 内存分配与释放引起的常见
问题有哪些? 325
问题251 什么是内存越界?什么是内存
泄露?二者是如何产生的? 326
问题252 C语言提供了哪些动态内存
分配函数? 327
问题253 malloc()函数与calloc()函数有
什么区别? 328
问题254 内存耗尽怎么办? 328
问题255 动态内存会被自动释
放吗? 330
问题256 高位优先与低位优先的不同
之处是什么? 330
问题257 free()和delete()怎样处理
指针? 331
问题258 怎样利用好敏感的内存
资源? 333
第15章 预处理和函数类型 335
问题259 在头文件中#if、_STDC_等字符
起什么作用? 336
问题260 如何书写多条语句宏? 337
问题261 预处理中#和##运算符是什么
意思? 338
问题262 一个头文件可以包含另一个头
文件吗? 339
问题263 #include<>和#include“”有什么
区别? 340
问题264 什么是无参宏定义? 341
问题265 什么是带参宏定义? 342
问题266 怎样写参数个数可变
的宏? 343
问题267 #pragma预处理的作用
是什么? 345
问题268 条件编译的表达形式有
哪些? 346
问题269 如何应用内部函数? 347
问题270 如何应用外部函数? 348
第16章 文件的读写操作 351
问题271 各个读写操作的区别是
什么? 352
问题272 C语言文件有哪几类? 354
问题273 怎样写数据文件,使之可以在
不同字大小、字节顺序或浮点
格式的机器上读入? 355
问题274 能否使用fflush()函数清除多余
的输入? 356
问题275 fopen()函数打开文件失败的
原因是什么? 357
问题276 为什么打开文件后要及时
关闭? 358
问题277 文件的打开方式有哪些? 358
问题278 如何正确使用putchar()函数和getchar()函数? 360
问题279 getchar()函数、getch()函数和getche()函数的区别是
什么? 361
问题280 使用printf()函数和scanf()函数
需要注意什么? 362
问题281 printf()函数有哪些参数? 363
问题282 scanf()函数的格式控制包括
哪些? 364
问题283 printf()函数和scanf()函数格式
符的修饰符“*”有什么
作用? 366
问题284 fscanf()函数、fprintf()函数与scanf()函数和printf()函数有什么
不同? 367
问题285 如何判断文件的结束? 368
第17章 图形图像处理 371
问题286 为什么在使用图形函数时要
首先初始化图形模式? 372
问题287 怎样初始化图形模式? 372
问题288 初始化时提示“BGI Error: Graphics not initialized
(use 'initgraph')”怎么办? 374
问题289 怎样利用C语言建立独立的
图形运行程序? 375
问题290 TC中有几个画线函数?怎么
使用? 376
问题291 TC中有几个画矩形函数?怎么
使用? 377
问题292 TC中有几个画圆函数?怎么
使用? 379
问题293 如何使用C语言填充封闭
图形? 380
问题294 TC中有几个和光标有关的
函数?怎样使用? 382
问题295 如何在图形模式下输出
文本? 383
问题296 背景色、线条颜色和填充颜色
有什么区别?何时使用? 386
问题297 怎样记住那么多的颜色? 387
问题298 线条样式和填充样式都有
哪些?怎样设置? 388
问题299 怎样复制图形? 392
问题300 怎样在C语言中制作
动画? 394