• ベストアンサー

C言語の授業で

C言語の授業で -------------------- 3以上の整数を入力してください:10 素数は以下の数です: 7 5 3 2 素数は4個ありました -------------------- という感じの、入力した数以下の素数を表示するプログラムをwhile文を用いて作成するように言われたんですが・・・。 まず、while文と素数を表示するプログラムがよくわからないので、もう何をすればいいのか・・・。 どうか、ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8519/19367)
回答No.1

何をすればいいのか判らない人には、何をどう教えてよいのか判らないので、回答不能です。 まず、どこまで出来るのかを提示して下さい。 例えば「パソコンの電源を入れる事は出来ます。立ち上がって、こういう画面になります」とか。 そして、もっと具体的に「何が知りたいのか」を質問して下さい。 例えば「キーボードが何するモノなのか判りません。この、文字がいっぱい並んだモノは何ですか?」とか。 じゃないと、回答する事は出来ません。 早い話が「おととい出直して来い」と言うこと。

その他の回答 (4)

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.5

質問からでは「丸投げ」と言われる一番嫌われる行為に見えてしまう。 なんについても「自己努力」を放棄すれば成長はそこで止まる。 どこぞのQAっぽいサイトなら、自称なんちゃらがよく何も考えずに回答しているけど、 基本的にはこの質問に対しての回答のスタンスが本来あるべき姿。 ちなみに、さらに嫌われるのが「マルチポスト」。 >プログラムのエラーが大量に起こってしまい、テンパってしまいました。 ならば、最低でも「こう作ってみた」とソースの提示はすべき。 「何処まで理解しているのか」と「何が間違っているのか」がわかるので回答が付きやすくなる。

omochi1208
質問者

お礼

やっぱりそうですよね・・・。 反省してます・・・信用されてないかもしれませんが・・・。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> もう何をすればいいのか・・・。 教科書などを使って基礎から勉強しましょう。 それ以前に、素数はわかっていますよね? 質問者さんが小学生とかで、そもそも素数がわからないのであれば、そのむね補足してください。

omochi1208
質問者

お礼

みなさん、適切な回答ありがとうございます。 やはり、質問の仕方が間違っていたと深く反省しています。 まず、素数ですが、普通に把握しています。 C言語のほうですが、if文やfor文はきちんと把握できている程度です。 今回は、素数を表示するには、2~入力した数-1でwhile文を利用して割れるかどうか・・・? と言う感じにすれば求まるのではと思い、試行錯誤していましたが、プログラムのエラーが大量に起こってしまい、テンパってしまいました。 質問の内容ですが、試行錯誤している間に問題が解決してしまいました・・・本当に申し訳ございません。 次からは、きちんと入力したところまで等を入力し、回答しやすいようにしたいと思います。

  • Kazma_hk
  • ベストアンサー率26% (115/428)
回答No.3

他の回答者さんと基本的には同じことを言います。 まず、どこまでできていますか? 数値の入力はできている? 素数を求めるところまでは? 素数を表示まではできる? もしかして、C言語でのWhile文がわかってない? まずは、質問者さんがどこまでをどのレベルまでできているのかを 提示してもらわないとだめだと思いますよ? ここで、回答もらってそれが構造体やら配列を使ったもの を提示されてもいいというなら別ですが・・・。

  • Interest
  • ベストアンサー率31% (207/659)
回答No.2

すでにC言語の授業が始まっているので、ソースコードの書き方とコンパイルの仕方は知っているという前提で説明します。 > while文と素数を表示するプログラムがよくわからないので、もう何をすればいいのか・・・。 まずはC言語の教科書を開いて、while文のページを読みましょう。 続いて、素数について。素数が何か知らなければ、高校の数学の教科書を読みましょう。 キーワードとしては、「エラトステネスの篩(ふるい)」を挙げておきます。自分で調べてね。

