Description
给定一个正整数 n ,请你求出它的位数。
Input
单组输入,输入一个整数 n 。(1<= n <= 2147483647)
Output
输出一行,包含一个整数,即为 n 的位数。
Sample
Input
1234567
Output
7
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
int a;
int sum;
int main()
{
cin>>a;
do
{
sum++;
a=a/10;
}while(a);
printf("%d\n",sum);
return 0;
}
知识点:
**1.**while是当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。
2.while语句的一般表达式为:while(表达式){循环体}。
3.a++和++a 都属于自增运算符,区别是对变量a的值进行自增的时机不同。a++是先进行取值,后进行自增。++a是先进行自增,后进行取值。
例题
关于while中的表达式
while表达式(- -b,c- -,a- -)
1.表达式从左往右执行,为真则继续执行。- -b(先自减后取值),即b=1为真;c- -(先取值后自减),即c=2为真;a- -(先取值后自减),即a=1为真;所以表达式为真,进入循环体,就是执行输出三个变量的值。
2.第一次循环执行后各变量的值为,b=1,c=1,a=0。
执行循环体,输出a=0,b=1,c=1。
3.第二次循环,执行表达式(- -b,c- -,a- -); - -b(先自减后取值),即b=0,为假,不满足条件,跳出循环。
另一种题解
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
int a;
int sum;
int main()
{
cin>>a;
do
{
sum++;
}while(a=a/10);
//有警告,理解为一般while中放的是判断语句,或者自增,自减,不
适合放长表达式,表达式的执行可理解为重复判断,即重复执行。
printf("%d\n",sum);
return 0;
}