A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高伟杰 中级黑马   /  2015-4-21 12:42  /  880 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高伟杰 于 2015-4-21 14:43 编辑

#include <stdio.h>
int main()
{
        int n=0 , x;
        printf("请输入要计数的整数:");
        scanf("%d",&x);
        while (x>0){
                n++;
                x/=10;
        }
        printf("%d",n);
}
看下面的,在scanf下面多了两行。
#include <stdio.h>
int main()
{
        int n=0 , x;
        printf("请输入要计数的整数:");
        scanf("%d",&x);
        n++;
        x/=10
        while (x>0){
                n++;
                x/=10;
        }
        printf("%d",n);
}
都可以正常运行,问下区别在哪?

6 个回复

倒序浏览
第一段代码是:while循环,第二段代码:相关于do-while循环,先执行一循环体在进行判断
回复 使用道具 举报
DarkHorseChuck 发表于 2015-4-21 13:23
第一段代码是:while循环,第二段代码:相关于do-while循环,先执行一循环体在进行判断 ...

为什么要先执行?是什么原因要在while前加那两段代码?
回复 使用道具 举报
高伟杰 发表于 2015-4-21 13:28
为什么要先执行?是什么原因要在while前加那两段代码?
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int n=0 , x;
  5.         printf("请输入要计数的整数:");
  6.         scanf("%d",&x);
  7.         n++;
  8. 可以写成这样
  9. [code]#include <stdio.h>
  10. int main()
  11. {
  12.         int n=0 , x;
  13.         printf("请输入要计数的整数:");
  14.         scanf("%d",&x);
  15.         do{
  16.                 n++;
  17.                 x/=10;
  18.         } while(x>0)
  19.         printf("%d",n);
  20. }
复制代码

        x/=10
        while (x>0){
                n++;
                x/=10;
        }
        printf("%d",n);
}[/code]

至于为什么先执行, 这是do-while的特性,先执行{}的代码后得到x的值然后去判断是否继续执行{}的代码
回复 使用道具 举报
写成这样
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int n=0 , x;
  5.         printf("请输入要计数的整数:");
  6.         scanf("%d",&x);
  7.         do{
  8.                 n++;
  9.                 x/=10;
  10.         } while(x>0)
  11.         printf("%d",n);
  12. }
复制代码
回复 使用道具 举报
第二个等于不看while后面的条件, 先执行一次了,第一个你条件成立x>0才可以往下走啊
回复 使用道具 举报
OK,感谢大家
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马