C语言程序设计问题在线解答

来源:百度知道 编辑:UC知道 时间:2024/05/13 18:43:05
main()
{int sum;
float a,b,c;
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("sum is %f",c);
}
float add(int x,y);
{
float z;
z=x+y;
printf("z=%f",z);
}

#include<stdio.h>

main()
{

float a,b,c;
float add(float x, float y);
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("sum is %f",c);
}

float add(float x, float y)
{
float z;
z=x+y;

printf("z=%f\n",z);

return z;
}
////2,3

#include<stdio.h>
float add(int x,y); /*函数声明*/
void main()
{int sum;
float a,b,c;
scanf("%f,%f",&a,&b); /*这里输入的时候不要忘记了逗号,或者去掉程序里的逗号*/
c=add(a,b);
printf("sum is %f\n",c);
}
float add(folat x,float y)/*float,去掉分号*/
{
float z;
z=x+y;
return z;/*printf("z=%f",z); 返回值代替打印*/
}

a和b是float类型,在调用c=add(a,b)的时候,由于add函数的参数是int型,实际上进行了一个隐式的强制类型转换,把实参转化为形参的类型。即:c=add( (int)a, (int)b ),显然从float到int是丢失精度的转化,所以结果会出现错误。

修正后如下:

#include<stdio.h>/*使用printf函数,须include*/