| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:c语言数据类型转换问题
只看楼主 加入收藏
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:9 
c语言数据类型转换问题
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a;
    int i;
    int array[20];
    //获取20个随机数
    srand((int)time(NULL));
    for(i=0;i<20;i++)
    {
        array[i]=rand()%41+10;
    }
    //打印出来
    for(i=0;i<20;i++)
    {
        printf("%d ",array[i]);
    }
    putchar('\n');

    //这里就不用说了
    printf("最大值:%d\n最小值:%d\n平均值:%lf\n总和:%d\n",max(array),min(array),average(array),sum(array));

    return 1;
}

//下面是4个函数
int max(int *array)
{
    int max;
    int i;
    max=array[0];
    for(i=1;i<20;i++)
    {
        if(array[i]>max)
             max=array[i];
    }
    return max;
}

int min(int *array)
{
    int min;
    int i;
    min=array[0];
    for(i=1;i<20;i++)
    {
        if(array[i]<min)
             min=array[i];
    }
    return min;
}

double average(int *array)        //就是这里出问题了
{
    int i;
    double average=0;
    for(i=0;i<20;i++)
    {
        average+=array[i];
    }
    average/=20;
    return average;
}

int sum(int *array)
{
    int i;
    int sum=0;
    for(i=0;i<20;i++)
    {
        sum+=array[i];
    }
    return sum;
}

求平均数的函数那里,原来是int型的返回值。由于平均值可能是小数,所以想改成double型的,结果就编译错误了(codeblocks,gcc编译器)
图片附件: 游客没有浏览图片的权限,请 登录注册


应该是类型冲突了,但我不知道哪里错了,该怎么改。
还有谁能讲讲数据类型转换的知识,谢谢了
搜索更多相关主题的帖子: c语言 
2012-11-14 19:31
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:7 
你变量名和函数名重了没发现?

重剑无锋,大巧不工
2012-11-14 19:41
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
回复 2楼 beyondyf
那应该没关系吧,求平均数那里是int的型就没问题了,改成double型就错了。。。。。。。。。。。。。

哦。。。我改过,不让它重名,结果都一样

[ 本帖最后由 卡卡罗特wang 于 2012-11-14 19:50 编辑 ]
2012-11-14 19:48
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:7 
回复 楼主 卡卡罗特wang
我使用的vc6.0可以,没有错误啊~~~~~你的编译器不太懂~~~
2012-11-14 19:58
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:7 
斑竹就是为了给别人回答问题的呀?

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-11-14 20:02
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
开眼界了。你那里还全是重名的。你把那几个函数的定义放到main前就好了。

重剑无锋,大巧不工
2012-11-14 20:03
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
回复 6楼 beyondyf
...    取名字太麻烦了。。。
soga   刚才看了下书,c语言一定要先声明函数才行。
不过,我反复试过,求平均数函数如果是int返回值,即使放后面也行,不知道为什么。。
略显蛋疼。。。
2012-11-14 20:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 7楼 卡卡罗特wang
函数的返回值默认为int型。在没有之前声明时,编译器会为遇到的函数创建一个“隐式声明”,其返回值为int型。

如果你在之后定义了int型的同名函数,没有问题。如果不是int型,编译器会判断函数定义与声明不同,从而报错。

重剑无锋,大巧不工
2012-11-14 20:53
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:0 
回复 8楼 beyondyf
哦,长姿势了。。
2012-11-14 21:18
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这些问题平时还真没注意过(写了这么多年程序就从没想过取个和函数名一样的变量名用用)。帮你找了找资料,自己也知道了。

重剑无锋,大巧不工
2012-11-14 21:29
快速回复:c语言数据类型转换问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038069 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved