在下面的true
函数中,我尝试使用main()
在数组中打印值。
age_index()
的参数是数组的索引。
我希望它在该索引处打印数组值。
这是我的尝试:
age_index()
有什么建议吗?
答案 0 :(得分:2)
您的问题属于
enum
您允许数组的索引从if (age < 7 && age >= 0)
到0
,而您的数组索引必须介于6
和0
之间。
您应该使用5
来避免此类问题
sizeof
通过这种方式,即使您将来更改它的大小,也始终会检查数字当前大小的年龄。
此外,正如您在代码中看到的那样,您可以使用以下命令初始化数组:
void age_index(size_t age) {
int ages[] = {23, 33, 18, 121, 30, 66};
if ((age >= 0) && (age < sizeof(ages)/sizeof(ages[0]))) {
printf("you are [%d] years old!\n", ages[age]);
} else {
printf("Sorry, did not choose 0-%zu\n", sizeof(ages)/sizeof(ages[0]));
}
}
答案 1 :(得分:1)
由于数组的大小为“6”。数组索引的范围应为0到5.您需要相应地更改if条件。
if(age >= 0 && age < 6)
而不是使用像这样的硬编码值。您可以通过以下方式选择使用sizeof()
运算符:
int numOfElements = sizeof(array)/sizeof(array[0]);
if(age >= 0 && age < numOfElements)
{
....
....
}
或者您可以定义一个指示数组大小的宏,如下所示:
#include <stdio.h>
#define MAX_LEN 6
.
.
.
int main(void)
{
....
....
}
if(age >= 0 && age < MAX_LEN)
{
....
....
}
答案 2 :(得分:0)
更改您的if
条件:
if (age < 7 && age >= 0)
到:
if (age < 6 && age >= 0)
您的Index
数组的大小为6
,因此其索引从0
开始,到5
结束。如果您输入的数字x
大于5
,您的程序将尝试访问元素Index[x]
,这将超出数组范围。
此外,您的问题无法编译。将第一行更改为:
#include <stdio.h>
并将分号添加到为Index
元素指定值的所有语句中。