- 博客(105)
- 收藏
- 关注
原创 C语言 函数——hanoi塔问题的递归求解
印度神话,上帝创造世界时作了三根金刚石柱子,第一根上从下往上按 大小顺序摞着64片黄金圆盘,上帝命令婆罗门把圆盘从下开始按大小顺 序重新摆放到第二根上,规定每次只能移动一个圆盘,在小圆盘上不能放大圆盘。18446744073709551615,即1844亿亿次。若按每次耗时1微秒计算,则64个圆盘的移动需60万年。如计算阶乘,最大公约数和Fibonacci数列。如Hanoi塔,骑士游历、八皇后问题(回溯法)如队列、链表、树和图。
2024-04-14 12:57:30 356
原创 C语言 函数——函数原型
函数定义函数原型指函数功能的确立对函数名、返回值类型、形参类型进行声明有函数体不包括函数体是完整独立的单位是一条语句,以分号结束,只起声明作用编译器做实事,分配内存,把函数装入内存编译器对声明的态度是“我知道了”不分配内存,只保留一个引用,执行程序链接时,将函数的内存地址链接到那个引用上当函数定义出现在函数调用之前*C89允许不明确地给出函数原型,编译器自动创建隐含的函数声明*但C99不支持隐含的函数声明当函数定义出现在函数调用之后时,是否也支持隐含的函数声明呢?
2024-04-09 13:14:24 469
原创 C语言 函数——函数的定义、调用和参数传递
信息隐藏(Information Hiding,Parnas,1972)*对于函数的使用者,无需知道函数内部如何运作*只了解其与外界的接口(Interface)即可*把函数内的具体实现细节对外界隐藏起来,只要对外提供的接口不变,就不影响函数的使用*便于实现函数的复用和模块化编程。
2024-04-08 13:13:02 1106
原创 C语言 循环控制——while和do-while语句及其在递推求解中的应用
从已知的初始条件出发,依据某种递推关系,逐次推出所要计算的中间结果和最终结果。*从已知条件出发,向着所求问题的解前进,一步一步推出答案。*利用问题本身所具有的一种递推关系来求解问题的一种方法。*要么需要通过对问题的分析和化简后来确定。*从问题的结果出发,一步一步还原出答案。*初始条件要么在问题本身中已经给定。
2024-04-06 13:07:26 234
原创 C语言 循环控制——while和do-while语句
目录whiel语句do-while语句while与do-while的区别计数控制的循环编辑标记控制的循环
2024-04-06 12:47:37 245
原创 C语言 循环控制——计数控制的循环
目录循环语句for语句小结循环结构有什么用?国外某男子攻打自己的女友,并导致女友受伤,法官除判处他监禁和提供金钱补偿外,还处罚他抄写5000遍道歉辞:“Boys do not hit girls.”循环的控制方法5个输入数据求和 → 100个输入数据求和5个输入数据求和的程序实现这个循环是如何执行的?为什么它能实现累加运算?如何保证循环是可终止的?如何实现n个键盘输入数据的累加?计算并输出1+2+3+……+n的值如何快速计算1+2+3+……+100的值?累加求和*初始化为0或第一项*关键是寻找累加项的构成规
2024-04-05 10:22:20 312
原创 C语言 分支控制——条件语句
编译错误:illegal else without matching if。*面临的选择是:在两个不同的操作中选择其中的一个来执行。*面临2种以上选择(需连接执行多个条件判断)时。*面临的选择是:要么执行一个操作,要么跳过它。
2024-04-03 19:09:30 665 1
原创 C语言 分支控制——关系运算符和逻辑运算符
树上有10只鸟,开枪打死一只,还剩几只?*如果挂在树枝上,则剩一只。如果掉下来,则一只也不剩。*如果有关在笼子里的鸟,则……*如果用的是无声手枪,则……*如果树上有的鸟是聋子,则……*如果一枪打死两只,则……*根据给定的判定条件,判断结果,并根据判断的结果来控制程序的流程。
2024-04-03 15:45:28 867
原创 C语言运算符和表达式——赋值中的自动类型转换(精度损失问题)
两个数量级相差很大的浮点数做加减运算时,数值小的数会受浮点数精度限制而被忽略。为什么long型的123456789不能用float型精确保存呢?*低精度的数据位数比高精度的少,容纳不下高精度的所有信息。数值溢出或损失精度(位数超过7位时)为什么浮点数的输出结果也不准确呢?二进制小数与十进制小数之间并不是。数值溢出(Overflow)截断(Truncation)丢失小数部分(非四舍五入)*反之,一定都是安全的吗?
2024-04-03 15:03:21 401
原创 C语言运算符和表达式——赋值中的自动类型转换(数值溢出问题)
在平台移植时,例如程序从高位计算机向地位计算机移植(如从64位系统移植到32位系统)时,可能出现溢出,这种问题经常被忽视。*第一代身份证号码汇总的出生年——如何区分百岁老人和婴儿?*任何类型都只能用有限的位数来存储数据,表数范围有限。*在99年存取,到01年取出,该怎样计算利息呢?*编译器有时对它熟视无睹,只是输出奇怪的结果。*用取值范围更大的类型,有助于防止数值溢出。*不要对变量所占的内存空间字节数想当然。*了解处理问题的规模,选取恰当的数据类型。*同种类型在不同的平台其占字节数不尽相同。
2024-04-02 13:31:07 221
原创 键盘输入与屏幕输出——getchar()之深入分析
一行输入结束,getchar()才开始从输入缓冲队列读取字符,前面函数没读走的数据仍在缓冲队列中,将被下一个函数读取。若在Unix/Linux下遇到组合键Ctrl+D(Windows下为Ctrl+Z),则返回EOF(一般定义为-1)为什么getchar()要读到一个回车符或文件结束符EOF才进行一次处理操作呢?为什么getcher()以行(而非字符)为单位读取字符呢?*将输入字符先放入输入缓冲队列中,再从缓冲队列读取字符。输入的字符(包括回车符)都放在。实际是按文件的方式读取字符。另一个需要注意的问题。
2024-04-02 12:41:56 267
原创 键盘输入与屏幕输出——单个字符的输入和输出
从键盘接受的字符作为getchar()的函数值值。’3’表示一个数字字符,而3则表示一个整数数值。所有的ASCII码都可以通过转义方式表示出来。一些特殊字符(无法从键盘输入或者另有他用)*ASCII码值,普通整数,可作算术运算。所有的ASCII码都可通过转义方式表示。向屏幕输出一个字符,字符型变量ch的值。*‘B’的ASCII码值是66。*‘b’的ASCII码值是98。对应的ASCII码的二进制值。
2024-04-01 16:24:57 374
原创 C语言键盘输入与屏幕输出——数据的格式化键盘输入
告诉编译器scanf()在改地址存储一个。告诉编译器scanf()在该地址存储一个。(格式控制字符串,输入地址表);(格式控制字符串,输入地址表);*printf()无法区分。
2024-04-01 13:03:25 350
原创 C语言 键盘输入与屏幕输出——数据的格式化屏幕输出
输出值参数类型应与格式转换说明符相匹配。数据位宽大于m,按实际位宽输出。float,duouble型。float,double型。自上而下,依次按顺序执行。可输出多个任意类型的数据。一般格式: %十进制有符合int型。十进制无符号int型。小数形式(6位小数)
2024-03-31 13:18:29 471
原创 C语言运算符和表达式——强制类型转换
(float)total:将一个表达式的类型强制转换为用户指定的类型。强制类型转换运算符——类型强转(Casting)并且不改变total的类型和值。(类型)表达式——一元运算符。地表明程序员的意图?
2024-03-30 13:04:38 473
原创 C语言运算符和表达式——算术表达式中的自动类型转换
C编译器将所有操作数都转换成取值范围较大的操作数的类型。类型提升(Type Promotion)类型数据的运算结构的类型是什么?类型数据的运算结构的类型是什么?根据参与运算的操作数类型。从低级别向高级别自动转换。
2024-03-30 12:41:05 232
原创 C语言运算符和表达式——增1和减1运算符
可读性差,例如(++n)+(++n),(n++)+(n++)注意:操作数只能是变量,不能是表达式,自增自减运算。注:操作数的值是相同的,但表达式的值是不同的。注:用增1和减1运算生成的代码运行速度更快。增1运算符(Increment)++减1运算符(Decrement)--增1和减1运算生成的代码效率更高一些。一个变量只出现一次增1或减1运算。先对n增1/减1,然后再使用。的值,然后再对n增1/减1。使变量的值增加1个单位。使变量的值减少1个单位。后缀(Postfix)后缀(postfix)
2024-03-29 13:27:48 1068
刷题软件(未来教育)和DevC++ 正版安装包(刷题软件可能不是最新版,但特好用)
2024-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人