为什么 `pow(sum,1/2)` 没有给我与 `sqrt(sum))` 相同的结果?
Why `pow(sum,1/2)` is not giving me the same result as `sqrt(sum))`?
在最后的代码中,底部有一个名为 general_norm
的函数,它使用以下 print()
个函数:
printf(" %f",sqrt(sum));
printf(" %f",pow(sum,1/2));
虽然 sqrt(sum))
给出了正确的结果,但我不明白为什么 pow(sum,1/2)
没有考虑 √x = x½
。
你能帮我弄清楚我错过了什么吗?谢谢! :-)
#include <stdio.h>
#include <math.h>
void print_vector(int N,float * V);
void save_vector(int N,float * V);
void absolute_values(int N,float * V, float * VABS);
void maximum_value(int N, float * VABS);
void general_norm(int N, float * VABS);
int main(void)
{
const int n=4;
int i;
float v[n],vabs[n];
puts("Enter the 5 components of the vector:");
save_vector(n, v);
puts("\nThe vector is:");
print_vector(n, v);
puts("\nThe absolute vector is:");
absolute_values(n, v, vabs);
puts("\nThe maximum value is:");
maximum_value(n, vabs);
puts("\nThe general norm is:");
general_norm(n, vabs);
return 0;
}
void save_vector(int N, float * V)
{
int i;
for(i=0;i<N;i++)
scanf("%f",V+i);
}
void print_vector(int N, float * V)
{
int i;
for(i=0;i<N;i++)
printf(" %.2f ",*(V+i));
}
void absolute_values(int N, float *V, float *VABS)
{
int i;
for(i=0;i<N;i++)
{
VABS[i]=((V[i]<0)?-V[i]:V[i]);
printf(" %f", VABS[i]);
}
}
void maximum_value(int N, float * VABS)
{
int i;
float maximum;
maximum = VABS[0];
for (i = 1; i < 4; i++)
{
if (VABS[i] > maximum)
{
maximum = VABS[i];
}
}
printf(" %f", maximum);
}
void general_norm(int N, float * VABS)
{
int i;
float sum;
for (i = 0; i < 4; i++)
{
sum=sum+pow(VABS[i],2);
}
printf(" %f",sqrt(sum));
printf(" %f",pow(sum,1/2));
}
刚刚离开这里 1201ProgramAlarm 给我的答案:
整数数学。 1/2
是 0
。使用 0.5
,或强制类型 1.0 / 2.0
.
1.0 / 2
也可以。
在最后的代码中,底部有一个名为 general_norm
的函数,它使用以下 print()
个函数:
printf(" %f",sqrt(sum));
printf(" %f",pow(sum,1/2));
虽然 sqrt(sum))
给出了正确的结果,但我不明白为什么 pow(sum,1/2)
没有考虑 √x = x½
。
你能帮我弄清楚我错过了什么吗?谢谢! :-)
#include <stdio.h>
#include <math.h>
void print_vector(int N,float * V);
void save_vector(int N,float * V);
void absolute_values(int N,float * V, float * VABS);
void maximum_value(int N, float * VABS);
void general_norm(int N, float * VABS);
int main(void)
{
const int n=4;
int i;
float v[n],vabs[n];
puts("Enter the 5 components of the vector:");
save_vector(n, v);
puts("\nThe vector is:");
print_vector(n, v);
puts("\nThe absolute vector is:");
absolute_values(n, v, vabs);
puts("\nThe maximum value is:");
maximum_value(n, vabs);
puts("\nThe general norm is:");
general_norm(n, vabs);
return 0;
}
void save_vector(int N, float * V)
{
int i;
for(i=0;i<N;i++)
scanf("%f",V+i);
}
void print_vector(int N, float * V)
{
int i;
for(i=0;i<N;i++)
printf(" %.2f ",*(V+i));
}
void absolute_values(int N, float *V, float *VABS)
{
int i;
for(i=0;i<N;i++)
{
VABS[i]=((V[i]<0)?-V[i]:V[i]);
printf(" %f", VABS[i]);
}
}
void maximum_value(int N, float * VABS)
{
int i;
float maximum;
maximum = VABS[0];
for (i = 1; i < 4; i++)
{
if (VABS[i] > maximum)
{
maximum = VABS[i];
}
}
printf(" %f", maximum);
}
void general_norm(int N, float * VABS)
{
int i;
float sum;
for (i = 0; i < 4; i++)
{
sum=sum+pow(VABS[i],2);
}
printf(" %f",sqrt(sum));
printf(" %f",pow(sum,1/2));
}
刚刚离开这里 1201ProgramAlarm 给我的答案:
整数数学。 1/2
是 0
。使用 0.5
,或强制类型 1.0 / 2.0
.
1.0 / 2
也可以。