
[緊急]bcc developerについての質問です。
これにどう修正を加えればいいか教えてください。学生数と平均点が0になってしまうんです。
#include<stdio.h>
main()
{float data[100],x,w;
int a,b,e;
a=1;
b=1;
printf("学籍番号=");
while(scanf("%d",&data[a])!=EOF)
{a=a+1;
printf("得点=");
scanf("%d",&point[b]);
b=b+1;
printf("学籍番号=");}
x=point[a];
w=data[b]/point[a];
printf("学生数=%d\n平均点=%f\n",x,w);
}
No.3ベストアンサー
- 回答日時:
> while(scanf("%d",&data[a])!=EOF)
> scanf("%d",&point[b]);
scanf系の変換指定子と、変数の型はちゃんと合せてください。
%dだと、実際に対応する引数がint型へのポインタでなくても、int型のポインタだと解釈して、int型の内部形式でメモリに書き込まれます。
なにがどの型かは、マニュアルを良く読んでください。
>printf("学生数=%d\n平均点=%f\n",x,w);
の 書式も同様。
でも、結果が0になる本質は.....
> w=data[b]/point[a];
aとbの値を追っていきましょう
printf("学籍番号=");
while(scanf("%d",&data[a])!=EOF) /*ループ1回目 a=1,b=1 : 入力→ data[a]=data[1] */
{a=a+1; /* a=2,b=1 */
printf("得点=");
scanf("%d",&point[b]); /* a=1,b=1 : 入力→ point[a]=point[1] */
b=b+1; /* a=2,b=2 */
printf("学籍番号=");}
x=point[a]; /* a=2→ x=point[2] ..,point[2]にはまだ入力されていない */
w=data[b]/point[a]; /* a=2,b=2 → w=data[2]/point[2] ... data[2],point[2]にはまだ入力されていない */
printf("学生数=%d\n平均点=%f\n",x,w);
/* ループ2回目へ */
}
なにがおかしいか、わかりましたか?
他には
・point[]の宣言が見当りませんが?
・配列の添字を1から始めているのは、なんかの意図があってのこと?
・エラーチェックは無しでいいのね? : scanf("%d",&point[b]);が成功したか、 w=data[b]/point[a];が0での割り算にならない保証、data[],point[]の添字の限界を越えない保証等。
No.4
- 回答日時:
よくよく見れば、printfのメッセージ通りの入力なら
学生数=[得点]
平均点=[学籍番号]÷[得点]
になってる。これでは、#3の分直しても、計算方法自体に問題があるからだめだわ。
平均の求めかたも、もう一度よく確認してください。それこそ、数学の教科書でも引っ張り出して。
No.2
- 回答日時:
そのソースでは、pointという変数を定義していないため、
コンパイルできません。
「学生数と平均点が0になってしまう」ということは、
少なくとも実行はできているはずですが、
「コンパイルできない」という現象と矛盾しています。
まずは落ち着いて、コンパイルができているソースを載せてください。

No.1
- 回答日時:
突っ込みどころが多すぎて携帯からだと答えづらいですが、、、
まず、x をやめて e に変更。次に「a = 1;」の上にでも
w = 0;
を追記。さらに「b=b+1;」の上に
w = w + point[b];
を追記。最後に「x=…」「w=…」を
e = a - 1;
w = w / e;
に変更。
これでどうだろう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
分数を表示するプログラム(長...
-
defineで定数が置き換えられな...
-
覆面算 C
-
printf( " %2d", p * q );
-
勝率をプログラムに
-
C言語で、「自然数nを入力し、n...
-
strcmp
-
LU分解法のピボット選択機能実...
-
visualstudio C# テキストボッ...
-
C言語での引数の省略方法
-
C言語のプログラミングですが、
-
複数桁10進数の*桁目だけを抽出...
-
単語数のカウントについて
-
正負を反転させて出力するプロ...
-
EDITコントロールで入力できる...
-
ポインタの入出力演算子?[C++]
-
根号内が負になり、エクセルで...
-
マチンの公式による円周率のプ...
-
エクセルで可視セルにのみ値貼...
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
strcmp
-
cshの文字列操作(0埋め)
-
printfの出力内の文字をdefine...
-
テキストカーソル位置の取得
-
アドレスの比較について
-
コマンドプロンプトがすぐ消える
-
Visual Sutdio 2017 でのC言語...
-
defineで定数が置き換えられな...
-
10個出力で改行したいのですが...
-
ifなんですが
-
c言語で2000年以降カレンダーを...
-
WM_CLOSEで閉じれないウィンド...
-
%P と %X の違い
-
Cプログラムについて
-
三角形の判別
おすすめ情報