関連するQ&A

  • C言語についてなんですが

    プログラムの作成で分からないところがあります。 「二つの整数値を読み込み、小さいほうの数以上で大きい数以下の 整数を全て加えた値を表示するプログラムをdo文を使って 作成せよ。」 下の図のようにしたいです。 2つの整数を入力せよ。 整数A:37 整数B:28 28以上37以下の全整数の和は325です。 よろしくお願いします。

  • C言語の勉強しています。教えてください

    私は現在大学生でC言語が面白そうなので独学しているのですが、分からない点があり、参考書に解答も付属していないのでどなたか教えていただけると非常に助かります。 (参考書名:新版 明解C言語 入門編 著者:柴田望洋) p65の演習4-3 問題:2つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成せよ。 (例)このように表示させたい 2つの整数を入力して下さい。 整数1:37(←例です。ここの数はscanfを利用して手動で打ち込みます) 整数2:28 28以上37以下の全整数の和は325です。 これまでに学習した事を利用して解きたいのでまず、自分でプログラムを書いてみますので訂正していただければ非常に助かります。 どうかお願いします

  • C言語 ループの問題

    キーボードから入力される整数を読み込み、その中で10以上の数の個数を数えてその都度出力し、0が入力されたら止まるようなプログラムをwhile文を使って作成するとき、if文をどのようにつかうかがわかりません。

  • c言語のプログラムで

    c言語で 2つの整数を読み込んで小さいほうの数以上で大きいほうの数以下の整数をすべて加えた値を表示するプログラム で最後の表示の仕方がわかりません。 実行結果は 整数1:37 整数2:28 28以上37以下の全整数は325です。と表示されるはずです。 この表示の3行目の28と37の表示がどうやればよいのかわかりません。 #include <stdio.h> int main(void) { int a, b; int sum=0; printf("整数1:"); scanf("%d",&a); printf("整数2:"); scanf("%d",&b); if(a>b) do{ sum=sum+b; b=b+1; }while(b<=a); else do{ sum=sum+a; a=a+1; }while(a<=b); printf("%d以上%d以下の全整数の和は%dです。",a,b,sum); return(0); } 全整数の表示はできます。 do文の中でa=cとかにしてやってみましたが、うまくいきませんでした。 お願いします。

  • C言語

    C言語初心者です。 整数を入力しその数が偶数ならプログラムを終了する。奇数ならそれが3の倍数か3の倍数でないかを表示する。入力した数が奇数ならこの操作を何回も繰り返すプログラムを作りたいです。 このプログラムのソースを教えてください。

  • C言語について。初心者です。

    参考書の問題で、「整数値以下である正の偶数を照準に表示するプログラムを作成せよ」 例)整数を入力してください:19   2 4 6 8 10 12 14 16 18 とあり、自分で以下のプログラムを作ってみたのですが「222222・・・・・・・・・・・・・・・・・・」となるだけです。どう変えればちゃんと表示されるようになりますか?ちなみにwhile文を使うのが条件です。 #include<stdio.h> int main(void) {       int na; int nb=0; printf("整数を入力してください。:"); scanf("%d",&na); while(nb<na) printf("%d",nb+2); putchar('\n'); return 0; }

  • C言語の勉強でわからないところがあります。

    最近C言語の勉強を始めたのですが明解C言語入門編の演習4-3でうまくいかなくて困っています。 二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成するものなのですが、うまく起動しません。 まだ勉強を始めたばかりの自分が作ったものなので、つまらないミスや勘違いからでてきたエラーだと思うのですが、見て頂けると嬉しいです。 プログラムは以下の通りです。 #include <stdio.h> int main(void) { int n1,n2; int num=n1; int sub=n2; puts("二つの整数を入力してください"); printf("整数1:"); scanf("%d",&n1); printf("整数2:"); scanf("%d",&n2); printf("%d以上%d以下の全整数の和は", n1>n2 ? n1,n2:n2,n1); do{ if (n1>n2) num=n1+sub; sub=sub+1; printf("%d",num); else sub=n2+num; num=num+1; printf("%d",sub); }while(sub==n1 || num ==n2); return 0; } とすると、「22行目」で記述エラーを発見しました。 「identifier」を付け忘れています。となり、起動されることができません。 elseの文を削除すれば動作するのですが、37,28と入力した場合、1638137と大きすぎる数になってしまいます。 そこで二つ質問があります。 一つ目は、「22行目」で記述エラーを発見しました。 「identifier」を付け忘れています。といったものは、具体的に何処が間違っているのか、です。 二つ目は、何故else文を削除した場合のプログラムで、大きすぎる数になってしまうのかが知りたいのです。 この形に拘らずに組むのもいくつか思い浮かぶのですが、何故この形では動かないのかを知りたいので、間違っているところを指摘して頂けると嬉しいです。 そして、もし可能ならなのですが、正答のようなものは書きこまないで頂けると嬉しいです、間違っている理由だけを指摘して頂いて、なんとか後は自分で考えてみたくて・・・ ワガママな質問ですが、よろしくお願いします。

  • C言語の問題

    以下はC言語の問題です。お教えください。 1000以下の素数を求めるプログラム prog.c を作成せよ。各素数を整数4桁で出力し、15個の素数を出力した時点で改行処理 を行うこと。作成したプログラムを提出せよ。 です。 僕の考えでは、 #include <stdio.h> #include <math.h> main(){ int i; int j; int ix; int k; printf("正の整数を入力して下さい: "); scanf("%d",&i); ix=(int)(sqrt((double)i)); k=0; for(j=2;j<=ix;j++) { if(i%j==0) { k=1; } } if(k==0) { printf("%d は素数です\n",i); } else { printf("%d は素数ではありません\n",i); } となると思うのですが。どうやら違うようです。全然わからないので、正しい答えを教えてください。

  • C++について・・・。

    学校の課題で、 ゼロが入力されるまで整数を読み込み,その総和と最大値を出力するプログラムを作成しなさい。do while文を使う。 というものが出されました。  [3.1] OS: Windows   [3.2] 言語: C++ Visual C++ 2005 なのですが…手も足も出ないです…誰か教えてください。

  • switch文とwhile文を用いたプログラムに関して

    swich文とwhile文を用いたプログラムについて 授業の課題で、swich文とwhile文を用いたプログラムを作りなさい。いう課題が出ました。 5桁以上9桁以下の正の整数を入力し、4で割り切れたとき、何桁の数字かを出力。4でわって1余ったとき、すべての桁の合計を出力。3余ったとき、与えられた数の逆を変数に代入し、その変数を出力(単純に表示するわけではなく、数字として表示) といったものです。 途中からの授業参加で、C言語に関する知識はほとんどありません。do文を用いたプログラムは見つけれたのですが、while文とswich文を用いろということなので、do文は使えないです。 どなたか教えていただけませんか? 今日中にわからないとちょっとやばいです・・・。 よろしくお願いします

専門家に質問してみよう