编程菜鸟成长第一期(第一集)

在编程过程中自己遇到的困难,希望可以给大家提个醒(思路里加粗就是本人编程考虑不全的地方或者刚开始编译不通过的地方)。

1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定如:输入9,输出99口诀表,输出12,输出1212的乘法口诀表

思路:
乘法口诀表:
根据1x1=1,1x2=2, 1x9=9知道列数需要一次循环
根据2x1 =2,3x1=3 ,9x1=9知道行数需要一次循环
因此需要循环套循环
编程菜鸟成长第一期(第一集)
编程遇到的问题:
第一次里面套的循环没有使用j = i,使用的是j = 1,导致循环的时候会出现1x2 =2;2x1=2等循环重复
结果如下:
编程菜鸟成长第一期(第一集)当修改为j =i时
编程菜鸟成长第一期(第一集)
结果正确

2.写代码将三个数按从大到小输出

思路:
1.三个数a,b,c,先比较a,b。如果a>b,a的值放在第一位,不大于b的值放在第一位。a>c,c的值大放第一位,反之继续a的值放第一位,同理比较b,c2.
2.如何放值
a.我曾设想利用数组存放三个数,依次按照大小排列放入。应该属于冒泡。
b.由于a想法过于复杂,我想起2位数的判断方法,加个临时值交换然后就改为了由大到小。(由于时间紧,a没试过,以后努力发下a,b是自己一开始没有想到的)
程序如下:
编程菜鸟成长第一期(第一集)
结果如下:
编程菜鸟成长第一期(第一集)

3.给定两个数,求这两个数的最大公约数

思路:
最大公约数:就是a,b能够同时被一个数c整除,而c有好多个,最大的那个c
利用相减法求解,如果a>b则a-b否则b-a如果结果不为0,则继续用这两个数中最大的数减较小的数,直到结果为0,则最大公约数为被减数。
编程菜鸟成长第一期(第一集)结果如下:
编程菜鸟成长第一期(第一集)

4.写一个代码:打印100~200之间的素数

思路:
素数:除了1和本身外再不能被其他数整除。
100~200之间的数n,需要一个循环
由于不能被其他数除尽,即条件为求余为0不为素数,应该跳出,除以j然后求余,即除2~n-1,也要一次循环。由于有些数可以被3整除,不能被2整除,如果除2就跳出循环输出,那例如9不是也被输出为素数了吗,因此还要加上如果n==j就可以了**

程序如下:
编程菜鸟成长第一期(第一集)
结果如下:
编程菜鸟成长第一期(第一集)

5.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

思路:
1~100的出现肯定需要一个循环,定义为i
都是分式啦,肯定定义要加float
负数我想的是利用-1的幂次来表示,幂次是用i来表示,但是想了半天没想到-1的幂用法。最后想到定义分子flag,让flag加个符号。
程序如下:
编程菜鸟成长第一期(第一集)结果如下:
编程菜鸟成长第一期(第一集)

6.编写代码在一个整形有序数组中查找具体的某个数要求:找到了就打印数字所在的下标,找不到则输出:找不到

思路:
二分查找
A:一个整形数组中,因此需要一个循环
B:当第一个脚标low远远小于最后一个脚标high
利用第一个脚标low和最后的脚标high,得到中间值mid,利用mid对应的值与自己 输入的值比较,
1.如果相等,将mid脚标赋值给index,跳出循环;
2.如果输入的值小于mid值,则high=mid-1;
3.如果输入的值大于mid值,则low=mid+1;
循环一直执行,直至跳出循环
C:如果index=-1,表示没有这个数
否则输出数字和脚标index
程序如下;
编程菜鸟成长第一期(第一集)结果如下:
编程菜鸟成长第一期(第一集)