C语言 redefinition; different basic types 错误?

输入10个学生成绩,求平均成绩,并将低于平均成绩的分数打印出来程序如下:#include<stdio.h>voidreaddata(floatscore[10]){int... 输入10个学生成绩,求平均成绩,并将低于平均成绩的分数打印出来
程序如下:

#include <stdio.h>
void readdata (float score[10])
{
int i;
printf("enter 10 student's scores:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
return;
}

float aver(float score[10])
{
float sum;
int i;
for(sum=0,i=0;i<10;i++)
sum=sum+score[i];
return(sum/10);
}

void printf(float score[10],float ave)
{
int i;
printf("the score which are below the average:\n");
for(i=0;i<10;i++)
if(score[i]<ave)
printf("%8.2f,acore[i]);
return;
}
main()
{
void readdata (float score[10]);
float aver(float score[10]);
void printf(float score[10],float ave);
float ave,score[10];
readdata(score);
ave=aver(score);
printf("average=%6.2f\n",ave);
printf(score,ave);
}

编译时遇到“error C2371: 'printf' : redefinition; different basic types”的错误,可是我检查程序,并未发现定义了两种数据类型的统一数据,希望高手帮忙分析解答...
展开
 我来答
爱教育爱学习
高粉答主

2019-10-20 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112720

向TA提问 私信TA
展开全部

在asd函数中调用了er函数,而编译器之前并为看到有该函数的定义,因此编译器进行了一个隐含的函数原型解释,即inter(),到之后的er函数定义时,编译器发现同之前的隐含的原型不匹配,因此出错。

#includevoidasd(){

er();

}

voider(intb){

printf("er");

}

voidmain(){asd();}

扩展资料

C语言要定义不同的数据类型注意事项

1、char类型一般只占一个字节,short通常占两个字节,其他类型有时候常常因计算机的架构不同,占用空间会有所差异。首先定义了一个char变量,一个double变量,然后分别对这两个变量赋值。顺便把各种数据类型占用空间大小打印出来了。

2、编译执行,输出“1,2,8,4,8”,不同的机器可能有所差异,但这不是重点,弄清楚不同的数据类型占用的空间不同就可以了。计算机使用不同的数据类型,会有效率上的差异。

百度百科—c语言

划落苍穹
2015-12-17 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:72
采纳率:100%
帮助的人:74.6万
展开全部
看错误提示像是重定义,貌似两次的数据类型还不相同。刚才百度的说如果函数的声明和定义类型不相同也会有如此提示。建议把错误代码上传一下,太多的话只上传错误位置的代码得了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狈让炮bpd96
推荐于2017-10-03 · TA获得超过4971个赞
知道大有可为答主
回答量:2451
采纳率:0%
帮助的人:2674万
展开全部
改好了
主要是void printff(float score[10],float ave) 与库函数printf重复了
#include <stdio.h>
void readdata (float score[10])
{
int i;
printf("enter 10 student's scores:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
return;
}

float aver(float score[10])
{
float sum;
int i;
for(sum=0,i=0;i<10;i++)
sum=sum+score[i];
return(sum/10);
}

void printff(float score[10],float ave)
{
int i;
printf("the score which are below the average:\n");
for(i=0;i<10;i++)
if(score[i]<ave)
printf("%8.2f",score[i]);
return;
}
main()
{
void readdata (float score[10]);
float aver(float score[10]);
void printff(float score[10],float ave);
float ave,score[10];
readdata(score);
ave=aver(score);
printf("average=%6.2f\n",ave);
printff(score,ave);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e34e359
推荐于2017-10-09 · TA获得超过130个赞
知道答主
回答量:49
采纳率:100%
帮助的人:14.6万
展开全部

这是重复定义的错误。遇到这个错误,一般按照下列思路查错:

  1. 首先检查有没有重复定义,可以定位到错误的地方,用全文搜索的方法,查看有没有重复定义。

  2. 如果确定没有重复定义,那可能是你在.h头文件中定义了变量或者函数,而这个.h头文件被多次包含。一般为了避免这种头文件被多次包含造成的重定义错误,在.h头文件中会加入下列代码:

             #ifndef     _TEST_H

             #define    _TEST_H         //一般是文件名的大写,其他的也无所谓

       头文件结尾加一句:

             #endif

        这样就能防止重复定义了。你所有的变量和函数的声明都在这中间写就可以了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式