C语言学习(三)

一、循环

1、while循环,“当”循环

   notice:循环体内要有改变条件的机会,否则是死循环。

                有可能循环一次也没有执行。

   tips:纸上模拟程序的运行,写出变量的变化,或在程序适当的地方插入printf

   exam:x      n

               10    0

               1      1

               0      2

pro1:数位数

   调试

2、do-while循环

   循环至少做一遍

   输入0调试

最终结果n=1正确

   tips:若要进行循环计算,计算之前先保存原始的值,后面可能用

pro2:猜数游戏

   每次召唤rand()就得到一个随机的整数

pro3:算平均数

pro4:整数逆序

   整数的分解

3、for循环(初始动作;循环继续的条件;循环每轮要做的动作)

   for(;条件;) ==while(条件)

pro5:阶乘

ques1:什么时候选什么循环?

   tips:有固定次数for,必须执行一次do-while,其他情况用while

二、循环控制

pro1:判断一个数是否为素数

break:跳出循环

continue:跳过循环这一轮剩下的语句进入下一轮

只能对它所在的那层循环做

gram2:输出100以内的素数

三、循环的嵌套

gram3:输出前50个素数

pro4:凑硬币,如何用1角、2角和5角的硬币凑出10元以下的金额

接力break:

goto:离开所有的循环跳到out所指的地方,适合嵌套循环的最内层跳到最外面,其他地方不建议使用

pro4:f(n)=1+1/2+1/3+1/4+...+1/n

起点:1,终点:n,都是明确的,所以用for合适

pro5:f(n)=1-1/2+1/3-1/4+...+1/n;

pro6:正序分解整数

输入一个非负整数,正序输出它的每一位数字。

输入:13245

输出:1 3 2 4 5

方案一:先逆序再逆序,只适合末尾没有0的数字。

看似完美,but!!!

方案二:

13425/10000-->1

13425%10000-->3425

10000/10-->1000

3425/1000-->3

3425%1000-->425

1000/10-->100

425/100-->4

425%100-->25

100/10-->10

25/10-->2

25%10-->5

10/10-->1

5/1-->5

5%1-->0

1/10-->0

but!!!

pro7:求最大公约数

算法1:枚举

算法2:辗转相除法

变量表格法分析:

a        b        t

12     18      12

18     12       6

12      6        0

 6       0

发布了4 篇原创文章 · 获赞 0 · 访问量 43

猜你喜欢

转载自blog.csdn.net/qq_38681291/article/details/105247677