循环计算
log x
2
这个log2x错哪⼉了?
⼩套路
• 计算之前先保存原始的
值,后⾯可能有⽤
这些值是怎么定的?
为什么从0开始
为什么是>1
计数循环
int count =100;
while ( count >=0 ) {
count --; 如果要模拟运⾏⼀
printf("%d\n",count); 套路:
} ⼩很⼤次数的循环,可以模
printf("发射!\n"); 个较少的循环次数,然后作
拟
出推断。
• 这个循环需要执⾏多少次?
• 循环停下来的时候,有没有输出最后的0?
• 循环结束后,count的值是多少?
int count =10;
do {
printf("%d ", count);
count --;
} while ( count >0 );
printf("发射!\n");
循环应⽤
猜数游戏
• 让计算机来想⼀个数,然后让⽤户来猜,
⽤户每输⼊⼀个数,就告诉它是⼤了还是
⼩了,直到⽤户猜中为⽌,最后还要告诉
⽤户它猜了多少次。
• 因为需要不断重复让⽤户猜,所以需要⽤
到循环
• 在实际写出程序之前,我们可以先⽤⽂字
描述程序的思路
• 核⼼重点是循环的条件
• ⼈们往往会考虑循环终⽌的条件
1. 计算机随机想⼀个数,记在变量number⾥;
2. ⼀个负责计次数的变量count初始化为0 ;
3. 让⽤户输⼊⼀个数字a ;
4. count递增(加⼀);
ber不相等
5. 判断a和number的⼤⼩关系,如果a⼤,就输出
循环的条件是a和num
“⼤” ;如果a⼩就输出“⼩” ;
6. 如果a和number是不相等的(⽆论⼤还是⼩),程
序转回到第3步;
7. 否则,程序输出“猜中”和次数,然后结束。
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);
随机数
• 每次召唤rand()就得到⼀个随机的整数
%100
• x % n 的结果是[0, n-1]的⼀个整数
srand(time(0));
int number = rand()%