無題

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

無題

#1

投稿記事 by » 16年前

scanf を用いて、5個の数を入力すると合計と平均を計算し出力するプログラムを作成するのが分かりません。
=== プログラム ===
#include <stdio.h>
int main()
{
/* ほげほげ */
}
=== プログラムの実行結果 === 教えてもらえたらうれしいです。



 

通りすがり

Re:無題

#2

投稿記事 by 通りすがり » 16年前

ググる癖をつけましょう^^

http://www.google.co.jp/search?hl=ja&q= ... lr=lang_ja
<DIV align="right"><BR clear=all>253ポイント を手に入れた。</DIV>

Re:無題

#3

投稿記事 by » 16年前

#include <stdio.h>

int main(void)
{
char str[20];
int num1;
int num2;
int num3;
int num4;
int num5;
int sum;

puts( "整数を5回入力して下さい。" );
fgets( str, 20(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 22(str), stdin );
sscanf( str, "%d", &num2 );
fgets( str, 24(str), stdin );
sscanf( str, "%d", &num3 );
fgets( str, 26(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 28(str), stdin );
sscanf( str, "%d", &num1 );
/* 合計を求める */
sum = num1 + num2 + num3 + num4+ num5;

/* 合計と平均値を出力する */
printf( "合計: %d\n", sum );
printf( "平均: %d\n", sum / 5 );

return 0;
}
これでどうですか?

ねこ

Re:無題

#4

投稿記事 by ねこ » 16年前

何故fgetsやsscanfが・・・
普通に「scanf( "%d", &num1 );」とかでいいと思います。他気になった点は
1.num3以降が全部num1
2.平均は5で割ってますがint型なので整数(75.5点とかは出せない)になる
3.現在そのソースを実行できる環境の有無は?これを書いておくと「試せば?」って言われなくなります。
無ければcodepadってググると実行結果を出してくれるブラウザでのツールもあります。
scanf等は多分未対応なのでprintf絡みのチェックにしか使えませんが・・・

Naohiro19

Re:無題

#5

投稿記事 by Naohiro19 » 16年前

#include <stdio.h>
#define COUNT 5

int main()
{
    int i;
    double num[COUNT] = {0}, t = 0;
    for(i =0; i < COUNT; i++){
          scanf("%f", &num);
          t += num;
    }
    printf("total:%f, average:%f\n", t, t / COUNT);
    return 0;
}


このほうがすっきりするかと思います

lbfuvab

Re:無題

#6

投稿記事 by lbfuvab » 16年前

#include<stdio.h>

int main(){
    int i;
    double ave=0,input;
    
    for(i=0;i<5;i++){
        scanf("%lf",&input);
        ave += (input-ave) / (i+1);
    }
    printf("sum:%g ave:%g\n",ave*5,ave);
    return 0;
}
どうでしょう。

ゆーずぃ

Re:無題

#7

投稿記事 by ゆーずぃ » 16年前

>Naohiro19さん

初めまして。横槍を失礼します。
>> scanf("%f", &num);
うっかりだとは思いますが、それでは計算結果がNaNになるのではないでしょうか? %lf にしたほうが良いかと。

>lbfuvabさん

初めまして。横槍を失礼します。
>> ave += (input-ave) / (i+1);
のくだりですが、初心者さんに教えるにはちょっと式が難しすぎると思います。特に初心者じゃ0除算対策はぱっと見では分かりませんし(^^;)
無理に平均から作らない方がすっきりするし分かり易くていいかと思います。


偉そうな事を言ってすみません。口だけだと何なので自分のソースも晒しますw
#include <stdio.h>

#define COUNT 5

void main(void)
{
	int i;
	double num[COUNT] = {0}, sum = 0.0;
	
	for(i = 0; i < COUNT ; i++ ){
		scanf(" %lf",&num);
		sum += num;
	}
	printf("合計 => %g , 平均 => %g ",sum , sum / COUNT);
}


テストしていないのでどこかおかしいかも知れませんw

閉鎖

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