游游9527 发表于 2014-3-12 21:33:10

学C语言视频写的一个例题 新人求助

题目是这样:输入a和b两个数,第一次调用process时找出a和b中大者,第二次找出其中小者,第三次求a与b之和。
程序运行结果:MAX是输入的第一个数字,MIN和ADD像是地址前加了个负号。

帮忙看看那里有问题?

#include <stdio.h>

voidmain( )

{
    int max(int x,int y);
    int min(int x,int y);
    int add(int x,int y);

    void process(int x,int y,int (*fun)());
   
    int a, b;

    printf("enter a and b:\n");

    scanf("%d,%d",&a,&b);

    printf("max=");

    process(a,b,max);

    printf("min=");

    process(a,b,min);

    printf("sum=");

    process(a,b,add);

}

int max(int x,int y)

{
    int z;

    if(x>y)
      
      z=x;

    else
      
      z=y;

    return(z);

}

int min(int x,int y)

{   
    int z;

    if(x<y)
      
      z=x;

    else
      z=y;

    return(z);

}

int add(int x,int y)

{

    int z;

    z=x+y;

    return(z);

}

void process(int x,int y,int (*fun)())

{
    int result;

    result=(*fun)(x,y);

    printf("%d\n",result);

}


oggplay 发表于 2014-3-12 21:44:50

本帖最后由 oggplay 于 2014-3-12 21:46 编辑

小问题,括号打成汉字的了,我给你该过来了,以后别写 void main()
#include <stdio.h>
#include <stdlib.h>

voidmain( )

{
    int max(int x,int y);
    int min(int x,int y);
    int add(int x,int y);
    void process(int x,int y,int (*fun)());
    int a,b;
    printf("enter a and b:\n");

    scanf("%d,%d",&a,&b);

    printf("max=");

    process(a,b,max);

    printf("min=");

    process(a,b,min);

    printf("sum=");

    process(a,b,add);

}

int max(int x,int y)

{
    int z;

    if(x>y)
      
      z=x;

    else
      
      z=y;

    return(z);

}

int min(int x,int y)

{   
    int z;

    if(x<y)
      
      z=x;

    else
      z=y;

    return z;

}

int add(int x,int y)

{

    int z;

    z=x+y;

    return z;

}

void process(int x,int y,int (*fun)())

{
    int result;

    result=(*fun)(x,y);

    printf("%d\n",result);

}

machimilk 发表于 2014-3-12 22:02:57




#include <stdio.h>
#include <iostream>
using namespace std;
int Max(int a, int b)
{
        return a>b?a:b;
}
int Min(int a, int b)
{
        return a>b?b:a;
}
int Add(int a,int b)
{
        return a+b;
}
int process(int (*Fun)(int,int), int a, int b)
{
        return Fun(a,b);
}
int main()
{
        int a,b,r;
        printf("输入两个数(空格分隔):\n");
        scanf("%d%d",&a,&b);
        printf("两数之中最大:%d\n", process(Max,a,b));
        printf("两数之中最小:%d\n", process(Min,a,b));
        printf("两数之和:%d\n", process(Add,a,b));
    system("pause");
    return 0;
}


游游9527 发表于 2014-3-13 18:33:50

oggplay 发表于 2014-3-12 21:44 static/image/common/back.gif
小问题,括号打成汉字的了,我给你该过来了,以后别写 void main()

还是不对,我复制你的代码过来,要报错
#include <stdlib.h>去掉可以通过,不过又是原来的问题

游游9527 发表于 2014-3-13 18:37:09

machimilk 发表于 2014-3-12 22:02 static/image/common/back.gif


编译时有错:"eh.h is only for C++!"   
和C有区别么?

machimilk 发表于 2014-3-13 20:31:30

游游9527 发表于 2014-3-13 18:37 static/image/common/back.gif
编译时有错:"eh.h is only for C++!"   
和C有区别么?

那就把02.#include <iostream>

03.using namespace std;
system(“pause”);
这3行去掉

奔跑的鸭蛋 发表于 2014-3-13 21:33:15

编译器问题吧?我在C++6.0上是可以的。。

未闻丶花名 发表于 2014-3-14 09:57:15

路过看看= =!
页: [1]
查看完整版本: 学C语言视频写的一个例题 新人求助