2012-12-09 73 views
4

我正在学习C编程,并编写了一个简单的程序来学习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); 
} 

谁能告诉我,为什么出现这种情况和解决办法吗?

+0

你应该小心使用C未初始化的局部变量,它们不会被默认设置为零。 –

+0

当问questin时,你应该告诉你得到了什么结果,以及你期望得到什么结果......并且,你是否缺少'max'函数的printf?现在,它并没有真正做任何事情,编译器可能实际上完全优化它... – hyde

回答

4

您的任何功能都无法工作。第一个在变量a中设置当前值sum,它是单位化的。

那么对于MAX值进行搜索时,你检查是否当前总和(应该是a)比b更大,如果它是你存放在sumb值。

然后,如果您想在定义函数之前调用函数,则需要将函数的原型放在文件的开头。由于您在定义之前调用了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); 
} 
+0

谢谢,但为什么第二个功能不工作http://i.stack.imgur.com/YJU3T.png –

+0

当我看你给我们的代码,max()函数不会打印任何东西(没有调用printf),但是min()会打印。在你的图像中,max()似乎调用printf()你可以更新当前的代码吗? – koopajah

+0

虽然我有Microsoft Visual Studio中的更新代码,但是它将我编译的以前的代码,为什么不更新新的源代码? –