関数

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

関数

#1

投稿記事 by blue » 15年前

「20人のクラスで試験を行いました。試験の受験番号と点数(0~100の整数)を入力して平均値を出すプログラムを作ってください。また、受験番号を入力すると点数が表示されるようにもしてください。受験番号は1番から順に20番間までとします」

という問題で自分なり考えてソースを書いてコンパイルして実行してみると平均点が正常に表示されず、受験番号を入力するとセグメントエラーが出ます。どうすればよいでしょうか?


自分が書いたソース
#include<stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];

fgets(buf, BUFFER_SIZE, stdin);

return atoi(buf);
}



int main(void){
int i,sum,a[20],b;

for(i=0 ; i < 20 ; i++){
printf("点数は? ");
a = get_int();
sum += a;
}

printf("平均点は%dです",sum/20);
while(1){
printf("受験番号を入力してください");
b=get_int();
if(b==0)
break;
printf("%d番は%s点です",b,a[b-1]);

}
return 0;
}

dic

Re:関数

#2

投稿記事 by dic » 15年前

> printf("%d番は%s点です",b,a[b-1]);
これを
printf("%d番は%d点です",b,a[b-1]);
に変更してください

%s -> %d

toyo

Re:関数

#3

投稿記事 by toyo » 15年前

sum = 0;
で初期化しましょう

blue

Re:関数

#4

投稿記事 by blue » 15年前

ハッカーさんありがとうございます。セグメントエラーはでなくなりよくなりましたが、まだ平均点が正常に表示さてないので何かわかることがあればおしえてください。

blue

Re:関数

#5

投稿記事 by blue » 15年前

うっかりしてました。toyoさんありがとうございます。問題が解決しました。
ところで、関数を表示させるときになぜ%dをつかうのですか?
関数は%sにするものだとおもっていたのすがまちがっていますか?
printf("%d番は%s点です",b,a[b-1]);
これを
printf("%d番は%d点です",b,a[b-1]);
に変更してください

ookami

Re:関数

#6

投稿記事 by ookami » 15年前

%d は10進数を表示し、
%s は文字列を表示します。
http://www9.plala.or.jp/sgwr-t/c/sec05.html

「関数を表示させる」というのは、よく分かりません。

toyo

Re:関数

#7

投稿記事 by toyo » 15年前

a[ ]
は配列と言います
%sではchar型の配列を引数にすることが多いので勘違いされましたか

blue

Re:関数

#8

投稿記事 by blue » 15年前

わかりました
ありがとうございます。

閉鎖

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