こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

配列のプログラミングを作ったのですが「

問題:10問の計算問題を解いて、以下のような成績表を表示するプログラムを作成せよ

例)
第一問 ○
第二問 ×
第三問 ×
・・・



自分が作った解答)#include<stdio.h>
#include<stdlib.h>
void main()
{
int a,b,ans,i;
int seikai=0;
int huseikai=0;
int kaitou[10];
srand((unsigned)time(NULL));

printf("暗算\n");
for(i=0;i<10;i++);

{
printf("%問\n",i+1);
a=rand()%10;
b=rand()%10;
printf("%d+%dは?\n",a,b);
scanf_s("%d",&ans);

if(ans==a+b)
kaitou[i+1]=seikai;
else kaitou[i+1]=huseikai;
}
for(i=0;i<10;i++)

{

printf("第%d問",i+1);

if(kaitou[i+1]==seikai)
printf("○\n",seikai);
else
printf("×\n",huseikai);

}



}


のように作成したのですが、コンパイルは成功しますが思い通りの解答になりません。
どこが間違っているのか指摘してください。

投稿日時 - 2015-01-13 23:32:03

QNo.8890633

すぐに回答ほしいです

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

> 思い通りの解答になりません。

具体的に、どのようになっているかわかりますか?
ただ「思い通りにならない」と言われても、何の解決策も思い付きません。

具体的にどうなっているかを調べ、
どうしてそうなるのかを調べる
というのが、プログラム修正の基本です。


おそらく
○何を入れても「正解」になる。
という現象が起っているのでは。

この現象から、想像力を働かせて、どうしてそうなるかを考えます。
例えば
○合否判定を間違えたら「全部正解」になりそうだ
○結果を保存する箇所を間違えたら「全部正解」になるかもしれない
○保存した結果を出力するときに間違えて「全部正解」と出力してしまっているかもしれない

 合否判定は
ans==a+b
 ぉの結果を収納するのが
if(ans==a+b)
kaitou[i+1]=seikai;
else kaitou[i+1]=huseikai;
 出力するのが
if(kaitou[i+1]==seikai)
printf("○\n",seikai);
else
printf("×\n",huseikai);

ここだけ取り出すと、判定は正しいように見えなくもないですが
kaitou[]に代入されている具体的な数値をよく考えると、間違っていることが判明します。
kaitou[i+1]=seikai;
kaitou[i+1]=huseikai;
それぞれ、kaitou[i+1]にどんな値が入るか、考えてみましょう。


あと。
> int kaitou[10];
と宣言したとき
kaitou[?]~kaitou[??]
の?~??はいくつになるでしょう?
forでi=0~9になっていますが、i=9のとき、 kaitou[i+1]はどうなるでしょうか?

> printf("○\n",seikai);
> printf("×\n",huseikai);
エラーにはなりませんが、seikai,huseikaiが無意味です。

投稿日時 - 2015-01-14 00:30:23

ANo.4

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(4)

正解と不正解が同じ値になってますよ。
あと配列の添字は0からなので+1はいらないですね。

投稿日時 - 2015-01-14 00:15:18

ANo.2

for(i=0;i<10;i++); は無意味。

int seikai=0;
int huseikai=0;
と同じ値をseikai、huseikaiに設定しているのに、if(kaitou[i+1]==seikai)とする不思議。


あと、気になるところは、既に指摘があるように#include<time.h>がないところ。
printf("%問\n",i+1);のdが抜けている気がするところ。

printf("○\n",seikai);
printf("×\n",huseikai);
のように、printfで全く使われていない引数が渡されているところ。

投稿日時 - 2015-01-14 00:15:03

ANo.1

関数 time がプロトタイプなしに呼び出されている.

投稿日時 - 2015-01-13 23:50:00

あなたにオススメの質問