1.计算 n 的阶乘
这个问题还是比较简单的,n的阶乘可以写成123*…*n,因此可以利用一个循环函数,当<=n
2.计算 1!+2!+3!+……+10!’
测试算出3的阶乘,应该得到1+2+6=9
必须将第二个for里中ret初始化为1,不然每个n阶乘都会乘上一个n-1的阶乘
比如,将n == 3;没有ret的初始化,输出结果为15,实际输出应为9
改进如下⬇⬇⬇⬇
或
3.在一个有序数组中查找具体的某个数字n
题目:编写int binsearch(int x, int v[], int n);
功能:在v[0]<=v[1]<=v[2]<= ….<=v[n-1]的数组中查找x。
解题思路:这个题目的意思就是定义一个含多个元素的有序数组,在数组中找到某个元素。例如:定义一个数组arr[] == {1,2,3,4,5,6,7,8,9,10},在数组中找到元素7并确定其数组下标。
首先,我想到的代码是这样的:
但结果却是这样
我们需要的效果应该是寻找数组全部的元素后,在屏幕上打印是否找到元素的结果,而不是找一个元素输出一个结果。
可知,代码中的分支结构中缺少break,于是改进代码。
自此,我们已经能成功在数组中寻找相关元素。
二、折半查找算法(二分法)
对与题目“在一个有序数组中查找具体的某个数字n”,当元素个数不多时,我们可以使用例题3中的解题思路;但我们要思考,当数组元素特别多时,这样从头到尾一个个从数组检查,有时候需要检查n给元素才能得知结果,效率是比较低的,那么我们能不能通过改进代码逻辑提高程序运行效率呢,这时,不得不提出二分法的概念。
折半查找算法:又称二分查找算法,又称二分法,即当有一已知最大值的一串有序数组,可以通过不断取中间值与所需寻找的元素相比较,排除一半数据,缩小搜索范围,最终确定元素的方法。比如我们去买鞋,老板告诉我们最高200元,让我们猜,那么理论上,价格可以是0,1,2…200。一般情况下,我们会说100元,如果老板说低了,那么此时猜的范围缩小为100—200,直接排除了一般数据。此时,在进行下一步猜测,直到得出结果。
于是,代码可以改进为:
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
解题思路:既然是多个字符从两端移动,那么就应该有两个数组,一个表示演示的字符串,一个表示不输出字符串时需要输出的字符串。
注意:1. 字符串结束\0算一个小标,用sizeof要-2
2. 也可用strlen
效果如下:
5、模拟用户登录情景,并且只能登录三次
编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则 提示登录成,如果三次均输入错误,则退出程序。
效果如图:
三、goto语句举例
goto语句可以直接跳转到设定的位置,但易造成程序逻辑错误,较少用。