对于这个程序,我想从用户那里获得一个电视频道的输入,这将是
int tv[] = {2, 4, 5, 6, 8};
我想提示用户输入他们想要的电视频道,因此scanf
电视频道 4 将是 array index [1]
。如何将扫描的电视频道 (4) 与等于 [1] 的数组索引的新变量匹配?
对于这个程序,我想从用户那里获得一个电视频道的输入,这将是
int tv[] = {2, 4, 5, 6, 8};
我想提示用户输入他们想要的电视频道,因此scanf
电视频道 4 将是 array index [1]
。如何将扫描的电视频道 (4) 与等于 [1] 的数组索引的新变量匹配?
从用户那里读取频道号,并循环遍历数组以找到该频道号所在的位置。
做一个简单的线性搜索,其中元素(这里是通道号)在数组中顺序搜索
int channelnumber,arrayindex;
printf("\n Enter the channel number");
scanf("%d",&channelnumber)
for(i=0;i<5;i++)
{
if(tv[i]==channelnumber)
{
arrayindex=i;
break;
}
}
我相信这个问题是一个简单的搜索案例。如果通道不按顺序排列,您可能可以进行线性搜索,或者使用二进制搜索逻辑来查找通道。如果您也不想这样,请使用散列概念。但这会增加数组的大小,但它可以帮助您非常轻松地找到元素。
希望能回答你的问题......
每次在数组中搜索可能会很昂贵(在我看来,如果您有一个大数组)另一种解决方案可能是您可以拥有另一个数组,它将您映射到正确的索引
例如,
int tv[] = {2, 4, 5, 6, 8};
int mapping[]={-1,-1,0,-1,1,2,3,-1,-1,4};
tv[mapping[channelNumber]]//getting the actual value
这会占用更多空间,但可以提高性能