繁体   English   中英

如何检查用户输入的数字是否为N = 4k + 1,如果不是,则要求在C中重复输入

[英]How to check if the user input is a number N=4k+1 and if not, to ask for a repeated input in C

标题有点la脚,但这是解释:

我想检查用户输入(整数)是否采用这种形式-> N = 4k +1(数字1、5、9、13等),如果输入的不是这些数字之一,我想一直要求用户输入数字,直到正确为止。

我试图这样做:

我做了一个循环,检查N-1是否可以除以2,如果是,则为我的N。但是,它当然不起作用。 N-1应该是偶数(如果输入了正确的N),那么是否有办法以某种方式检查该数字,以及是否不停地循环“输入数字”部分呢?

int N, k;
    printf("Enter a number: ");
    scanf("%d", &N)
    k=(N-1);

     /* checking */
     while (k%2 != 0)
     {
        printf("Enter a number: ");
        scanf("%d", &N);
     }

此代码的问题在于,当您输入正确的数字时,它可以正常工作;但是,当您输入错误的数字时,BUT仍然可以正常工作;但是在输入正确的数字之后,它会继续循环“输入数字”部分。 如何解决这个问题?

将提示和检查置于同一循环中。

#include <stdio.h>
#include <stdlib.h>

int main (int args, char** argv) {
    int N, k;

    k = 1;  // this is here just to get the loop going,

    while (k%2 != 0) {
        printf("Enter a number: ");
        scanf("%d", &N);
        k=(N-1);
    }

    return 0;
}

但是,我想指出的是,您的测试不正确; 被2整除的所有数字的一半将不是所陈述任务的正确答案。 我只修复了循环; 不是逻辑。 (关于修正数学有一些好的评论;请注意它们。)

我添加了关于k = 1;的目的的注释k = 1; 线。 如前所述,它可以防止while()循环立即退出。 我想您很想从N来计算k ,这通常是您想要做 ,但是您可以提供一个“伪” k以便在提供任何输入之前k可以作为循环条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM