摘要:
第十四天 这一次小明想要尝试一下语言分析……当然是最简单的文本匹配。 首先“玩家”会输入长度为10的一串文字,内容全部由大小写字母、数字、空格组成,小明计划用程序匹配出文字中的小写字母abcd,并按照出现顺序将其保存在数组中,再顺序、逆序打印。 输入 程序通过scanf("%[^\n]", char 阅读全文
摘要:
第十三天 小明看了看嵌入式相关代码,发现了他的一个盲点……他需要学会“拆分”和“组装”一个“大空间”变量。 程序定义了两个函数,一个用于将32位无符号整数“拆分”为三个无符号8位整数,一个用于将三个无符号8位整数“组装”回32位无符号整数。在主函数内,使用者将输入一个32位无符号整数,程序将这个数转 阅读全文
摘要:
第十二天 小明今天要挑战一下算法!他的算法第一课是:二分查找。 小明随意设置了一个函数:$y=x^2+2x-1,x\in(-10^4, 10^4)$。他将使用二分法,找出给出的数字所在区间,精度为$\pm1$。 输入 程序运行时通过scanf获取一个整型,作为给定数。 输出 打印给定数所在函数区间, 阅读全文
摘要:
第十一天 还记得在第三天写的斐波那契数列程序吗?小明最初想用这个函数作为随机数生成器的。今天,小明决定重新拾起这个函数,用于生成随机数…… 输入 程序在运行时通过getchar获取输入,当使用者输入非空白字符时,退出程序。 输出 有a b c d e五个字符,每当输入一个空白字符后,根据下一个斐波那 阅读全文
摘要:
第十天 随着对指针了解的深入,小明决定进一步尝试指针的使用。 他写出一个程序,用于判断给定数组内最长连续字母串的长度。 运行: main.exe a b c d e f e a 输出: 6 解释:a b c d e f为最长连续字母串,长度为6。 运行: main.exe e d c b a b c 阅读全文
摘要:
第九天 在一开始的学习中,小明就头疼于计算机浮点数运算的误差。他决定看看浮点数的二进制是什么样的——尽管这么做对解决误差问题毫无帮助。 输入 程序执行时,通过scanf输入一个小数。 输出 打印这个小数对应的float变量的二进制。 示例 1 Input a float:0.123 0.123000 阅读全文
摘要:
第八天 小明学习到了数组,同时,在最近的开发中,他发现很多递归运算存在重复计算相同数值的问题。他决定利用数组缓存运算的结果。 有一个数组$a_{n}$,已知$a_n = a_{n-2} - a_{n-1} + 2$,且有$a_1 = 1$, $a_2 = 0$。请编写带有缓存的函数,通过递推式计算$ 阅读全文
摘要:
第七天 小明在最近的学习中了解到了函数。他决定利用函数递归的特性实现不定长文本的输出。 程序具有交互式设计。首先通过命令行参数获取最大输入次数;程序运行时,打印与已获取输入的次数相同的空格,之后打印冒号,并获取输入字符。若达到“最大输入次数”或输入字符为q,终止输入;否则重复打印并继续获取输入。结束 阅读全文
摘要:
第六天 小明想了想,发现他已经写过数个用于计算日期的程序了。今天他决定更进一步,要实现一个可以计算两个日期实际相差天数的代码。另外,为了方便,不考虑闰年情况。 运行:main.exe B B A A 输出: 1-1 to 2-2 : 1?32 解释:前两个参数B B 表示目标日期为 2 月 2 日, 阅读全文
摘要:
第五天 今天小明觉得自己又可以了!于是他决定继续实现游戏开发,这次从玩家行为控制入手。 在长度无限、宽度为9的地图场景中,我们可以控制角色向左右移动,移动后会留下轨迹,该轨迹保留两回合。此外,角色初始位置为第5格,输入q可以退出游戏。 输入 每回合获取输入,l代表向左移动,r代表向右移动,q表示退出 阅读全文