アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力した数字の桁数を表示させるというプログラムを考えています。

例)
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);
}

A 回答 (4件)

もう一点。


 scanf("%d",&a);
とするなら,
 int a;
でないといけません。

10 で割るときも整数どうしの演算で構いません。
135 → 13 → 1 → 0
となりますから。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

無事解決しました!
そうですね、整数のところしか扱わないからintでいいんですね。

ありがとうございました。

お礼日時:2003/10/15 20:53

NO.1の者です。


a<1
ではなく、
a>1
にはなっていませんか?
    • good
    • 0
この回答へのお礼

#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桁にしかなりません。
ほかにまずい点があるでしょうか?

お礼日時:2003/10/15 20:47

>if(a<=0){



if(a<1.0){
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

1.0と直してみましたが、何を入力しても1桁しかでなくなってしまいました。

お礼日時:2003/10/15 20:37

整数部分が0となる・・・a<1です

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

直してみましたが、今度は何を入力しても1桁としかでなくなってしまいました。

お礼日時:2003/10/15 20:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!