while循环

  1. while(x > 0){
  2. x /=10;
  3. n++;
  4. }
  • 注意:循环体内要有改变条件的机会
  • 如果我们把while翻译作“当”,那么一个while循环的意思就是:当条件满足时,不断的重复循环体内的语句。
  • 循环执行之前判断是否继续执行循环,所以有可能循环一次也没有被执行;
  • 条件成立是循环继续下去的条件;

do-while循环

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

do
{
<循环体语句>
}while(<循环条件>);

  • do-while循环和while循环很像,区别是do-while在循环体结束的时候才来判断条件。
  • do-while至少会执行一次循环体。
  • do-while和while都是条件满足时执行循环,条件不满足时结束循环。

循环计算

计算log2x

  1. // log2x
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int x;
  6. int ret = 0;
  7. scanf("%d", &x);
  8. int t = x;
  9. while ( x > 1 ) {
  10. x /= 2;
  11. ret ++;
  12. }
  13. printf("log2 of %d is %d.", t, ret);
  14. return 0;
  15. }

倒计时

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int n = 3;
  5. while ( n>= 0 ) {
  6. printf("%d ", n);
  7. n--;
  8. }
  9. printf("发射\n");
  10. return 0;
  11. }

猜数游戏

#include <stdio.h>

int main()
{
    int number = rand()%100+1;
    int count = 0;
    int a = 0;
    printf("我已经想好了一个1到100之间的数。");
    do {
        printf("请猜这个1到100之间数:");
        scanf("%d", &a);
        if ( a > number ) {
            printf("你猜的数大了。");
        } else if ( a < number ) {
            printf("你猜的数小了。");
        }
        count ++;
    } while (a != number);
    printf("太好了,你用了%d次就猜到了答案。\n", count);

    return 0;
}

随机数

  • 每次调用rand()就得到一个随机的整数

    算平均数

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

image.png

#include <stdio.h>

int main()
{
    int sum = 0;
    int count = 0;
    int number;

    scanf("%d", &number);
    while ( number != -1 ) {
        sum += number;
        count ++;
        scanf("%d", &number);
    }

    double dsum = sum;
    printf("The average is %f.\n", dsum / count);

    return 0;
}

整数逆序

整数的分解

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

    include

int main() { int x; scanf(“%d”, &x); int digit; int ret = 0;

while ( x> 0 ) {
    digit = x%10;
    printf("%d", digit);
    ret = ret*10 + digit;
    // printf("x=%d,digit=%d,ret=%d\n", x, digit, ret);
    x /= 10;
}
// printf("%d", ret);

return 0;

} ```