所以这是我需要完成的工作:
我没有我的号码。目前设置为4的元素,但是无论我设置多少,最后其中大约一半都作为垃圾值出现。
我假设这是与指针相关的问题或某处的内存泄漏,我不确定。任何输入将不胜感激
int num_of_elements = 4;
//function declarations
int* check_num(int i, int number[num_of_elements]);
//main function
int main() {
//local variables
int num[5];
int i;
printf("\nEnter a number that ends with 0");
for (i=0;i<num_of_elements;i++) {
do {
printf("\n%d.Enter a number: ", i+1);
scanf("%d", &num[i]);
} while (num[i] % 10 != 0);
printf("\nElement %d: %d\n", i+1, num[i]);
}
int j = 0;
while (j<num_of_elements) {
check_num(j, &num[j]);
j++;
}
return 0;
}
//function that takes the square root and checks if it's an odd or even number
int* check_num(int j, int number[num_of_elements]) {
int val;
printf("\nnumber[%d] is %d",j,number[j]);
val = sqrt(number[j]);
printf("\nsquare root is is %d", val);
if (val % 2 == 0) {
printf("\n%d is a an even number squared", number[j]);
} else {
printf("\n%d is an odd number squared", number[j]);
}
printf("\n");
return number;
}
对于我所看到的,这只是一个错误:必须将对check_num的调用从check_num(j, &num[j]);
更改为check_num(j, &num);
,否则您将传递例如地址num [j],并且您正试图从该地址访问j元素,因此您试图访问j + j元素