鱼C论坛

 找回密码
 立即注册
查看: 2056|回复: 7

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

[复制链接]
发表于 2014-3-12 21:33:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

帮忙看看那里有问题?

#include <stdio.h>

void  main( )

{
    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);

}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 21:44:50 | 显示全部楼层
本帖最后由 oggplay 于 2014-3-12 21:46 编辑

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

void  main( )

{
    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);

} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-12 22:02:57 | 显示全部楼层
333.png
#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;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 18:33:50 | 显示全部楼层

还是不对,我复制你的代码过来,要报错
#include <stdlib.h>去掉可以通过,不过又是原来的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 18:37:09 | 显示全部楼层

编译时有错:"eh.h is only for C++!"   
和C有区别么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-13 20:31:30 | 显示全部楼层
游游9527 发表于 2014-3-13 18:37
编译时有错:"eh.h is only for C++!"   
和C有区别么?

那就把02.#include <iostream>

03.using namespace std;
system(“pause”);
这3行去掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-13 21:33:15 | 显示全部楼层
编译器问题吧?我在C++6.0上是可以的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-14 09:57:15 | 显示全部楼层
路过看看= =!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 01:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表