• 締切済み

C言語(プログラミング)についてお聞きしたいのですが…

do whileの文を使って入力した整数の好きな桁数を表すプログラムを作りたいのですが、どうしたらいいのでしょうか。桁数を表す所だけどうしてもできないのですが…

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

なんとなくそれらしいのを作ってみました。 正の数だけです。チェックもなし #include <stdio.h> #include <stdlib.h> #include <string.h> void main(void){ char number[80]; char keta[16]; int pos; int len; redo: printf("適当な数字を入力して下さい>"); gets(number); do{ printf( "\n表示したい桁を指定して下さい\n" "0を入力するとプログラムを終了します。\n" "マイナスの数字を入力すると、数字を変更します\n" "表示したい桁>"); gets(keta); pos=atoi(keta); if(pos<0)goto redo; if(pos){ len=strlen(number); printf("\n%s\n%d桁目:%c\n",number,pos,number[len-pos]); } }while(pos); }

回答No.2

>例えば、12345の数字なら3桁目なら3とか、5桁目なら1とかです。 数字が文字変数の配列なら、num[0]='1' num[1]='2' num[2]='3' ... になっているはずなので、3桁目が欲しければnum[3-1]を見れば'3'が取り出せますよね。 数字が整数型の変数(例えばnum)なら、sprintf(buf,"%d",num)とかやって、文字列に変換してからbuf[3-1]ですか。 直接整数型から数値を取り出したいなら、例えば右から3桁目なら、100で割って10の剰余で取り出せますから、左から何桁目が右から何桁目になるか計算してからさっきの計算をやればいいのでは。 do while との関連性がいまいち分かってません。すいません。 あれ、負数の時はどうするんだろう?小数の時は??

konna
質問者

補足

非負の数字だけ入れれるようにプログラミングしたいんです。負の数を入れると”負の数は入力できません”って出るようにするつもりです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

好きな桁数ってどういうことですか? 例えば 12345 と入力して、 34だけを取り出すとかそういうことですか?

konna
質問者

補足

例えば、12345の数字なら3桁目なら3とか、5桁目なら1とかです。