鱼C论坛

 找回密码
 立即注册
查看: 1696|回复: 16

[已解决]求问解这个题的思路是啥?

[复制链接]
发表于 2016-11-28 22:00:51 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
编写一个程序实现一个整数,长整数,浮点数和双精度数除以2的计算,要求所有类型的数除2只使用一个函数。

求各位大神指点一下! 感激不尽!
最佳答案
2016-11-29 20:43:09
C语言指针实现
#include <stdio.h>

void fun(void *num,int type);

int main()
{
        int a= 5;
        long b = 4;
        float c = 9;
        double d = 15;
        fun(&a,0);
        fun(&b,1);
        fun(&c,2);
        fun(&d,3);
        printf("%d\n",a);
        printf("%ld\n",b);
        printf("%f\n",c);
        printf("%lf\n",d);
        return 0;
}

void fun(void *num, int type)
{
    int *p0;
    long *p1;
    float *p2;
    double *p3;
    switch(type)
    {
    case 0:
        p0 = (int *)num;
        *p0 /= 2;
        break;
    case 1:
        p1 = (long *)num;
        *p1 /= 2;
        break;
    case 2:
        p2 = (float *)num;
        *p2 /= 2;
        break;
    case 3:
        p3 = (double *)num;
        *p3 /= 2;
        break;
    default:
        printf("type incorrect!\n");
    }
}

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +2 收起 理由
致年轻的我们 + 5 + 5 + 2 热爱鱼C^_^

查看全部评分

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

使用道具 举报

发表于 2016-11-28 23:05:41 | 显示全部楼层
帮你顶下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-29 17:05:00 | 显示全部楼层
用的是C++的函数重载
#include <iostream>

//C++函数重载 
int fun(int num);
long fun(long num);
float fun(float num);
double fun(double num);

int main()
{
        int a = 2;
        long b = 4;
        float c = 8.0;
        double d = 15.0;
        //C++输出 
        std::cout<< fun(a) <<std::endl;
        std::cout<< fun(b) <<std::endl;
        std::cout<< fun(c) <<std::endl;
        std::cout<< fun(d) <<std::endl;
        //C语言输出 
        printf("%d\n",fun(a));
        printf("%ld\n",fun(b));
        printf("%f\n",fun(c));
        printf("%lf\n",fun(d));
}

int fun(int num)
{
        return num/2;
}

long fun(long num)
{
        return num/2;
}

float fun(float num)
{
        return num/2.0;
}

double fun(double num)
{
        return num/2.0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-29 20:19:55 From FishC Mobile | 显示全部楼层
致年轻的我们 发表于 2016-11-29 17:05
用的是C++的函数重载

有用c做得方法么 c++ 我没学 函数重载不懂啥意思… gg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-29 20:43:09 | 显示全部楼层    本楼为最佳答案   
C语言指针实现
#include <stdio.h>

void fun(void *num,int type);

int main()
{
        int a= 5;
        long b = 4;
        float c = 9;
        double d = 15;
        fun(&a,0);
        fun(&b,1);
        fun(&c,2);
        fun(&d,3);
        printf("%d\n",a);
        printf("%ld\n",b);
        printf("%f\n",c);
        printf("%lf\n",d);
        return 0;
}

void fun(void *num, int type)
{
    int *p0;
    long *p1;
    float *p2;
    double *p3;
    switch(type)
    {
    case 0:
        p0 = (int *)num;
        *p0 /= 2;
        break;
    case 1:
        p1 = (long *)num;
        *p1 /= 2;
        break;
    case 2:
        p2 = (float *)num;
        *p2 /= 2;
        break;
    case 3:
        p3 = (double *)num;
        *p3 /= 2;
        break;
    default:
        printf("type incorrect!\n");
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-29 22:49:06 From FishC Mobile | 显示全部楼层
致年轻的我们 发表于 2016-11-29 20:43
C语言指针实现

好厉害啊…你是在海口么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-29 23:09:23 From FishC Mobile | 显示全部楼层
致年轻的我们 发表于 2016-11-29 20:43
C语言指针实现

好厉害啊!!!请问你是在海口吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-30 09:22:53 From FishC Mobile | 显示全部楼层
阿撩 发表于 2016-11-29 23:09
好厉害啊!!!请问你是在海口吗?

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

使用道具 举报

 楼主| 发表于 2016-12-1 19:51:00 | 显示全部楼层

我也是!!!你在读书么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-1 20:24:35 | 显示全部楼层
阿撩 发表于 2016-12-1 19:51
我也是!!!你在读书么?

是的,学生党
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-1 20:26:02 | 显示全部楼层

我天!!!你在哪里读?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-1 21:41:45 | 显示全部楼层
阿撩 发表于 2016-12-1 20:26
我天!!!你在哪里读?

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

使用道具 举报

 楼主| 发表于 2016-12-1 21:43:30 | 显示全部楼层

可以加个好友吗!!!我天 太近了。。。你是计算机专业的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-1 22:03:48 | 显示全部楼层
阿撩 发表于 2016-12-1 21:43
可以加个好友吗!!!我天 太近了。。。你是计算机专业的吗?

机械电子,大二,你呢?我的扣扣853425548
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-1 22:06:08 | 显示全部楼层
致年轻的我们 发表于 2016-12-1 22:03
机械电子,大二,你呢?我的扣扣853425548

加你了!!!看扣扣!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-1 22:25:20 | 显示全部楼层
重载大概的定义就是声明相同名字的函数,参数的变量可以不同

根部参数的类型调用对应的同名不同内容的函数。

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

使用道具 举报

 楼主| 发表于 2016-12-1 22:32:52 | 显示全部楼层
四十二 发表于 2016-12-1 22:25
重载大概的定义就是声明相同名字的函数,参数的变量可以不同

根部参数的类型调用对应的同名不同内容的函 ...

嗯嗯 谢谢! 虽然好像说是C++的内容 我才学C 还不大懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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