浅算循环小题

输入一个正整数,计算这个正整数是几位数
解:
思考:至少需要两个变量,一个作为输入值,一个进行位数的计算
这里利用输入值进行除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;
}

以上就是本篇要讲的的内容啦,希望能带给你收获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值