1次元配列について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jmwatgt

1次元配列について

#1

投稿記事 by jmwatgt » 7年前

コード:


#include<stdio.h>
main()
{
 int i, n,sum=0,score=0;
 double mean, x[100];
 printf("入力するデータ数は?:");
 scanf_s("%d", &n);
 for (i = 0; i < n; i++)
 {
  printf("%3d人目の得点を入力せよ:", i + 1);
  scanf_s("%lf", &x[i]);
  sum = sum + x[i];
 }
 mean = (double)sum / n;
 printf("平均点は%.1lf点です。合格者は以下の通りです。\n",mean);
 if (x[score] > 80)
 {
  printf("%d人目:%d点(平均点%.1lf),評価S", score, x[score - 1], x[score - 1] - mean);
 }
 else if (x[score] > 70)
 {
  printf("%d人目:%d点(平均点%.1lf),評価A", score, x[score - 1], x[score - 1] - mean);
 }
 else if (x[score] > 60)
 {
  printf("%d人目:%d点(平均点%.1lf),評価B", score, x[score - 1], x[score - 1] - mean);
 }
 else if (x[score] > 50)
 {
  printf("%d人目:%d点(平均点%.1lf),評価C", score, x[score - 1], x[score - 1] - mean);
 }


tdsdpmgpmp

Re: 1次元配列について

#2

投稿記事 by tdsdpmgpmp » 7年前

問題
最初に入力するデータ数(100以下)を読み込んで、その人数分の得点を整数値で読み込み、平均点を小数点以下第1位まで出力する。
さらに以下に示す合格基準および評価基準にもとづいて、合格者のみの得点、平均からの差、評価を出力するプログラムを作成せよ。
合格基準 50点以上
S:80〜 A:70〜 B:60〜 C:50〜


この問題で平均を求めるまではうまくいったのですが、評価の部分で扱う変数が本当にこれでいいのか理解できないです。初心者なので教えていただきたいです。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 1次元配列について

#3

投稿記事 by みけCAT » 7年前

scoreは0なので、x[score - 1]は範囲外のx[-1]になり、これを読むのは未定義動作なのでダメです。
double型のxの要素をint型のデータを表示するための%dに対応する位置に渡すのも、未定義動作なのでダメです。

また、いい加減な名前を使うことはフォーラムルール違反です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る