4

我正在学习 C 编程并编写了一个简单的程序来学习 C 中的函数。我在这里使用了两个函数,虽然第一个有效但第二个无效!

这是简单的代码:

#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,如果是,则将b值存储在sum.

然后,如果您想在定义之前调用函数,则需要将函数的原型放在文件的开头。在您调用它们之前,您会遇到编译错误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 回答