我们在学习C语言的时候,在学会一些基本的语法,会做一些能概括所学知识的应用就以为自己已经完全会了这一部分,实际上这是不对的,我们完成的功能都只是很直接的运用知识点去操作,想要完成更高难度的任务就必须有一个相关的逻辑思维。以为是我做的几种题目的总结。
首先我们做的最基础的就是排序性问题,想要排序就必须把每个数进行多次的比较。不考虑内存和效率得情况下只需要将第一个数与它后面的数进行比较,然后选择要不要交换位置,加入对N个数进行排列那么如果循环N次就可以直接直接排序成功,实际上再循环N次之前就已经排序完毕,如果考虑效率问题可以进行优化,这里就不多说了。
第二个就是算法问题,这就是对我们逻辑思维最大的应用了。这类题看着复制,但是只要方法正确,其实代码量非常少,难得就是如何思考。比如下面这个题:
有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000
这个题瞪眼一看总感觉找不到思路,总感觉差点什么,这题实际上有点想单片机编程中的数字表示状态进行转换,这里我们灯开着表示1,灯灭了用0表示,然后用IF语句设计条件,满足条件,就对1和0进行转换。难点就是这个IF里到底要填什么。这个题倒是很简单,加入灯的编号是j,那么只要灯是人数的倍数就进行转换,也就是j%k==0
以上就是我对我目前学习的一个总结
我对C语言的一些看法和理解
最新推荐文章于 2022-10-11 00:19:00 发布