一个非常费解得C语言问题?!!!

来源:百度知道 编辑:UC知道 时间:2024/06/11 14:35:06
把一个实数四舍五入到n位小数,是先将这个实数乘以10的N次方,然后加0.5.。然后保留整数部分。。再讲这个实数除以10的N次方。。是这样做吧?但是我很费解,为什么我这个程序就是会报错呢?请高手指点,如果能在我这程序上修改就好了,不要用太高级的C语言哦,我只是初学者,会看不懂的。。。。

#include<stdio.h>
#include <math.h>

int round(int x, int y); /*为什么老是这一步报错?我真的搞不懂。*/

main()
{
int n;
double a;

scanf("%lf",&a);
scanf("%d",&n);

float c = round (a,n);
printf("%f",c);

}

int round(int x, int y)
{
double z;
z= x*pow(10,y);
z=z+0.5;

z=(int)z; /*这一步是要保留整数部分,我不知道怎么做,所以蛮写的*/

z=z/(pow(10,y));
return z;
}
第一个解释有误。。不是int round(int x, int y); 报错~是float c = round (a,n);

float c = round (a,n);
老报错!

#include<stdio.h>
#include <math.h>

double round(double x, double y);

main()
{
double n;
double a;
double c;
scanf("%lf",&a);
scanf("%lf",&n);
c=round(a,n);
printf("%lf",c);getch();

}

double round(double x, double y)
{
double z;
z= x*pow(10,y);
z=z+0.5;

z=floor(z);

z=z/pow(10,y);
return z;
}

帮你改了一下 注意类型要匹配 形参和实参的类型要一致
还有那个地方要用 floor函数

main()
{
int n;
double a;
float c;

scanf("%lf",&a);
scanf("%d",&n);

c = round (a,n);
printf("%f",c);

}

double round(double x, int y)//这里要传和返回double,不能传int,语法无关,题意不允许……
{
double z;
z= x*pow(10,y);
z=z+0.5;

z=(int)z; /*这一步是要保留整数部分,我不知道怎么做,所以蛮写的*/

z=z/(pow(10,y));
return z;
}