接受用户输入,搜索其范围值位于数组中的位置并返回2d数组的行索引

时间:2016-07-01 20:03:04

标签: c for-loop multidimensional-array

这是我列出的可用速度的二维阵列。这个代码我必须保留。如果我的用户输入75349作为时钟速度输入,我将如何识别该速度并返回行索引的值?...这是第2行int 2d数组,因为它介于7500- 14900之间

int UserClockSpeedInput;

const uint32 SpeedTable[5][2] {
{15000, 99990}, //between 15k - 99.99k
{7500, 14900}, //between 7.5k - 14.9k
{3500,7400},
{1900,3400},
{6000,1800}
}

我想返回用户输入的任何值的行索引, 这些是我已经设定的设定值。他们不允许输入任何其他值

for(i=0;i<5;i++)
{
    for(j=0;j<2;j++)
    { 

 //not sure of what to do from here.

2 个答案:

答案 0 :(得分:0)

  

我将如何识别该速度并返回行索引的值

解决方案:

您可以使用以下for循环

来实现它
    int number; //variable to hold user's input

    //scanning user's input
    printf("enter any number : ");
    scanf("%d",&number); 

    //for loop to determine position
    for (int index = 0; index < 5; index++)
    {
        if( (number >= SpeedTable[i][0]) && (number <= SpeedTable[i][1]) )
        {
            break;
        }
    }

    //printing index
    printf("return index value : %d ",i);

建议:

首先,

  • 我认为 2-D 数组的最后一个元素不能是{6000,1800}
  • 我认为必须改为{600,1800}

  • 请勿使用void main()。要知道原因,请看:click
  • 而是使用int main(void)。要知道原因,请看:click

所以你的代码总是:

#include <stdio.h>

int main(void){

    const unit32 SpeedTable[5][2] = {
        {15000, 99990}, //between 15k - 99.99k
        {7500, 14900}, //between 7.5k - 14.9k
        {3500,7400},
        {1900,3400},
        {600,1800} //between 0.6k - 1.8k
    };

    int number;

    printf("enter any number : ");
    scanf("%d",&number);

    int i;

    for (i = 0; i < 5; i++)
    {
        if( (number >= SpeedTable[i][0]) && (number <= SpeedTable[i][1]) )
        {
            break;
        }
    }

    printf("return index value : %d ",i);

}

答案 1 :(得分:-1)

您希望根据数组中提供的上限和下限检查输入。您应该检查输入是否大于第1个元素,并且小于第2个元素。

#include <stdio.h>

void main(){
    const int SpeedTable[5][2] = {
        {15000, 99990}, //between 15k - 99.99k
        {7500, 14900}, //between 7.5k - 14.9k
        {3500,7400},
        {1900,3400},
        {6000,1800}
    };

    int user_input = 7534;

    int i;

    for (i = 0; i < sizeof(SpeedTable)/ (2 * sizeof(int)); i++){
        if (SpeedTable[i][0] < user_input && SpeedTable[i][1] > user_input){
            break;
        }
    }

    printf("%d\n", i);
}