桁数を求めるプログラム。
入力した数字の桁数を表示させるというプログラムを考えています。
例)
135
この数字の桁数は3桁です。
などと表示させたいと思っています。
それで、私は入力した数値を10で割っていって入力した数値aがa<=0になったらループを終了して
何回ループしたかのカウンタで桁数を表示させようかと考えました。
たとえば135→13.5→1.35→0.135で整数部分が0となるのでループを打ち切って
3回繰り返したので3桁と表示させたいと思いました。
それでプログラムを考えてみたのですが、どうにもうまくいきいません。
どのように修正したら桁数が表示できるようになるでしょうか?
#include <stdio.h>
main()
{
double a=0;
int n=1;
scanf("%d",&a);
while(1)
{
a=a/10.0;
if(a<=0){
break;
}
n++;
}
printf("その数は%d桁です。\n",n);
}
回答(4件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.4ベストアンサー20pt
もう一点。
scanf("%d",&a);
とするなら,
int a;
でないといけません。
10 で割るときも整数どうしの演算で構いません。
135 → 13 → 1 → 0
となりますから。
この回答へのお礼
回答ありがとうございました。
無事解決しました!
そうですね、整数のところしか扱わないからintでいいんですね。
ありがとうございました。
NO.1の者です。
a<1
ではなく、
a>1
にはなっていませんか?
この回答へのお礼
#include <stdio.h>
main()
{
double a=0;
int n=1;
scanf("%d",&a);
while(1)
{
a=a/10.0;
if(a<1){
break;
}
n++;
}
printf("その数は%d桁です。\n",n);
}
でif(a<1)とだけ直してみましたが、実行結果は1桁にしかなりません。
ほかにまずい点があるでしょうか?
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











