在C中的数组中强制执行范围

时间:2014-03-16 05:48:19

标签: c arrays if-statement range

快速,可能是超级基本问题。如果我声明一个10个双精度数组并提示用户在索引中输入他们想要的双倍数(显然在1到10之间),我将如何强制执行该范围?我假设使用if / else语句,但是有更强的方法来强制执行该范围吗?

同样,可能非常简单。我是新手,所以还不熟悉C ++或JavaScript。

3 个答案:

答案 0 :(得分:1)

得到那个没有。用户的元素直到没有。不在你的范围内。

假设n是您想要的范围1到10的数字。

<强>解决方案:

int n = 0;
while(n<1 || n>10)    {
    printf("Enter Correct value on n i.e. within range 1 to 10:\t");
    scanf("%d", &n);
}

答案 1 :(得分:1)

如果使用%(modulo)运算符将值包装在所需范围内,则可能是另一种解决方案。

int n;
int arr[10];
printf("Enter a number : ");
scanf("%d",&n);
printf("%d",arr[n%10]);

表达式n%10将始终产生0到9之间的值。

编辑(为了更好的验证):

#include<stdio.h>
main()
{
    int x, n;
    int arr[]={0,1,2,3,4,5,6,7,8,9,10,11,12};
    printf("Enter a number : ");
    if( scanf("%d",&n)!=1 )
    {
        printf("Not a valid integer!!");
        return;
    }
    n=(n<0)?-n:n;
    printf("%d",arr[n%10]);
}

答案 2 :(得分:0)

首先你应该阅读documentation,因为这是一个非常基本的例子。

其次避免在这里请求代码。您应该始终尝试找到解决方案,然后在此处发布您的代码和错误以更正它。

你可以试试这个:

#include<stdio.h>

int main(){
    int n = 0;
    while(!(n > 1 && n < 10)){
        printf("Enter an integer between 1 and 10: \n");
        scanf("%d", &n);
    }
}