• 締切済み

プログラミング(C言語) についてです。

プログラミング(C言語) についてです。 こんばんは。学校のプログラミングの課題が全くわからない所があるので教えて欲しいです・・・。 英単語テスト(5問)のプログラムを作るということなのですが、 たとえば、「問1:犬を英語で?」という問題に対して、scanfでユーザに英単語を入力させ ユーザが「dog」と入力して正解のした場合は「正解」とだけ表示させて ユーザがそれ以外を入力し、不正解のときは「不正解」という表示と共に正しい答えを一緒に表示するようにします。 charやstrcmpを使えばいいのはわかるんですが、 どのように作ればいいのかがよくわからなくて作れません・・・ C言語に詳しい方、 問1、犬を英語で? 『入力』 正解or不正解(正答:dog)表示 問2、猫を英語で? 『入力』 正解or不正解(正答:cat)表示 問3、豚を英語で? 『入力』 正解or不正解(正答:pig)表示 問4、空を英語で? 『入力』 正解or不正解(正答:sky)表示 問5、氷を英語で? 『入力』 正解or不正解(正答:ice)表示 となるようなプログラムを誰か書いていただけませんか?(;_;) よろしくおねがいします・・・(;_;)

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

まあ,わかりやすく。 余り長い文字列は入れないように。 難しければ,for文にでもしてください。 #include<stdio.h> #include<stdlib.h> /*srand,rand,time関数を使うのに必要です*/ #include<string.h> /*strcmp関数を使うのに必要です*/ int main() { int i,j; char s[20]; /*scanfで入力するバッファです*/ char jpn[5][20]={"犬","猫","豚","空","氷"}; /*日本語データ*/ char eng[5][20]={"dog","cat","pig","sky","ice"}; /*英語データ*/ j=1; srand( (unsigned)time( NULL ) ); /*乱数発生の種です。難しければこれはいらない*/ i=rand() % 5; /*乱数を5で割った余りです。0,1,2,3,4*/ printf("終わるには0を入力してね\n"); printf("問%d %sを英語で?\n",j,jpn[i]); /*日本語表示,iがランダムだからランダムに表示します*/ scanf("%s", s); /*英語入力*/ while(strcmp(s,"0")!=0) /*入力が0でなければ繰返す*/ { if (strcmp(s,eng[i])==0) /*入力が合っているか*/ printf("正解\n"); else printf("不正解(正解:%s)\n", eng[i]); j++; i=rand() % 5; /*新しい乱数*/ printf("問%d %sを英語で?\n",j,jpn[i]); /*以下繰返し*/ scanf("%s", s); } return 0; }

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.2

せっかくなので配列で。 stdinの長さは何もチェックしてないからそこはお好みでガードを。 #include<stdio.h> #include<stdlib.h> #include<string.h> #define QA_NUM 5 int main() {   char QAList[QA_NUM][2][64] = {{"犬", "dog"},                   {"猫", "cat"},                   {"豚", "pig"},                   {"空", "sky"},                   {"氷", "ice"}};   int   QACnt;   char  Line[256];   for (QACnt = 0 ; QACnt < QA_NUM ; QACnt++)   {     printf("問%d、%sを英語で?\n", QACnt+1, &QAList[QACnt][0][0]);     memset(Line, 0x00, sizeof(Line));     scanf("%s", Line);     if (0 == strcmp(Line, &QAList[QACnt][1][0]))     {       printf("正解\n");     } else {       printf("不正解(正答:%s)\n", &QAList[QACnt][1][0]);     }   }   return 0; }

  • tyatsumi
  • ベストアンサー率58% (30/51)
回答No.1

こんな感じの5回書けばいいと思う。 問題と答えを配列に入れてループすればもっとかっこよく書けるけど、 高々5回なので書いてもいいと思う。 #include <stdio.h> #include <string.h> int main(void) { char line[256 + 1]; char *r; char s[256 + 1]; int n; printf("問1. 犬を英語で?\n"); r = fgets(line, 256, stdin); if (r == NULL) { printf("エラー\n"); return 1; } n = sscanf(line, "%s", s); if (n != 1) { printf("エラー\n"); return 1; } if (strcmp(s, "dog") == 0) { printf("正解\n"); } else { printf("不正解(正解: dog)\n"); } return 0; }

