【问题标题】:In an array how can one check if any two of its content numbers can add up to a certain value x or not?在一个数组中,如何检查它的任何两个内容数字是否可以加起来为某个值 x?
【发布时间】:2013-11-21 04:23:22
【问题描述】:

可以使用什么命令来检查数组中任意两个数字之和是否等于某个 x 值。

【问题讨论】:

  • 您的代码中没有任何数组。
  • 你可以写j = size而不是for(i = 0; i < size; i++) j = i + 1
  • 有关您编写的代码问题的问题必须在问题本身中描述具体问题——并包含有效代码以重现它。请参阅SSCCE.org 以获得指导。
  • @user3015922, y + z == x?

标签: c arrays


【解决方案1】:

以下解决方案应该对您有所帮助:

int TestArray (int array[], int count, int targetSum)
{
    int i,j;

    for (i=0; i<count-1; i++)
    {
        for (j=i+1; j<count; j++)
        {
            if (array[i] + array[j] == targetSum)
            {
                return 1;
            }
        }
    }

    return 0;
}

此函数将数组、数组元素的数量(在您的示例中为 3)和要检查的目标总和(在您的示例中为 5)作为参数。

用法是这样的(示例主要):

int main(int argc, char *argv[])
{
    int numbers1[] = {1,2,3,4};
    int numbers2[] = {1,1,3,3};
    int result;

    result = TestArray(numbers1, 4, 5);

    if (result == 1)
    {
        printf("True");
    }
    else
    {
        printf("False");
    }

    result = TestArray(numbers2, 4, 5);

    if (result == 1)
    {
        printf("True\n");
    }
    else
    {
        printf("False");
    }

    return 0;
}

输出是:

是的

错误

【讨论】:

  • 好的 - 这很容易修复 - 我已经更新了上面的代码,改为使用数组表示法传递。如果不允许,只需将代码移至 main!
【解决方案2】:

根据你的例子

初学者练习..

int arr[3] = {1,2,3};    //array has 3 numbers
int i,j,x,k;
int res = 0;

scanf("%d",&x);

for(i=0; i< size; i++){
    j = i+1;
    if(j >= size){
        j = 0;
    }
    k = arr[i] + arr[j];

    if(k == x){
        res = 1;
        break;
    }
}
if(res  == 1)
    printf("True\n");
else
    printf("false\n");

【讨论】:

    【解决方案3】:

    这个怎么样:

    int i;
    int j;
    int x;
    int [size] TheArray;
    
    printf("Enter value of x: ");
    
    scanf("%d", &x);
    
    for(i = 0; i < size; i++)
    {
        for(j = 0; j < size; j++)
        {
            if(TheArray[j]+TheArray[i] == x)
            {
                printf("true");
                break;
            }
            else printf("false");
        }
    }
    

    您需要在代码中包含数组,他是您问题的主要参与者。

    【讨论】:

    • int [size] TheArray;?
    • 只有在目标总和为奇数时才能保证有效。如果目标是 4,而数组是 {2,0,0},那么您的代码将在第一个循环中达到 true,因为它会将相同索引的值添加到自身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多