如何使用子程序将矢量的所有分量转换为绝对值?
How can I convert all components of a vector into absolute value using a subprogram?
刚开始学习C,如果你能在以下方面帮助我就太好了:
我刚刚编写了一个程序,用于保存用户输入的 4 分量向量(使用名为 save_vector
的函数),打印它(使用名为 print_vector
的函数),如果任何分量为负, 它还使用函数 absolute_values
.
打印所有分量的绝对值(正数)
但是,我不确定如何使 absolute_values
功能发挥作用。其他两个函数工作正常。
期待阅读任何改进这段代码的建议!谢谢! :-)
#include <stdio.h>
void print_vector(int N,float * V);
void save_vector(int N,float * V);
void absolute_values(int N, float * V);
int main(void)
{
const int n=5;
int i;
float v[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);
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)
{
int i;
for(i=0;i<N;i++)
if (*(v+i)<0)
v[i]=v[i]*(-1);
printf(" %.2f ",*(V+i));
}
使用 V
而不是 v
。而且,你错过了 for 循环中的大括号 {}
:
void absolute_values(int N, float * V)
{
int i;
for(i=0;i<N;i++){
if (*(V+i)<0)
V[i]=V[i]*(-1);
printf(" %.2f ",*(V+i));
}
}
您应该使用 V[i]
而不是 *(V+i)
。两者都很好,但 V[i]
更易于阅读代码。不要将它们混合在一起,这会使您的代码难以阅读和理解。
作为@Hitokiri 解决方案的替代方案,我也将函数 absolute_values
留在此处,但这次使用条件运算符。另外,根据@Hitokiri 的建议,我正在使用 V[i]
,因为它看起来更干净。
void absolute_values(int N, float * V)
{
int i;
for(i=0;i<N;i++)
{
printf(" %.2f ", ((V[i]<0)?-V[i]:V[i]));
}
}
刚开始学习C,如果你能在以下方面帮助我就太好了:
我刚刚编写了一个程序,用于保存用户输入的 4 分量向量(使用名为 save_vector
的函数),打印它(使用名为 print_vector
的函数),如果任何分量为负, 它还使用函数 absolute_values
.
但是,我不确定如何使 absolute_values
功能发挥作用。其他两个函数工作正常。
期待阅读任何改进这段代码的建议!谢谢! :-)
#include <stdio.h>
void print_vector(int N,float * V);
void save_vector(int N,float * V);
void absolute_values(int N, float * V);
int main(void)
{
const int n=5;
int i;
float v[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);
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)
{
int i;
for(i=0;i<N;i++)
if (*(v+i)<0)
v[i]=v[i]*(-1);
printf(" %.2f ",*(V+i));
}
使用 V
而不是 v
。而且,你错过了 for 循环中的大括号 {}
:
void absolute_values(int N, float * V)
{
int i;
for(i=0;i<N;i++){
if (*(V+i)<0)
V[i]=V[i]*(-1);
printf(" %.2f ",*(V+i));
}
}
您应该使用 V[i]
而不是 *(V+i)
。两者都很好,但 V[i]
更易于阅读代码。不要将它们混合在一起,这会使您的代码难以阅读和理解。
作为@Hitokiri 解决方案的替代方案,我也将函数 absolute_values
留在此处,但这次使用条件运算符。另外,根据@Hitokiri 的建议,我正在使用 V[i]
,因为它看起来更干净。
void absolute_values(int N, float * V)
{
int i;
for(i=0;i<N;i++)
{
printf(" %.2f ", ((V[i]<0)?-V[i]:V[i]));
}
}