[英]Changing the sign of array values in C
我需要編寫一個 function,它獲取數組中的元素並更改符號(例如 3 --> -3 或 -3 --> 3)。 我想使用這個數組 (int a[2][3] = { { 55,-44,},{1, -4},{6,11} };) 而不是 ( int a[] = { 5, 6,-4};) 我該怎么辦?
#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 a[3][2] = { { 55,-44,},{1, -4},{6,11} };
而不是這個
int a[2][3] = { { 55,-44,},{1, -4},{6,11} };
在任何情況下,如果你的編譯器支持可變長度 arrays 那么 function 看起來像
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];
}
}
}
並撥打 function
change_sign( 3, 2, a );
否則 function 看起來像
#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];
}
}
}
並稱呼
change_sign( a, 3 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.