在线C环境:https://clin.icourse163.org/
1. while循环
- 如果我们把while翻译作“当”,那么⼀个 while循环的意思就是:当条件满⾜时,不 断地重复循环体内的语句。
- 循环执⾏之前判断是否继续循环,所以有 可能循环⼀次也没有被执⾏;
- 条件成⽴是循环继续的条件。
看程序运⾏结果
⼈脑模拟计算机的运⾏,在纸上列出所有 的变量,随着程序的进展不断重新计算变 量的值。当程序运⾏结束时,留在表格最 下⾯的就是程序的最终结果
验证
测试程序常使⽤边界数据,如有效范围两 端的数据、特殊的倍数等
个位数;
10;
0;
负数。
调试
在程序适当的地⽅插⼊printf 来输出变量的内容
#include <stdio.h> int main() { int x; int n = 0; scanf("%d",&x); n++; x /= 10; while(x > 0){ printf("x=%d,n=%d\n",x,n); n++; x /= 10; } printf("%d\n",n); return 0; }
2. do-while循环
- 在进⼊循环的时候不做检查,⽽是在执⾏ 完⼀轮循环体的代码之后,再来检查循环 的条件是否满⾜,如果满⾜则继续下⼀轮 循环,不满⾜则结束循环
3. 两种循环
do-while循环和while循环很像,区别是在 循环体执⾏结束的时候才来判断条件。也 就是说,⽆论如何,循环都会执⾏⾄少⼀ 遍,然后再来判断条件。与while循环相同 的是,条件满⾜时执⾏循环,条件不满⾜ 时结束循环。
#include <stdio.h> int main() { int x; scanf("%d",&x); int n=0; do{ x/=10; n++; }while(x>0); //while();后面的分号要有 printf("%d",n); return 0; }
4. 循环的应用
log^2X
#include <stdio.h> int main() { int x; int ret = 0; scanf("%d",&x); int t = x; while(x > 1){ x /= 2; ret++; } printf("log2 of %d is %d",t,ret); return 0; }
5. 计数循环
#include <stdio.h> int main() { int count = 100; while( count > 0){ count--; printf("%d\n",count); } printf("发射!\n"); return 0; }
6. 猜数游戏
- 让计算机来想⼀个数,然后让⽤户来猜, ⽤户每输⼊⼀个数,就告诉它是⼤了还是 ⼩了,直到⽤户猜中为⽌,最后还要告诉 ⽤户它猜了多少次。
- 因为需要不断重复让⽤户猜,所以需要⽤ 到循环
- 在实际写出程序之前,我们可以先⽤⽂字 描述程序的思路
- 核⼼重点是循环的条件
- ⼈们往往会考虑循环终⽌的条件
- 计算机随机想⼀个数,记在变量number⾥;
- ⼀个负责计次数的变量count初始化为0;
- 让⽤户输⼊⼀个数字a;
- count递增(加⼀);
- 判断a和number的⼤⼩关系,如果a⼤,就输出 “⼤”;如果a⼩就输出“⼩”;
- 如果a和number是不相等的(⽆论⼤还是⼩),程 序转回到第3步;
- 否则,程序输出“猜中”和次数,然后结束。
#include <stdio.h> #include <time.h> #include <stdlib.h> int main() { srand(time(0)); int number = rand()%100+1; int count = 0; int a = 0; printf("我已经想好了一个1到100之间的数。"); do{ printf("请猜这个1到100之间数:"); scanf("%d",&a); count++; if(a>number){ printf("你猜的数大了"); }else if(a<number){ printf("你猜的数小了."); } }while(a!=number); printf("太好了,你用了%d次就猜到了答案\n",count); return 0; }
7. 算平均数
- 让⽤户输⼊⼀系列的正整数,最后输⼊-1 表⽰输⼊结束,然后程序计算出这些数字 的平均数,输出输⼊的数字的个数和平均 数
- 变量->算法->流程图->程序
变量
- ⼀个记录读到的整数的变量
- 平均数要怎么算?
- 只需要每读到⼀个数,就把它加到⼀个 累加的变量⾥,到全部数据读完,再拿 它去除读到的数的个数就可以了
- ⼀个变量记录累加的结果,⼀个变量记录 读到的数的个数
算法
- 初始化变量sum和count为0;
- 读⼊number;
- 如果number不是-1,则将number 加⼊sum,并将count加1,回到 2;
- 如果number是-1,则计算和打印 出sum / count(注意换成浮点来 计算)。
#include <stdio.h> #include <time.h> #include <stdlib.h> int main() { int sum = 0; int count = 0; int number = 0; while(count != 5){ scanf("%d",&number); sum += number; count ++; printf("%d\n",sum); } printf("%f",sum/count); return 0; }