1

ユーザーがコマンド ラインで入力する double の数値の平均を見つける必要があるため、私のプログラムはどのような量の入力でも動作するはずです。すべての数値の合計を見つけてから、入力の数で割る必要があることを理解しています。

入力の数を見つけるために、sscanf を使用して引数リストの「char *num」を読み取ることを考えていました。sscanf は読み取った文字を返すためです。そして、それを使用して合計を割って平均を取得することを考えていました. しかし、コードに問題があります。:(

#include <stdio.h>

void average(int arg_list, char *num[])
{
   int x;
   double sum, average;

   x = sscanf(num, "%s\n", &x);

   for (int i = 0; i != '\0'; i++)
   {
      sum = sum + num[i];
   }

   average = sum/x;
   printf("%lf\n", average);;
}

int main(int argc, char *argv[])
{
   if (argc == 0)
   {
      perror("Error!\n");
   }

   average(argc, argv);
}

具体的には、プログラムをコンパイルしようとすると、コンパイラは「sscanf」と合計について不平を言います。:/

4

2 に答える 2

0
#include <stdio.h>
#include <stdlib.h>

void average(int arg_list, char *num[])
{
   double sum = 0, average;//sum : 0 initialize
   int i;
   for (i = 1; i < arg_list; i++){
      sum = sum + atof(num[i]);
   }
   average = sum/(--i);
   printf("%lf\n", average);;
}

int main(int argc, char *argv[])
{
   if (argc < 2)//include program name argv[0], argc == 1 even when only ./a.out
   {
      perror("Error!\n");
      return -1;
   }

   average(argc, argv);

    return 0;
}
于 2013-05-28T22:35:28.767 に答える