试图将数组传递给c中的函数

时间:2014-03-19 15:37:44

标签: c

我被要求用c ++写一个彩票程序,不确定我是否正确使用功能请帮助

//function prototypes
int myNumbers();
void displayNums();

#include <stdio.h>
#define NUMS 6
#define WIN 7


// function myNumbers takes input from user 
int myNumbers(int numbers[]) //implememt function 
{
    int i;
    int numbers;
    int input[NUMS];
    printf ("Please enter your lucky numbers\n");

    for (i=0;i<NUMS;i++)//loop through array to take input
    {
        scanf("%d",&input[i]);                
    }//end for loop


    return (numbers);        
}//end function myNumbers

4 个答案:

答案 0 :(得分:1)

每个函数声明一个新数组,而不是使用作为参数传递给它的数组。

void displayNums(int print[])
{
    int i;
    int output;
    int numbers[NUMS];
    output = myNumbers(numbers);
    printf("Your numbers are %d \n", output);
}

请注意,使用的print参数无处可寻,而您正在使用int numbers[NUMS]。删除该声明并使用print。 (另请考虑将您的论点命名为print之外的其他内容;此名称令人困惑,并且无法准确描述变量存储的内容。)

答案 1 :(得分:1)

您没有正确使用数组来传达数字,请参阅函数

int myNumbers(int userPick[]) //implememt function 
{
    int i;
    int numbers;
    int input[NUMS];
    printf ("Please enter your lucky numbers\n");

    for (i=0;i<NUMS;i++)//loop through array to take input
    {
        scanf("%d",&input[i]);                
    }//end for loop
    numbers = *(input+i);

    return (numbers);        
}//end function myNumbers

它将数字读取到本地数组并返回*(input+i),这将是一个随机数,因为您的读取数组是从输入+ 0到输入+ i-1。你应该将数组或指针传递给全局数组。

即使在display()函数的情况下,你传递一个数组并在display()函数中使用其他一些数组 您应该使用公共数组来传达值。你可以在全局范围内创建一个数组,并在所有函数中使用它,或者在main()中创建一个数组,并将指针传递给其他函数,并在其他函数中使用相同的数组。学习how to pass arrays between functions and use arrays

答案 2 :(得分:0)

您的功能看起来很错误:

  1. int myNumbers(int userPick[]) // 1. userPick is not used anywhere
    {
    
    int i;
    int numbers;               // 2. initialize this variable to 1 first 
    int input[NUMS];
    printf ("Please enter your lucky numbers\n");
    
    for (i=0;i<NUMS;i++)
    {
        scanf("%d",&input[i]);                
    }//end for loop
    numbers = *(input+i);     // 3. is this suppose to be inside the loop ?
    
    return (numbers);
    }//end function myNumbers
    
  2. 并在

    void displayNums(int print[])//implement function
    {
        int i;
        int output;
        int numbers[NUMS];
        output = myNumbers(numbers);
        printf("Your numbers are %d \n",output);
    }//end function displayNums
    

    您不使用print,而是创建新数组numbers

答案 3 :(得分:0)

您的大部分代码都是错误的。它不会编译。这是一些示例代码。使用它来实现其余的

#include <stdio.h>
#define NUMS 6

void displayNums(int nums[])
{
    int i;
    printf("Your numbers are:\n");
    for(i = 0; i < NUMS; i++)
        printf("%d ", nums[i]);
    printf("\n");
}

void myNumbers(int nums[])
{
    printf("Please Enter your lucky numbers\n");
    int i;
    for(i = 0; i < NUMS; i++)
        scanf("%d", &nums[i]);
}

int main()
{
    int numbers[6];
    myNumbers(numbers);
    displaynums(numbers);

    //do the rest of the stuff here

    return 0;
}

通过C教程可能会有所帮助?查看http://c.learncodethehardway.org/book/,了解该语言的简介。