C言語プログラムの課題の解説

このQ&Aのポイント
  • 整数値を表示するC言語プログラムの作成方法について解説します。
  • 実数値を表示するC言語プログラムの作成方法について解説します。
  • 文字型を表示するC言語プログラムの作成方法について解説します。
回答を見る
  • ベストアンサー

C言語プログラムの課題

大学で以下のような課題が出ました。でも全然わかりません。わかる方がいらっしゃったら、是非教えてほしいです★ 1整数値123を変数iに代入して、iの値を表示するプログラムを作成せよ。 2実数値3.14159を変数xに代入して、xの値を表示するプログラムを作成せよ。 3文字型せーた'A'を変数chに代入して、chの値を表示するプログラムを作成せよ。ただし、chの値を表示する際には、%d,%x,%cの書式を用いること。 4キーボードから入力された2つの整数値i,jの値を画面に表示するプログラムを作成せよ。 5キーボードから2つの整数値を、変数in1とin2に入力して、以下の計算をした結果を画面に表示するプログラムを作成せよ。 in1+in2= in1-in2= in1*in2= in1/in2= in1%in2=

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

  • ベストアンサー
  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.1

C言語はどの程度理解してらっしゃいますか? それによって回答の仕方も変わってくるのですが… 変数の型についてはご存知ですか? int型=整数とか、float型=浮動小数点とか… 1の場合、「整数値を代入」とされているので、使用するのはint型ですね。 答) int i=123; printf("%d", i); 同じ要領で、2、3もそれぞれの問題にあった型を使用してください。 %d,%x,%cというのは、ただchの中身を表示するのではなくて、色々なフォーマットで表示してみよう。 という事だと思います。 例えば… printd("%d", ch); %dは整数値を表示する時に使用しますが、chの中に入っているのは'A'という文字です。 これは一体どう表示されるのでしょうか? 答えはAの文字コードです。 他の%xや%cも表示してみて、結果をご覧下さい。 なかなか興味深いですよ。 4はこれまでの応用ですね。 printf("%d", i); では、iの中身しか表示できません。 これを2つ一緒に表現しようとすると、どうすれば良いでしょう? 5も同じく応用問題です。 scanf関数なりを使用して、キーボードから値を取得して計算させれば良いですね。 例) scanf("%d", &in1); あとは計算用に変数を一つ用意するもよし、計算させながら表示するもよし… この辺はお好みで。 MSDN等とにらめっこしながら考えてみてください。 参考URLはC、C++について解説されているページです。 是非参考にしてください。

参考URL:
http://www.kumei.ne.jp/c_lang/
murasin
質問者

お礼

丁寧な回答ありがとうございました!! C言語は正直言ってほとんど理解していません。 変数型は知ってます。 1、2、3、4の問題はなんとなく解りました! 5のscanf関数は習ってないので解りませんが、がんばってやってみようと思います! ところで4はgetcharとかは使わないですかね? 参考サイトまで教えていただき本当にありがとうございました! 早速、参考にしたいと思います!

その他の回答 (1)

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.2

