簡體   English   中英

更改 C 中數組值的符號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM