Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将输入与数组索引匹配?_C - Fatal编程技术网

C 如何将输入与数组索引匹配?

C 如何将输入与数组索引匹配?,c,C,对于这个节目,我想从用户那里获得一个电视频道的输入,这将是 int tv[] = {2, 4, 5, 6, 8}; 我想提示用户输入他们想要的电视频道,因此电视频道4的scanfindex[1]。如何将扫描的电视频道(4)与一个新变量相匹配,该变量将等于[1]的数组索引?从用户处读取频道号,并在数组中循环查找该频道号所在的位置。执行简单的线性搜索,在数组中按顺序搜索元素(此处为频道号) int channelnumber,arrayindex; printf("\n Enter the cha

对于这个节目,我想从用户那里获得一个电视频道的输入,这将是

int tv[] = {2, 4, 5, 6, 8};

我想提示用户输入他们想要的电视频道,因此电视频道4的scanf
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 channelnumber,数组索引;
printf(“\n输入频道号”);
scanf(“%d”、&channelnumber)

对于(i=0;i我相信这个问题是一个简单的搜索案例。如果通道不有序,你可能可以进行线性搜索,或者使用二进制搜索逻辑来查找通道。如果你也不想这样做,那么就使用散列概念。但这会增加数组的大小,但有助于你很容易找到元素y


<>希望你回答问题…..(p/>< p>)更容易的方法是使用一些数组来搜索数组。如果你的数组是“强”>“巨大/ <强”,那么你可能会想一个叫做“AS”的C++容器。如果你创建一个映射,那么你就可以在O(1)中提到你所说的关联。(在我看来,如果你有一个大数组)另一个解决方案是,你可以有另一个数组,它可以将你映射到正确的索引

比如说,

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

这将占用额外的空间,但可以提高性能

您是在说使用枚举之类的东西吗?似乎您想要使用关联数组。