• 締切済み

世界のナベアツ

今C言語のプログラミングを勉強しています。 3の付く数字と3の倍数をアホにさせたいのですが、うまくできません。 3の倍数は%3で余りが0になるようにするのは分かるのですが、3の付く数字(135とか)をどのようにプログラムしたら良いのか分かりません。 ぜひ教えてください。

みんなの回答

  • bravy
  • ベストアンサー率0% (0/2)
回答No.5

3の付く数字というのは、文字列に変換して'3'という文字があるかを先頭からnull文字まで操作すれば良いと思います。 sprintf(buf,"%d",number); for(*p=buf;*p!=0;p++) {  if(*p=='3') {あほだ;} } アホじゃない;

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.4

初心者でも分かりやすく書き直したつもり #include <stdio.h> int isAho( unsigned int a ); void main(void ) { for(int i=1;i<100;i++) { if( isAho( i ) == 1) printf("%dはアホです\n",i); else printf("%dはアホじゃない\n",i); } } int isAho( unsigned int a ) { if(a%3 == 0) return 1; while(a != 0) { if(a%10==3 ) return 1; a/=10; } return 0; }

noname#113783
noname#113783
回答No.3

 アホになるか調べたい値が整数だとします。そしてその値が3の倍数か調べた後だとします。 while(値<1){ if文などの制御文で、アホか判断したい値の10の剰余を出します。そうすると、下1桁目の値が抽出できるので、これを3かどうか調べ、3なら制御文の処理で値をアホにしてループを抜けます。 if文終わり アホにしたい値自身を10で割ります。そうすると位が1つくり下がり、溢れた下1桁は無視されます(多分。処理系によって四捨五入かも知れません)。 } ループで使う値は自身を更新(10で割って)してしまうので、アホか調べる部分を関数化して値は引数として渡し、戻り値でアホだったかどうか知らせてもらうといいかも知れません。 実証していないので分かりませんが、これでできるでしょうか?

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.2

動作確認はしていないけど、こんな感じ BOOL isAho(int a) { if(a%3) { while(a) { if(a%10==3 ) return TRUE; a/=10 } return FALSE; } else return TRUE; }

starage
質問者

補足

すいません。まだC言語の勉強を始めたばかりなのでTRUEやreturn FALSEなどの意味が分かりません。 今、分かるのはif、 switch、 whileくらいです。

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

各桁を調べていって、3になっているものがあるかを判定すると良いかと思います。 sprintf を使うと簡単かもしれません。

関連するQ&A

  • ナベアツ数列

    適当に思いついた感じの問題なんですが 世界のナベアツは3の倍数と3のつく数字だけアホになるという。 そこで自然数において3の倍数と3のつく数字だけを集めた数列N= {3,6,9,12,13...}を考えたとき、数列Nの2008番目の要 素はいくらになるか。 こういった、規則性のない数列に対して何番目の要素の値を求めるとい う操作は単純に数えていくしかないのでしょうか? くだらない質問ですみません。よろしくお願いします。

  • C言語

    C言語のプログラムで『正の整数を読み込み、その整数より小さい3の倍数を全て表示するプログラムを作る』 これをどなたかプログラミングしてください。お願いします。

  • 3のつく数字と3の倍数のみを表示するプログラム

    C言語で3のつく数字と3の倍数のみ(1~150)を表示するプログラムを作りたいのですがどうすればいいのでしょうか?

  • C言語 プログラミング

    C言語プログラミングで分からない問題があるのですが、 nを入力して、0~nまでの数値のうち、 (1)偶数のみ足しなさい (2)3の倍数のみ足しなさい の2つのプログラムがわからいのですがどなたか教しえていただけませんか?

  • 背理法の問題なのですが

    a、b、cを自然数にするとき次の事を示せ。 (1)aが3の倍数でないならばa^-1は3の倍数である。 (2)a^2+b^2=c^2ならばa,bのうち少なくとも一つは3の倍数である。 (1)はわかりました。 (2)は解説を読んでもよくわかりません。 [解説] a,bともに3の倍数でないと仮定する。 (1)によりa^2+b^2を3で割った余りは1+1=2 一方c^2を3でわると余りは0か1となり矛盾するからa,bのうち少なくとも一つは3の倍数である。 >(1)によりa^2+b^2を3で割った余りは1+1=2 >一方c^2を3でわると余りは0か1となり (1)のどこを利用しているのかがよくわかりません。 あと何故c^2を3でわると余りは0か1になるのでしょうか? 数字を代入してみるとそのとおりなのはよくわかるのですが・・。 よろしくお願いします。

  • C言語の問題です。何卒ご教示願います。10個の整数

    C言語の問題です。何卒ご教示願います。10個の整数を入力し配列に保存した後、入力された数字の中に5の倍数が含まれているかを調べ、 含まれていた時には「5の倍数が含まれています」含まれていない時に「5の倍数が含まれていません」と表示させなさい。 なるべく早急にお願い申し上げます。 お手数ですが一からプログラミングを作成お願いします (たとえば♯include<stdio.h>からreturn 0;}とか)

  • c言語プログラミングで1から10までの数字を分散を

    c言語プログラミングで1から10までの数字を分散を求めるプログラムを作成したいのですがわからずこまってます 分かるかたお願いします

  • 初めて自分で作ったプログラムは?

    現在C言語を勉強しているものです。 これからほかの言語も勉強していくつもりです。 C言語はプログラミングの基本だと思ってます。 最終的に物理的シミュレーションやCGゲームを作ろうと考えています。 そこで質問です。 (1) 皆さんが初めて勉強したプログラミング言語は何ですか。? (2) その言語を使って初めて自分で考えて作ったプログラムは何でしたか? その時の心境とかできた後の感想とかも教えていただけると嬉しいです。 (うれしかった、がっかりした、等々)

  • 確率の問題(応用)

    10枚のカードに0から9までの数字が1つずつ書いてある。次の確率を求めよ。 (1)この10枚のカードの中から2枚同時に抜き出したとき、その2つの数の和が3の倍数である確率を求めよ。 解説 2つの数の和が3の倍数であるのはどういうときか考えます。 2数をx、yとして x+yが3の倍数である ←→x+yが3で割り切れる ←→(xを3で割った余り)+(yを3で割った余り)=3の倍数 と言い換え、x、yを予め3で割っておくのがポイントです。 すなわち10枚のカードを3で割った余りで分類し A={0、3、6、9}、B={1、4、7}、C={2、5、8}とするわけです。 教えてほしいところ ・ x+yが3の倍数であるであるならば(xを3で割った余り)+(yを3で割った余り)=3の倍数 といえるが理解できません。なぜ、こういえるのでしょうか?? ・0+1=1のとき、3でわっても余りないですよね。こういう場合は考慮入れなくていいのですか?? ・A={0、3、6、9}、B={1、4、7}、C={2、5、8}とするわけです。 なぜ、A、B、Cに分けるのでしょうか?? 確率苦手です。 教えて下さい

  • 初めてプログラミングする人のおすすめ言語は?

    プログラミングに興味があるので、プログラミングの勉強をしようと思っているのですが、どの言語がおすすめなのでしょうか? 色々なサイトで調べたら、「C」、「C++」、「C#」などが一番メジャーだと書いてありました。初めはプログラムを勉強する人は「C」を選んだ方がいいのでしょうか? あるサイトでは、今からの時代なら「C++」を勉強した方がいいと書いてありました。 他の方の意見やアドバイスを聞きたいです。 よろしくおねがいいたします。

専門家に質問してみよう