如何直接在C中使用负值,空格和换行符输 入二维数组

问题描述 投票:0回答:2

我想用C直接输入一个二维数组,仅用单个空格和换行符分隔。同时,我还想验证用户是否输入了有效的一位整数(正数或负数)。我尝试了以下方法。

int A[3][3];
    int i,j;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            scanf("%d",&A[i][j]);
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            printf("%d ",A[i][j]);
        printf("\n");
    }

但是我想要两件事:-1.首先验证其输入是否为一位整数的输入。2.不仅适用于正整数和0,而且不适用于负整数。

例如如下输入将被接受并存储在二维数组中

1 2 -3 4-5 1 2 -61 1 2 3

c multidimensional-array hourglass
2个回答
0
投票

所以首先,告诉用户输入值row-wisecolumn-wise。在这种情况下,请这样询问

printf("Enter integers row-wise");

现在,用户将输入值。

扫描这些值之后,请输入if语句以验证值是否小于0大于0或等于0。如果值在continue;范围内,则请输入exit(1);语句并告知用户输入了值不正确。像这样:

for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            scanf("%d",&A[i][j]);
        if(A[i][j] <= 0 || A[i][j] > 0)
            continue;
        else
        {
            printf("Enter correct values.\n");
            exit(1);
        }
    }

0
投票

如果要验证数字是一个数字,只需检查数字是否在-9到9之间。

对于负数,我很确定%dscanf修饰符可以捕获到它。

如果答案不正确,请在下面留言,我可以解决它:)

Edit:我忘了注意scanf返回读取元素的数量。因此将其与1比较(因为您一次读取一个元素)将使您知道输入是否为部分输入。像这样的东西:

if (scanf(" %d", %A[i][j]) != 1){ 
   //here goes the code for when the input is partial
}

应该做的把戏

© www.soinside.com 2019 - 2024. All rights reserved.