C语言笔记 6

循环


让程序识别4位数及以下整数的位数 

int x;

int n = 1;

 

scanf("%d", &x);

 

if ( x > 999 ) {

        n = 4;

} else if ( x >99 ) {

        n = 3;

} else if ( x > 9 ) {

        n = 2;

} else {

        n = 1;

}

 

printf("%d\n", n);

 因为从高往低判断,就不需要判断上限

任意范围?

三位数逆序:

eg.352%100 \rightarrow 52

int x;

int n = 0;

 

scanf("%d", &x);

 

n++;

x /= 10;

if ( x > 0 ) {

        n++;

        x /= 10;

        if ( x > 0 ) {

                n++;

                x /= 10;

                if ……

        }

}

 

printf("%d\n", n);

改进:

while

ps.计算机里整数是有范围的,不要试太大的数

while循环


while与if

格式相近,但if是一次性的,while是循环的

 格式:

while ( x > 0 ) {

        条件

大括号里的内容叫做循环体

  • 循环体内要有改变条件的机会,否则这个循环会出不来(死循环)
  • 条件成立时循环继续的条件

思考:

能否将循环体外的“ n++;    x /= 10;”去掉?

int x;
    int n = 0;

    scanf("%d", &x);
    while ( x>0 ) {
        n++;
        x /= 10;
    }

    printf("%d\n", n);

调试

模拟计算机运行

x        n

352    0

35      1

3        2

0        3

验证:测试程序常使用边界数据,如有效范围两端的数据、特殊的倍数等及个位数、10、0、负数

对于0出现了问题 

printf

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

加入printf后

do-while循环


 数位数的算法

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

do-while循环

在进入循环的时候不做检查,而是在执行完一轮后,再检查循环的条件是否满足,若满足则继续下一轮,若不满足则结束循环

do

{

        循环体语句

} while ( 循环体条件 );

*一定不要放过这个分号,否则圆括号就永远没有结束

while  vs  do-while

while  先判断条件是否满足,再进循环体(循环可能一遍都不做)

do-while  先进循环体,再判断条件(无论如何,循环都至少会执行一遍)

#include<stdio.h>

int main()
{
    int x;
    scanf("%d", &x);
    int n = 0;
    do
    {
        x /= 10;
        n++;
    } while ( x > 0 );
    printf("%d", n);

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值