>ところで4はgetcharとかは使わないですかね? もちろんgetcharでもできますよ。 ただgetcharはint型の文字コードを返すので、 例え整数を入力されても printf("%d", i); では正しく表示されないんですよ。 この場合、 printf("%c", i); とします。 さらに問題になるのが%cは「1文字表示するよ」 という意味なので、「12」と入力されても「1」としか 表示されません。 「文字列を表示するよ」という意味の%sに変えてみると、 引数の型が合わずにエラーが出ます。 これを回避して、正しく入力された文字列を表示するには 下記のようにちょっと手間をかけないといけません。  for( i = 0; (i < 80) && ((ch = getchar()) != EOF) && (ch != '\n'); i++ )  {   buffer[i] = ch;     // 一文字ずつ読み込んで配列に格納  }  buffer[i] = '\0';     // 文字の終わりの印を入れる  printf( "%s\n", buffer ); // 表示 4の場合は、整数を2つ入力してもらわないといけないので、 こんな手間なことを2回もするくらいなら、5と同様にscanfを使用する方が良いと思います。 「1桁の数値しか入力しない」というお約束があった場合はgetcharでも全く問題ないと思います。

murasin
質問者

お礼

お礼のお返事遅くなり失礼しました! 1度お礼をしたんですが、なぜか表示されてませんでした。 改めて なるほど。getcharは1桁の数値しかだめなのですね。 わざわざ丁寧な解答ありがとうございました!!

関連するQ&A

  • C言語プログラム

    こんな課題が出たのですが、さっぱりわかりません。 誰か解る人がいたら教えてほしいです。 1 3+5+7+…+nと奇数の和を求め、和が100を越えたときのnの値を求めて表示するプログラムをdo~whileを使って作成しなさい。 2  キーボードから3つの数を読み込み、最大値を求める処理を繰り返し行うプログラムを、do~whileを使って作成しなさい。繰り返しの終了は、計算のあとで、'S'(1文字)が入力されるまでとし、それ以外の文字では、処理を続行すること。 3  整数型1次元配列kに整数123,456,789をそれぞれ代入し、その内容を表示するプログラムを作成しなさい。 4  文字型1次元配列strに'u'を、'n'、'i'、'x'それぞれ代入し、その内容を文字列として出力するプログラムを作成しなさい。 5  要素数50の整数型1次元配列mの要素すべてに、その添字に対応した0~49の数値を代入し、その内容を表示するプログラムを作成しなさい。 3は #include <stdio.h> main() { int k[3]; k[0] = 123; k[1] = 456; k[2] = 789; printf("%d\n%d\n%d", k[0], k[1], k[2]); return 0; } と解いてみたんですが、やっぱ間違えてますよね?

  • C言語の課題

    1、整数型の変数を2個だけ使い、キーボードから5個の整数を読み込み負の整数のみの和を表示プログラムを作れ 2、1、の問題について使える変数を3個に増やしたうえでwhile文を使ったプログラムを作れ 3、1、の問題について使える変数を3個に増やしたうえfor文を使ったプログラムを作れ 1を作ろうとするとかなり長くなってしまうのです… ヒントでもいいので教えてください。

  • c言語プログラムの課題が出たのですが、、

    どこが間違えているのかわかりません。 よろしければどなたか指摘いただきたいです 問題 int型変数xとyを宣言する。y = 3x + 2というのに0,1,2を代入した時のy値を表示しなさい。 作成したソースコードは次のようになります。 #include <stdio.h> int main(void) { int x, y, i; for(i=0; i<=2; i++) { x = x + i; y = 3 * x + 2; printf("x = %d, y = 3 * x + 2 = %d\n", x, y); } return 0; } また、エラー表示は授業ように作られたサイトに提出にてわかるものとなっており、 「y = 3 * x + 2 を3回計算してください. 修正し,再提出してください.」 というような表示が出ました

  • c言語のソースコードを教えて下さい

    キーボードから10個の正整数値を読み込み,合計値を表示するプログラムを作りなさい。 ただし,キーボードから読み込んだ値はint型変数xにしまわれるものとし,変数はこのxと回数を数えるint型変数countと合計値をしまうint型変数sumのみを用いることとする。 このプログラムのソースコードを教えて下さい。 解説もよろしくお願いします。

  • c言語プログラム

    加減乗除および剰余の演算記号(+-* / %)と2つの整数を入力し、入力した2つの整数に対して入力した演算を施して表示するプログラムをif文ではなくswitch文を用いて作成しなさいなお、演算記号入力の際に間違った記号(+ - * / % 以外)を入力した場合は+を入力したものとして計算するものとしなさい。 ヒントで 変数としては入力演算記号に対応する変数op、入力する2つの整数に対応する変数m,n、答えに対応する変数ansを使うとよいでしょう宣言についてはopは記号なのでcharで宣言しますが、あとはすべて整数ですのでintで宣言 まずやることは演算記号以外の場合に+であることを表示するプログラムを組むと思うんですけど どうしたらいいのかわかりません力を御貸しください

  • C言語のプログラムについて

    大学のテストの確認をしているのですが、この問題の回答がどうしても分かりません。どなたか教えてください。 9桁以内の整数を入力し、int型の変数に格納し表示するプログラムを作成しなさい。 ただし、先頭は、数字か「+」か「-」とし、それ以外はすべて数字とする。この条件に合わないものおよび10桁以上のものは、「入力エラー」として表示後、再入力を行うこと。 例えば「-123456」や「45678989」は、整数としてint型の変数に格納し、「abcd」や「123-234」は、「入力エラー 」を表示し、再入力を行う。 ---------------------------------------------------------------- また、自動判定の都合上、表示は以下の表示例に準拠すること。 【 23-234 *12345 -123456 を入力した例】 入力エラー 入力エラー 整数は、-123456 です。 お願いします

  • 至急!助けて下さい。プログラミングJava

    明日までの大学の課題が、わかりません。 どなたか教えてください。書き方が、わかりません。言語はJavaです。 よろしくお願い申し上げます。 1.条件分岐 整数d,xをキーボードから入力させ、 dとzの差の大きさ(絶対値)を計算し、結果を表示するプログラムを作りなさい。 2.繰り返し 整数qcをキーボードから入力させ、1からqcまでの整数を全て表示させるプログラムを作りなさい 3.式 式y=xの二乗+6x+10の値を、x=13から21まで、一つづつ変化させた時のyの値を表示しなさい。 4.和 1から58までの和1+2+3+….+58をプログラムを作って求めなさい。 5.乱数 乱数関数rnd()を使って、変数wgに0~383までの適当な数値を代入し、その結果を出力しなさい。 6.円を描く for文を使って、適当な位置に半径17の赤い円を、87個だけ描きなさい。 7.余り 変数qeに整数を入力させ、その変数qeが6で割り切れたら「割り切れる」と表示し、それ以外は「割り切れない」と表示するプログラムを作りなさい。 *ヒント %演算子で割った余りが求められる。 例えば、5%3は2となる。 8.break文 変数bjに0から1000までの乱数を作っては代入することを繰り返し、bjの値が900以上になったら繰り返しを止めて、bjの値を出力するプログラムを作りなさい。 9.カウント 1から1076までの整数の中で、8で割り切れる数がいくつあるかカウントしてその数を表示しなさい。 以上です。 どうかお助け下さいm(__)m

  • C言語、配列の積

    整数型二次元配列x,yに適当な値をキーボードから入力し、次にそれらの行列の積を計算して二次元配列zに代入し、行列x,y,zの要素を出力せよ。但し、配列の大きさは最初にキーボードから入力しておき、変数宣言においては、配列の大きさを大きめに宣言しておき、キーボードから入力する配列の大きさはその範囲内で入力するようにせよ。 という問題です。よろしくお願いいたします

  • 3つほどプログラムをおしえてください。

    (1)100までの整数をいくつか入力し、10刻みでの個数を表示し、負の数が入力されると整数の入力を終わるプログラムです。各範囲の個数は配列に格納する。 実行結果 65 30 21 95 5 -1 0--- 9 : 1 10--- 19 : 0 20--- 29 : 1 30--- 39 : 1 40--- 49 : 0 50--- 59 : 0 60--- 69 : 1 70--- 79 : 0 80--- 89 : 0 90---100 : 1 (2)数字の文字列を入力し、その文字列に含まれる各数字(文字)'0','1',~'9'の個数を表示するプログラムの作成。 実行結果 1231234567 0: 0 1: 2 2: 2 3: 2 4: 1 5: 1 6: 1 7: 1 8: 0 9: 0 (3) 変数xは、0~1までの0.01刻みの値(101個)を取るとする。このとき、2次関数 f(x)=3x^2+2x+1の値が2.0<f(x)<3.0となるxの値をの個数を求めるプログラムの作成。ただし、xを引数としf(x)の値を返す関数を作成して、それを使用する。 実行結果 number=21 やってるうちにわけがわからなくなってしまいます。どなたかよろしくおねがいします。

  • C言語のプログラミングについて

    私は大学2年なのですが、現在留年するかしないかというぎりぎりのところに立っています。好意で単位をなんとかしてくれる教授を探し出し、C言語の宿題を出されました。ですが私は根っからの文型で、プログラミングなどしたこともありません。教科書を図書館で借りて読んでみるものの、すぐ理解できるような難易度ではないことだけがわかりました。 そこでもしよろしければ、プログラムを教えてもらいたいです。 1.キーボードから整数の入力を繰り返す。0以下の値が入力されたら終了し、入力した値の中の最小値を表示する。また、それが何番目に入力された値かもあわせて表示する。(6つの整数を入力、最後の整数は0を入力することとする。) 実行結果例 整数を入力: 6 整数を入力: 5 整数を入力: 4 整数を入力: 3 整数を入力: 2 整数を入力: 1 整数を入力: 0 最小値は6番目の1 2.キーボードから整数の入力を4回繰り返し、それらの値を2次元配列Aの各要素に順に代入し、その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ。 実行結果例 1行1列の要素? 6 1行2列の要素? 5 2行1列の要素? 4 2行2列の要素? 3 行列A = 6 5 4 3 行列式 = 2 3.キーボードから西暦年を入力し,その年が閏年のときは「○○年はうるう年です」と表示し,そうでないならば「○○年はうるう年ではありません」と表示するプログラムを作成しなさい. なお,閏年の定義は以下の通りである. ・西暦年が4で割り切れる年は閏年 ・ただし,西暦年が100で割り切れる年は平年 ・ただし,西暦年が400で割り切れる年は閏年 実行結果例 西暦年を入力してください. 1987 1987 年はXXXXXXXX 一時的ではありますが、皆様のお力をお借りしたいです。 もちろん、ここでお答えをもらってもわからないままにせずに、無事進級することができたら独学で勉強しようとは思ってます。 なお、理系の人たちはVisualBasicというソフトを使っているようです。よろしくお願い致します。

専門家に質問してみよう