C 如何使用子程序将向量的所有分量转换为绝对值?
刚开始学习C,如果您能在以下方面帮助我,那就太好了: 我刚刚编写了一个程序,保存用户输入的4分量向量(使用名为C 如何使用子程序将向量的所有分量转换为绝对值?,c,absolute,C,Absolute,刚开始学习C,如果您能在以下方面帮助我,那就太好了: 我刚刚编写了一个程序,保存用户输入的4分量向量(使用名为save_vector)并打印它(使用名为print_vector)的函数),如果任何分量为负,它也会使用absolute_values函数以绝对值(正)打印所有分量 但是,我不知道如何使函数绝对值工作。其他两个函数工作得很好 期待阅读任何改进这段代码的建议!谢谢!:-) #包括 无效打印向量(整数N,浮点*V); void save_向量(int N,float*V); 无效绝对值(整
save_vector
)并打印它(使用名为print_vector
)的函数),如果任何分量为负,它也会使用absolute_values
函数以绝对值(正)打印所有分量
但是,我不知道如何使函数
绝对值
工作。其他两个函数工作得很好
期待阅读任何改进这段代码的建议!谢谢!:-)
#包括
无效打印向量(整数N,浮点*V);
void save_向量(int N,float*V);
无效绝对值(整数N,浮点*V);
内部主(空)
{
常数int n=5;
int i;
浮动v[n];
puts(“输入向量的5个分量:”);
保存向量(n,v);
puts(“\n向量为:”);
打印向量(n,v);
puts(“\n绝对向量为:”);
绝对_值(n,v);
返回0;
}
无效保存向量(整数N,浮点*V)
{
int i;
对于(i=0;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));
}
}
void绝对值(int N,float*V)
{
int i;
对于(i=0;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]));
}
}
void绝对值(int N,float*V)
{
int i;
对于(i=0;iabsolute_values
有效。您只需打印出结果。尝试在之后再次调用print_vector
。Hi@L.ScottJohnson谢谢您的回答。我刚刚编辑了我的问题,包括print()函数。但是,我仍然会收到相同的错误:'v'未声明(首次在此函数中使用)
。此错误与if(*(v+i)您应该使用v
而不是v
有关,@Hitokiri,非常感谢您的帮助!!!:-)
void absolute_values(int N, float * V)
{
int i;
for(i=0;i<N;i++)
{
printf(" %.2f ", ((V[i]<0)?-V[i]:V[i]));
}
}