如何在 C 函数中传递二维数组?

问题描述 投票:0回答:3
#include <stdio.h>
#include <conio.h>

int arasrc(double a[][], int r, int c, double s);

int main()
{
    double ara[3][3];
    int r, c;
    //ara input
    for(r = 0; r < 3; r ++)
    {
        for(c = 0; c < 3; c ++)
        {
            printf("\n\tEnter value for array (%d, %d): ", r + 1, c + 1);
            scanf("%lf", &ara[r][c]);
        }
    }
    //printing the ara
    printf("\n\tArray = ");
    for(r = 0; r < 3; r ++)
    {
        for(c = 0; c < 3; c ++)
        {
            printf("[ %6.2lf ]", ara[r][c]);
        }
        printf("\n\t\t");
    }
    //searching in ara
    double s;
    int found;

    printf("\n\tEnter a value to search: ");
    scanf("%lf",&s);
    found = arasrc(ara, 3, 3, s);
    if(found)
    {
        printf("\n\tFound at position (%d, %d).", (r + 1), (c + 1));
    }
    else
    {
        printf("\n\tNot found!");
    }
    
    
    
    getch();
    return 0;
}

//searching in ara
int arasrc(double a[][], int r, int c, double s)
{
    for(r = 0; r < 3; r ++)
    {
        for(c = 0; c < 3; c ++)
        {
            if(s == a[r][c])
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }
}

(首先,我对编程完全陌生。我在大学开始学习C编程语言课程才几天。所以,我还不知道很多东西。)

说到问题:我必须进行编码,要求用户在二维数组中提供输入。然后它打印数组并要求用户在数组中搜索值。 主要目标是为“搜索”部分创建另一个功能。

但是我无法将数组传递给函数。不知道问题是什么。请帮我解决这个问题。

arrays c function pointers
3个回答
2
投票

首先,将 r 和 c 作为参数传递,然后将它们重用为本地循环迭代器是没有任何意义的。它们应该与传递的数组的大小相对应,或者它们不应该被声明为参数而是局部变量。

另请注意,

else { return 0; }
没有意义,否则程序将在循环的第一次迭代时离开该函数。

在现代 C 中,建议将二维数组传递给这样的函数:

int arasrc (int r, int c, double a[r][c], double s)
{
    for(i = 0; i < r; i++)
    {
        for(j = 0; j < c; j++)
        {
            if(s == a[i][j])
            {
                return 1;
            }
        }
    }

    return 0;
}

用途:

arasrc(3, 3, ara, s);


2
投票

包括数组大小。使用以下代码。

int arasrc(double a[][3], int r, int c, double s)
{
    for(r = 0; r < 3; r ++)
    {
        for(c = 0; c < 3; c ++)
        {
            if(s == a[r][c])
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }
}

0
投票
#include <stdio.h>
#include <conio.h>
int arasrc(int a[3][3], int s)
{
    for( int r = 0; r < 3; r ++)
    {
        for(int c = 0; c < 3; c ++)
        {
            if(s == a[r][c])
            {
                return 1;
            }
        }
    }
}

int main()
{
    int ara[3][3];
     int r , c;
    //ara input
    for( r = 0; r < 3; r ++)
    {
        for( c = 0; c < 3; c ++)
        {
            printf("\n\tEnter value for array (%d, %d): ", r + 1, c + 1);
            scanf("%d", &ara[r][c]);
        }
    }
    //printing the ara
    printf("\n\tArray = ");
    for(int i = 0; i < 3; i ++)
    {
        for(int j = 0; j < 3; j ++)
        {
            printf("%d",ara[i][j]);
        }
        printf("\n\t\t");
    }
    //searching in ara
    int s;
    int found = 0;
    printf("\n\tEnter a value to search: ");
    scanf("%d",&s);
    found = arasrc(ara , s);
    if(found = 1)
    {
        printf("\n\tFound ");
    }
    else
    {
        printf("\n\tNot found!");
    }

    return 0;
}

你的问题的解决方案你需要学习语法,只有你的逻辑是正确的

© www.soinside.com 2019 - 2024. All rights reserved.