请问如下C程序为什么结果不一样:
main()
{
int a,b;
float c;
scanf("%d %d",&a,&b);
c=(a+b)/2.0;
printf("\n这两个数的和除以2为%f",c); //输入两个数之后这个算的结果对
printf("\n这两个数的和除以2为%f",sum(a,b)); //输入两个数之后这个算的结果总是0
getch();
}
sum(a,b)
int a,b;
{
float s;
s=(a+b)/2.0;
return(s);
}
请问这到底是为什么?
----------------解决方案--------------------------------------------------------
我的是一样的。
----------------解决方案--------------------------------------------------------
你的sum函数 前面没有定义类型 所以默认返回值为int的 而你输入的是%f
应这样定义sum函数
float sum(int a,int b);
还有 建议函数的参数在()内定义比较好
main()
{
float sum(int a,int b); /* 函数声明 */
int a,b;
float c;
scanf("%d %d",&a,&b); /* 输入的格式要注意下 */
c=(a+b)/2.0;
printf("\n%f",c);
printf("\n%f",sum(a,b));
getch();
}
float sum(int a,int b)
{
float s;
s=(a+b)/2.0;
return(s);
}
----------------解决方案--------------------------------------------------------
我的直接 连编译都没有通过
----------------解决方案--------------------------------------------------------
有的空格是在中文输入法下输入的。
----------------解决方案--------------------------------------------------------
改成这样试试
#include<stdio.h>
main()
{
int a,b;
float c;
float sum(int,int);
scanf("%d %d",&a,&b);
c=(a+b)/2.0;
printf("\n??个数的和除以2?%f",c);
printf("\n??个数的和除以2?%f",sum(a,b));
getch();
}
float sum(int a,int b)
{
float s;
s=(a+b)/2.0;
printf("----%f\n",s);
return(s);
}
----------------解决方案--------------------------------------------------------
sum函数没有在main函数里声明
----------------解决方案--------------------------------------------------------
谢谢大家的帮忙,float sum(int a,int b)后好用
----------------解决方案--------------------------------------------------------