C语言程序学习(六)笔记

while循环:就像if一样,条件满足就不断地做后面大括号里...

  =======>循环体内要有改变条件的机会,不然循环无法出来。
                                                                                                                     语法正确,但是逻辑错误。

while循环

如果吧while翻译作“当”,那么一个while循环的意思就是:当条件满足时,不断的重复循环体内的语句。

循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行;
 
条件成立时循环继续的条件。


看程序运行的结果

人脑模拟计算机的运行,在纸上列出所有的变量,随着程序的进展不断重新计算变量的值。当程序运行结束时,留在表格最下面的就是程序的最终结果。


验证

测试数据常使用边界数据,如有效范围两端的数据,特殊的倍数等
个位数;
10;
0;
负数。

调试的办法

在程序适当的地方插入printf来输出变量的内容。


数位数的算法

1,用户输入x;
2,初始化n位0;
3,x=x/10,去掉各位;
4,n++;
5,如果>0,回到3;
6,否则n就是结果。


do-while循环

在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环。


do

{

     <循环体语句>

}while(<循环条件>);


||       do    while             ||            while                ||    

||先进循环体在判断条件||先判断条件在进循环体||

条件和循环先后的不同,其他是一样的,即圆括号里面的判断条件是一样的。

两种循环

do-while循环和while循环很像,区别在循环体执行结束的时候才来判断条件。
即,无论如何do-while循环体都会至少执行一遍,然后在来判断条件。
与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。




小技巧

                                                                          ^
                                                                          

 =======>如果要模拟运行很大次数的循环,可以模拟较少的循环次数然后做出判断。

  
========>n=3,循环执行了四次;
                               输出的最后的0,因为在while判断中,=0也是要进行循环的。
                               结束时,count的值为-1。


程序设计思路:
1,让计算机想一个数,然后让用户来猜,用户没输入一个数,就告诉它时大了,还是小了,直到用户猜中为止,最后还要告诉它猜了多少次。
2,因为需要不停的重复让用户猜,所以需要用到循环
3,在实际写出程序之前我们可以先用文字描述程序的思路。
4,核心重点时循环的条件。
5,循环中指的条件。
具体步骤:
1,计算机随机想一个数,记在变量number里;
2,一个负责计数的变量count初始化为0;
3,让用户输入一个数字a;
4,count递增(加1);
5,判断a和number的大小关系,如果大,就输出“大”;如果a小就输出“小”;
6,如果a和number是不相等的(无论大还是小),程序转回第三步;(循环的条件是a和number是不等的)
7.否则,程序输出“猜中”和次数,最后结束。

随机数(C标准库里的函数)

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



%100

x%n 的结果是[0,n-1]0到n-1以内的一个整数 (即取余得到一个100以内的数)

程序

用do-while,一定要进入循环,所以用这个合适。

算平均数

用户输入一系列的正整数,最后输入-1,表示输入结束,然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数
变量->算法->流程图->程序

设计思考
1,一个记录都到的整数变量
2,平均数要怎么算?
3,只需要没读到一个数,就把它加到一个累加变量里,到全部数据读完,在拿它取除读到的数的个数就可以了。
4,一个变量记录累加的结果,一个变量记录都到的数的个数。

算法
1,初始化变量sun和count为0;
2,读入number;
3,如果number不是-1,则将number加入sum,并将count加1,回到步骤2;
4,如果number是-1,则计算和打印除sum/count(注意换成浮点来计算)。

流程图


程序


数的逆序

整数的分解

1,一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算。
2,对一个整数做%10的操作,就得到它的个数位。
3,对一个整数做/10的操作,就去掉它的个位数。
4,然后再对2的结果做%10,就得到原来数的十位数了。
5,依此类推。



阶乘

n!=1*2*3*4*...*n

========>for 循环

圆括号里(      i=1;        i<=n;              i++      )
                初始条件; 循环继续条件;循环每一轮要做的事情)

for循环

for循环像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1
  
    for(i=0;i<5; i=i+1 ){
            printf("%d",i);
            }

for = 对于

for(count=10;count>0;count-- )
读作:“对于一开始的count=10,当count>0时,重复做循环体,每一轮循环在做完循环体内语句后,使得count--。’’

小技巧

做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时,记录结果的变量应该初始化为1。

以上程序可以改写成

(只有在C99模式下才能用)

循环次数



 for ==while


for循环



循环选择

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

break vs continue

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

从嵌套的循环中跳出:break只能跳出其所在的循环

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

循环应用

前n项求和
                 |||||||||   
    |||||||||
                                                                                                                                                         
整数分解

  ==

求最大公约数


方法二


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值