繁体   English   中英

在C语言中,迭代函数没有给出正确的输出,该输出应该是不是总和(来自用户输入的数据)或数据数组中的数字?

[英]In C, iterative function is not giving the right output which is supposed to be a number not in sum(from data entered by user) or in data array?

我正在做作业。 我的任务是:编写一个程序,以查找未出现在数组中并且不能由数组中两个数字之和形成的最小正整数。
int issumof2(int data [],int大小,int数)
int inarray(int data [],int size,int number) (大小是数组中元素的数量,数据是从用户那里获取的)
我真的对如何解决这个问题感到困惑。 我不知道如何同时使用这两个函数来查找数字。 在这个p

#include <stdio.h>
//function declaration
int issumof2(int data[], int size, int number);
int inarray(int data[], int size, int number);
int i, data[7], size = 7, sum, n=0 number=0;

int main()
{
    printf("Enter 7 numbers ");
    for (i = 0; i < size; i++)
        scanf("%d", &data[i]);
    //function call
    inarray(data, size, number);
    issumof2(data, size,number);
    printf("Number is %d\n", issumof2(data, size,number));//this is most likely wrong
    return 0;
}
int issumof2(int data[], int size, int number)//add all combinations of data
{
    inarray(data, size, number); //calling inarray to check that number isn't in data
    {
        for (j = i + 1; j < size; j++)//professor told me to use j<i but it doesn't work for some reason
        {
            sum = data[i] + data[j];//gets the sum
            if (number != sum && number != data[i])
            {
                number = data[i]+1+number; 
                number++;
                data[i]++;//moving on to the next data
            }

        }

    }

    return number;//this is also returning number??
}
int inarray(int data[], int size, int number)//check if number is in array
{
    if (n <=size)
    {
        if (number != data[i])
            number = data[i] + 1 + n;
            n++;
            data[i]++;//moving on to the next data
    }   
    return number;//this is returning number
}

expected output:
Enter 7 numbers
1 2 2 3 4 3 1
Smallest positive Integer = 9

您的main()函数的结构应如下所示:

int main()
{
    printf("Enter 7 numbers ");
    for (i = 0; i < size; i++)
        scanf("%d", &data[i]);
    while (inarray(data, size, number) || issumof2(data, size, number)) {
        number++;
    }
    printf("Number is %d\n", number);
    return 0;
}

然后,您需要编写inarray()issumof2()函数,以便在给定数字满足条件的情况下返回true否则返回false 他们不应该自己搜索号码。 我把这作为练习留给您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM