我需要使用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]);
}
}
答案 0 :(得分:3)
您没有正确调用该功能。你拥有它的方式,你只是提供函数的声明,而不是实际调用它们。 你想在打电话时打电话给他们
error = check_error(size);
除了void函数之外,没有返回值存储在变量中。 变化
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