C-Void函数不会执行

时间:2018-02-26 03:45:00

标签: c arrays void

我需要使用0到50之间的输入在数组中打印一组随机数,以确定要打印的随机数。一切似乎都在起作用,但虚函数似乎没有执行,使数组保留全部0值。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

int check_error();
void initialize_array();
void print_array();

int main(void){
        int list[50];   //initializing arrays
        int size,error; //initializing size

        printf("Enter the size of an input");
        scanf("%d",&size);
        error = check_error(size);
        while(error == 0){
                printf("Invalid input enter the size of the input: ");
                scanf("%d",&size);
                error = check_error(size);
                }
        void initialize_array(int list[], int size);

        printf("%d",list[2]);

        void print_array(int list[], int size);

        printf("\n\nDONE %d",list[0]);

        return 0;
        }


int check_error(int input){
        if(input < 1 || input > 50)
                return 0;
        else
                return 1;
        }

void initialize_array(int list[],int listSize){
        int i;
        for(i=0;i<=listSize;++i){
                list[i] = (rand()%10);
                }
         }


void print_array(int array1[],int arraySize){
        int i;
        for(i=0;i<=arraySize;++i){
                printf("%d, ",array1[i]);
                }
        }

2 个答案:

答案 0 :(得分:3)

您没有正确调用该功能。你拥有它的方式,你只是提供函数的声明,而不是实际调用它们。  你想在打电话时打电话给他们

error = check_error(size);

除了v​​oid函数之外,没有返回值存储在变量中。  变化

void initialize_array(int list[], int size);

initialize_array(list, size);

void print_array(int list[], int size);

print_array(list, size);

答案 1 :(得分:0)

  

一切似乎都在起作用,但是void函数似乎没有执行,只留下数组中的所有0值。

代码存在一些问题。

1)函数原型未正确声明:

int check_error();
void initialize_array();
void print_array();

函数声明必须包含返回值和参数类型:

int check_error(int input);                  
void initialize_array(int list[],int listSize);
void print_array(int array1[],int arraySize);

2)未正确调用数组函数:

//void initialize_array(int list[], int size); // this is the function declaration
initialize_array(list, size);                  // this is the function call

//...
//void print_array(int list[], int size);     // this is the function declaration
print_array(list, size);                      // this is the function call

3)在代码中打印list[0]list[2]。如果输入小于3,则list[2]不包含生成的值。

4)您可以考虑为随机发生器播种。

srand (time(NULL));

否则,list将始终获得相同的数字。

修改后的代码:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

// function declarations have to contain return value and type of the parameters
int check_error(int input);                  
void initialize_array(int list[],int listSize);
void print_array(int array1[],int arraySize);

int main(void){
    int list[50];   //initializing arrays
    int size,error; //initializing size

    //srand (time(NULL));   // consider seeding the random generator

    printf("Enter the size of an input: \n");
    scanf("%d",&size);

    error = check_error(size);           // OK!

    while(error == 0){
            printf("Invalid input enter the size of the input: \n");
            scanf("%d",&size);
            error = check_error(size);
    }

    //void initialize_array(int list[], int size); // this is the function declaration
    initialize_array(list, size);                  // this is the function call

    printf("list[2]= %d\n",list[2]);

    //void print_array(int list[], int size);     // this is the function declaration
    print_array(list, size);                      // this is the function call

    printf("\n\nDONE: list[0]= %d\n",list[0]);

    return 0;
}

int check_error(int input){
    if(input < 3 || input > 50)   // since you print list[2] input should be 3 
        return 0;
    else
        return 1;
}

void initialize_array(int list[],int listSize){
    int i;
    for(i=0;i<listSize;++i){                  //  style: in the loop typically we use < not <= operator 
        list[i] = (rand()%10);
    }
}

void print_array(int array1[],int arraySize){
    int i;
    printf("List: ");
    for(i=0;i<arraySize;++i){
        printf("%d, ",array1[i]);
    }
}

输出:

3
Enter the size of an input: 
list[2]= 7
List: 3, 6, 7, 

DONE: list[0]= 3

4
Enter the size of an input: 
list[2]= 7
List: 3, 6, 7, 5, 

DONE: list[0]= 3