在C中更改数组值的符号
我需要编写一个函数来获取数组中的元素并更改符号(例如3-->-3或-3-->3)。我想用这个数组(inta[2][3]={{55,-44,},{1,-4},{6,11};)代替(inta[]={5,6,-4};) 我该怎么办在C中更改数组值的符号,c,multidimensional-array,parameters,function-declaration,variable-length-array,C,Multidimensional Array,Parameters,Function Declaration,Variable Length Array,我需要编写一个函数来获取数组中的元素并更改符号(例如3-->-3或-3-->3)。我想用这个数组(inta[2][3]={{55,-44,},{1,-4},{6,11};)代替(inta[]={5,6,-4};) 我该怎么办 #include <stdio.h> void change_sign(int* beta) { for (int i = 0; i < 3; i++) { beta[i] = -beta[i]; } } int main(vo
#include <stdio.h>
void change_sign(int* beta)
{
for (int i = 0; i < 3; i++) {
beta[i] = -beta[i];
}
}
int main(void)
{
int a[] = { 5, 6, -4};
for (int i = 0; i < 3; i++) {
printf("%d ", a[i]);
}
printf("\n");
change_sign(a);
for (int i = 0; i < 3; i++) {
printf("%d ", a[i]);
}
return 0;
}
#包括
无效更改符号(int*beta)
{
对于(int i=0;i<3;i++){
β[i]=-β[i];
}
}
内部主(空)
{
int a[]={5,6,-4};
对于(int i=0;i<3;i++){
printf(“%d”,a[i]);
}
printf(“\n”);
变更标志(a);
对于(int i=0;i<3;i++){
printf(“%d”,a[i]);
}
返回0;
}
对于初学者来说,您的意思似乎是这个数组
int a[3][2] = { { 55,-44,},{1, -4},{6,11} };
而不是这个
int a[2][3] = { { 55,-44,},{1, -4},{6,11} };
在任何情况下,如果编译器支持可变长度数组,那么函数可以如下所示
void change_sign( size_t m, size_t n, int a[][n] )
{
for ( size_t i = 0; i < m; i++ )
{
for ( size_t j = 0; j < n; j++ )
{
a[i][j] = -a[i][j];
}
}
}
#define N 2
void change_sign( int a[][N], size_t m )
{
for ( size_t i = 0; i < m; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
a[i][j] = -a[i][j];
}
}
}
否则,函数可能看起来像
void change_sign( size_t m, size_t n, int a[][n] )
{
for ( size_t i = 0; i < m; i++ )
{
for ( size_t j = 0; j < n; j++ )
{
a[i][j] = -a[i][j];
}
}
}
#define N 2
void change_sign( int a[][N], size_t m )
{
for ( size_t i = 0; i < m; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
a[i][j] = -a[i][j];
}
}
}
乘以-1。e、 g
beta[i]=-1*beta[i]代码>将函数更改为无效更改符号(int beta[][5])
并使用两个嵌套循环。那么,您的代码是否有效?或者您得到了什么结果?由于更改了问题,数组初始化与数组定义不匹配。很抱歉。这是个错误。谢谢大家。特别是多亏了风向标,我解决了这个问题。非常感谢你。