题:输入一个正整数,计算这个正整数是几位数
解:
思考:至少需要两个变量,一个作为输入值,一个进行位数的计算
这里利用输入值进行除10的运算次数,用次数作为位数
//用while循环做例
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
//输入
printf("请输入一个正整数:");
scanf("%d", &i);
while (i)
{
count++;
i /= 10;
}
//输出
printf("该正整数是%d位数",count);
return 0;
}
如果我要把“该正整数”换成我输入的数,这里可能就会出错了
可能会简单地改成下面这样
printf("%d是%d位数",i,count);
但是最后i的值可是为0啊,当然不能直接就放上去,所以又想到重新设一个变量来作为我们的输入值,于是:
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
int num = i;
//输入
printf("请输入一个正整数:");
scanf("%d", &i);
while (i)
{
count++;
i /= 10;
}
printf("%d是%d位数",num,count);
return 0;
}
看似完美,最后却是这个结果,???
是哪里出问题了呢?
在这里,我们试图让num=i,但是i是我们的输入值啊,我们如果早早的令其相等,那num只能=0,所以我们要在输入后再进行初始化
int i = 0;
int count = 0;
//输入
printf("请输入一个正整数:");
scanf("%d", &i);
int num = i;
这样就能得到我们想要的结果:
同时这也是一道可以使用do…while循环的典型题目:
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
printf("请输入一个正整数:");
scanf("%d", &i);
int num = i;
do
{
count++;
i /= 10;
} while (i);
printf("%d是%d位数", num, count);
return 0;
}
以上就是本篇要讲的的内容啦,希望能带给你收获