関連するQ&A

  • C言語のプログラミングについてです><

    今C言語のプログラミングの勉強をしているのですが、わからないプログラムがでてきたので教えてくださる方がいらっしゃれば、ご教授願いたいです。 数当てゲームの作成 1~9(0は除く)のなかから4つの異なる数字をランダムで選択し、4桁の数をつくる。ユーザは4つの数字の並びを入力して、作られた数を当てる。 ユーザの入力した数と作られた数を比較して、同じ数字が同じ桁にある場合は"Hit"というヒントを与える。また、同じ数字が異なる桁にある場合は"Blow"というヒントを与える。すなわち、作られた数が5849で、ユーザが4829という数値を入力した場合、"2 Hit 1 Blow"というヒントが表示されるようにする。 ユーザは10回まで、入力するチャンスが与えられる。 といった感じのプログラミングなんですが、C言語初心者である自分にはまったくわかりません; ; どなたかわかる方がいらっしゃれば、助けていただけないでしょうか?よろしくお願いします!

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

    C言語のプログラミングについて プログラミング初心者です。下のプログラムに詰まりました。 下のプログラムをfgets()、atoi()の組とgetchar()を用いて表示するにはどのようなプログラムを書けばよろしいのでしょうか? % ./descending 正の整数: 10 英文字: z 1: z 2: y 3: x 4: w 5: v 6: u 7: t 8: s 9: r 10: q %

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

    プログラミング、C言語について・・・ 大学の宿題でわからないところがありまして・・・ 課題は、 キーボードから入力した数だけ、*(アスタリスク)を表示するようなプログラミングを作成せよ また、表示を見やすくするため*が10個表示されるたびに改行を入れよ。 なんですが とくにキーボードから入力した数だけ、*(アスタリスク)を表示するようなプログラミング がわからなくて困ってます。 あとこのプログラミングではforではなくてwhileでお願いします。 わがまま多いですがよろしくお願いします。

  • c言語プログラミングHELP!

    c言語でプログラムを組んでるんですが、どうしてもわからないものがありまして、 まず一つ目がキーボードから英小文字を一つ入力し、その文字を大文字に変換して出力するプログラミングです。結果がまずひとつの英小文字を入力して、入力した文字と、大文字に変換した文字を出力するプログラミングです。 ちなみにヒントは'a'=97,'A'=65です 二つ目が二桁の16進数('41'から'49','50'から'59')を入力すると対応する文字を表示するプログラミングです。また、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒントは入力は一つの数値か、二つの文字か?だそうです。) 結果は二桁の16進数('41'から'49','50'から'59')を入力して、文字コードの二桁の数字と文字を出力するプログラミングです。 お願いします。

  • C言語プログラミング

    あなたは何歳ですか。 (数値を入力) 10年後は○○歳ですね。 と表示されるプログラミングをお願いします。C言語でお願いします

  • C言語でintをdoubleに

    C言語でプログラミングを書いています。 10問の問題の正解数に応じて正答率を出すプログラムを書いているのですが、正解数を数えるものをintで定義(seikaiとする)し、正答率の計算結果を出すものをdoubleで定義(rituとする)しました。 seikaiをインクリメントで数え ritu=seikai/10*100 という計算をしました。このrituを%fで表示させようとしても正しく表示されません。intで定義したものを計算に用いて、その計算結果をdoubleで定義したもので表示することはできないのですか?? また、自分で調べたら、ritu=(double)seikai/10*100とやるというものがありましたが、”(double)”を使わずに計算を反映させることはできませんか?

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

    C言語でのプログラミングについて これまでJavaでよくプログラミングをしてきたのですが、最近Cもよく使っています。 しかしJavaに慣れすぎたのか、Cで大きなプログラムを作ろうとすると、どうすればいいのかよく分かりません。 HeaderファイルはJavaでいうと継承みたいなもので、複数のファイルに同じ機能を持たすときに使うのでしょうか? Javaではクラスがありそれぞれに役割がありますが、Cの場合はファイルごとに大まかな役割を分けるのでしょうか? (例えばユーザーからインプットを取ってくるファイルをgetInput.cで、それを処理するファイルをvefiryInput.cというようにするのでしょうか?) C言語でのプログラミングの仕方を教えてください。

  • C言語プログラミングについて質問です。

    C言語プログラミングについて質問です。 for文を使い下記のように表示するプログラムを作りたいのですが上手くいきません。どなたか教えてください。 * ** *** **** *****

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

    C言語のプログラミングについて教えて欲しいです。 scanf関数を用いて、キーボードから文字列(最大30文字)を読み込み、これをchar型配列に格納します。最大10個までの文字列が入力された場合か、「END」が入力された時、入力された逆順で画面に表示するプログラム。作成しなさい。 〈完成例〉 adjm 10mdjp jpd-4 njad' END njad jpd-4 10mdjp adjm

  • プログラミング言語の覚え方習得法

    プログラミング言語 なかでもVBA,VBなどは 暗記する事柄、関数などが たくさんあります。 そこでですが、 プログラミング言語を ゴロあわせで覚えるというのは 有効でしょうか。 英単語の語呂合わせ書籍などは よく売られてますが、さすがに プログラミング言語の語呂合わせ本 はありません。 御意見よろしくお願いします。

専門家に質問してみよう