• ベストアンサー

大学の課題です。

C言語のプログラミングIの問題です。 問:n人の成績を入力し、最高点、最低点、合計点、平均点、分散を求めるプログラムを作成せよ。 わかる方是非お願いします。 #include <stdio.h> int main(void) から始めて下さい

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

  • ベストアンサー
回答No.3

#include <stdio.h> int atoi( const char* string ) { int num = 0; while( '0' <= *string && '9' >= *string ) { num *= 10; num += *string - '0'; ++string; } return num; } int bestScore( int scores[], int scoreCount ) { int best = 0; for( int ix = 0; ix < scoreCount; ix++ ) { if( !ix ) best = scores[ ix ]; if( best < scores[ ix ] ) best = scores[ ix ]; } return best; } int worstScore( int scores[], int scoreCount ) { int worst = 0; for( int ix = 0; ix < scoreCount; ix++ ) { if( !ix ) worst = scores[ ix ]; if( worst > scores[ ix ] ) worst = scores[ ix ]; } return worst; } int totalScore( int scores[], int scoreCount ) { int total = 0; for( int ix = 0; ix < scoreCount; ix++ ) { total += scores[ ix ]; } return total; } double bunsanScore( int scores[], int scoreCount, double average ) { double total = 0; for( int ix = 0; ix < scoreCount; ix++ ) { double num = scores[ ix ] - average; total += ( num * num ); } return total / scoreCount; } int _tmain() { int scoreCount = 0; int scores[ 100 ] = { 0 }; printf( "点数を入力してください(最大100個)\n" ); printf( "終了する場合は[Q]を入力してください\n" ); while( 1 ) { char istr[ 32 ]; int result = scanf( "%s", &istr ); if( 'q' == istr[ 0 ] || 'Q' == istr[ 0 ] ) { break; } scores[ scoreCount ] = atoi( istr ); if( ++scoreCount >= 100 ) { break; } } if( 0 < scoreCount ) { int best = bestScore( scores, scoreCount ); int worst = worstScore( scores, scoreCount ); int total = totalScore( scores, scoreCount ); double average = total / scoreCount; double bunsan = bunsanScore( scores, scoreCount, average ); printf( "最高点=%d\n", best ); printf( "最低点=%d\n", worst ); printf( "合計点=%d\n", total ); printf( "平均点=%.2f\n", average ); printf( "分散=%.2f\n", bunsan ); } return 0; }

その他の回答 (2)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

課題は自分でやってください。 やった上で「ここがわからない」という質問ならあなたが期待するような回答も付くかもしれませんが。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> わかる方是非お願いします。 なにをですか? 高校までならともかく、大学生ならもうちょっと自分でなんとかする癖つけないと、卒業なんかできないですよ。

関連するQ&A

  • C言語のプログラミングIの問題です。

    問:n人の成績を入力し、最高点、最低点、合計点、平均点、分散を求めるプログラムを作成せよ。 #include<stdio.h> int main(void) { int tensu[100]; から始めてください。解答お願いします。

  • C言語の課題で

    C言語の課題で 「成績集計プログラム 入力件数nをキーボードより入力し、n人分のテストデータを入力する。その際、合計点、最高点、最低点を求め、最後に平均点を計算しそれぞれを出力するプログラムを作成せよ。ただし、平均点は実数型とし小数点第2位まで出力する。平均点以外の変数は整数型とする。」というのが出ました。 #include <stdio.h> int main(void) { int n,a,b,c; int res,i; printf("入力件数を入力して下さい。\n"); scanf("%d",&n); for(i = 1; i <= n; i++) { printf("点数を入力して下さい。\n"); scanf("%d",&a); printf("%d人目=>%d\n",i,a); if(i == res) break; } return 0; } ここまでは、出来たのですが、後が分かりません。どなたか教えていただけませんか?お願いします。

  • c言語で平均をだす

    #include<stdio.h> int main(void) { int num; int sum; printf("テストの点数を入力してください。\n"); do{ scanf("%d",&num); sum+=num; }while(num); printf("テストの合計点は%dです\n",sum); return 0; } テストの平均点をだすプログラムを作りたいのですが、合計を出すまではわかったのですが、ここから、平均を出すようにするにはどうすればよいですか。

  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • Visual C++ 2008 Express Edition

    Visual C++ 2008 Express Editionをダウンロードしたのですが、使い方が全く分かりません。C言語を学習しています。 例えば #include <stdio.h> int main(void) { printf("Hello, World!\n"); return 0; } というようなプログラミングを実行するにはどうすればいいでしょうか

  • 教えてください。

    プログラミング言語論です。 C言語のプログラミングmain.cを実行した際に、(1)、(2)で表示される変数aの値それぞれを教えてください。 #include<stdio.h> void threeTimesByValue(int a){ a = 3*a; } void threeTimesByRefference(int* a){ *a=3**a; } int main(){ int a = 10; threeTimesByValue(a); printf("a=%d\n",a)//(1) threeTimesByRefference(&a); printf("*a=%d\n",a);//(2) return 0; }

  • 配列 平均値と分散値

    #include <stdio.h> void mean_vari(int *s, int n, double *mean, double *variance); int main(void) { int i, n; int a[]={34, 54, 21, 80, 60, 90, 15, 24, 100}; double heikin, bunsan; mean_vari(&i,n,&heikin,&bunsan); printf("平均=%f 分散=%f\n",heikin,bunsan); return (0); } /* 合計を求める関数 */ void mean_vari(int *s, int n, double *mean, double *variance) { int i; int sum=0; /* 合計の初期化 */ double sum2=0; for (i = 0; i < n; i++) sum += s[i]; ????=sum/(double)????; for (i = 0; i < n; i++){ sum2 +=????; } ????=????; } 平均値と分散値を求めたいのですが、????の部分になりをいれていいかわかりません。 教えてください。

  • C言語プログラミングについて

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • 学校の課題で悩んでます

    #include <stdio.h> void main(){ float syushi[7],goukei,heikin; int i; goukei = 0; for( i=1; i<=7; i++ ){ printf("%dの収支は?\n",i); scanf("%f",&syushi[i-1]); goukei =goukei+syushi[i-1]; } heikin = goukei / 7.0; printf("7日分の平均収支: %f円\n",heikin); } 1週間分の合計収支が 20万円より大きかったら(ぼろ勝ち) 20万円以下で0円より大きいかったら(まあいいか) 0円なラ(意味ないな) マイナスなら(焼肉を食おう)

  • C言語の演算式

    C言語のプログラミングで、4×(1-1/3+1/5-1/7+・・・・・)の式を100000項まで合計した式を作りたいです。答えは3.141591になります。 自分で作成してみたのですが、なかなか上手くいきません。 どうすればよいでしょうか?以下自分の作成したプログラムを「」内に載せます。 答えは0になってしまいます。 「 #include <stdio.h> int main(void) { int i=0,a=1,b; do{ i++; if(i%2) { a+=(-1)/(2*(i-1)+1); } else{ a+=1/(2*(i-1)+1); } }while(i<100000); b=4*a; printf("π=%f\n",b-1); putchar('\n'); return (0); } 」

専門家に質問してみよう