質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

2276閲覧

c言語 平均値について

Giruba

総合スコア5

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/04/25 02:35

前提・実現したいこと

プログラミング初心者です。
キーボードから10個の整数(格納する)を入力して、整数を入力するループと合計を計算するループは分けてforループを2つ使い、その平均値を表示するプログラムを考えています。

発生している問題・エラーメッセージ

平均値がうまく計算できない

該当のソースコード

#include<stdio.h> int main(){ int i,sum; int a[9]; double ave; printf("10個の整数を入力\n"); for(i=0;i<10;i++){ printf("%d個目の実数:",i+1); scanf("%d",&x[i]);); } for(i=0;i<10;i++){ sum=sum+a[i]; } ave=(double)(sum/10.0); printf("平均値は%f\n",ave); return 0; }

試したこと

ググったり知恵袋で検索したりして試行錯誤した。
上のコードで実行すると

10個の整数を入力









10
平均値は11.000000

となり、うまく計算できません。

どこが間違っているか教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

Cpadというものでコードを打っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

当方では、以下のソースで、

OUT

1平均値は5.500000

と出ます。どこか違うのではないでしょうか。

C

1#include <stdio.h> 2 3int main(){ 4 5 int i,sum; 6 int a[10]; 7 double ave; 8 9 printf("10個の整数を入力\n"); 10 11 for(i=0; i<10; i++){ 12 printf("%d個目の実数:",i+1); 13 scanf("%d",&a[i]); 14 } 15 16 sum = 0; 17 for(i=0; i<10; i++){ 18 sum=sum+a[i]; 19 } 20 21 ave=(double)(sum/10.0); 22 printf("平均値は%f\n",ave); 23 24 return 0; 25}

投稿2021/04/25 03:27

ak.n

総合スコア291

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Giruba

2021/04/25 03:30

訂正しているうちにいらぬものまで打ち込んでいたようで、それを直したところ動きました! 助かりました! また機会があればよろしくいお願いします!
guest

0

もう1点ありました。

C

1 int a[9];

C

1 int a[10];

誤では、a[0]~a[8] までしか定義されません。
int a[n]; とすると、0~n-1 までの n 個の配列が定義される、
と覚えてください。
int a[n]; とやって a[n]=10; とかやると、それは範囲外のアクセスで危険です。

a[0]~a[9] まで使いたいのであれば、

C

1 int a[10];

です。入力ループの中で、scanf("%d", &a[9]) となったときに、アプリがコケなかったのは、
運がよかったですね、ということです。

投稿2021/04/25 02:50

編集2021/04/25 02:54
ak.n

総合スコア291

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Giruba

2021/04/25 02:58

1つ目の間違いを訂正しました。 2つ目のforの前にsum=0;を追加しました。 3つ目の数字を半角で打ちました。 4つ目のa[10]に訂正してみたのですが、結果が変わりませんでした。 他の原因は考えられないでしょうか?
guest

0

ぱっとみて3点おかしなところがあります。

1点目。x[] という配列は定義されていない。


```C
scanf("%d",&x[i]););

正  ```C scanf("%d",&a[i]);

2点目。sum が初期化されていない。後半ループで、sum にどんどん a[i] を足していきますね?
このループに最初に入ったとき、sum に何が入っているでしょうか。
ゴミが入っています。

ループの手前で、


```C
sum=0;

としなければなりません。 もう1点は、入力している数字です。 全角数字に見えます。半角数字を入れないと、a[i] に変な値が入ってしまいます。

投稿2021/04/25 02:45

ak.n

総合スコア291

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問