4

私は C プログラミングを学んでおり、C で関数を学習するための簡単なプログラムを作成しました。ここでは 2 つの関数を使用しましたが、最初の関数は機能しますが、2 番目の関数は機能しません。

簡単なコードは次のとおりです。

#include<stdio.h>

void main() {
  int a,b,c,sum;
  printf("Input your numbers one by one:\n");
  scanf("%d", &a);
  scanf("%d", &b);
  scanf("%d", &c);
  printf("You have put %d, %d, %d\n\n", a, b, c);
  max (a,b,c);
  min (a,b,c);
}

void max (int a, int b, int c) {
  int sum;
  a=sum;
  if(sum>b)
    sum=b;
  if(sum>c)
    sum=c;
}

void min (int f, int g, int h) {
  int sum;
  sum=f;
  if(sum<g)
    sum=g;
  if(sum<h)
    sum=h;
  printf("The lowest value is:%d\n\n\n",sum);
}

なぜこれが起こるのか、解決策を教えてもらえますか?

4

1 に答える 1

4

どの関数も機能しないはずです。a現在の値sumが単一化されている変数の最初のセット。

次に、MAX値を検索するときに、現在の合計(と想定されるa)がより大きいかどうか、および値をにb格納するかどうかを確認します。bsum

次に、関数を定義する前に関数を呼び出したい場合は、関数のプロトタイプをファイルの先頭に置く必要があります。あなたが呼んmin()でいるとき、そしてmax()それらの定義の前にあなたはコンパイルエラーを抱えています。

次のようになります。

#include<stdio.h>

void max (int a, int b, int c);
void min (int f, int g, int h);

void main()
{
  int a,b,c,sum;
  printf("Put your numbers throughly one by one:\n");
  scanf("%d", &a);
  scanf("%d", &b);
  scanf("%d", &c);
  printf("You have putted %d, %d, %d\n\n", a, b, c);
  max (a,b,c);
  min (a,b,c);
}

void max (int a, int b, int c)
{
    int sum;
    sum = a;
    if(sum<b)
        sum=b;
    if(sum<c)
        sum=c;

    printf("The max value is:%d\n\n\n",sum);
}

void min (int f, int g, int h)
{
    int sum;
    sum=f;
    if(sum>g)
        sum=g;
    if(sum>h)
        sum=h;

    printf("The min value is:%d\n\n\n",sum);
}
于 2012-12-09T18:16:09.600 に答える