gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:44:54 25 4
gpt4 key购买 nike

标题有点蹩脚,但解释如下:

我想检查用户输入(整数)是否采用这种形式 --> 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);
}

这段代码的问题是,当您输入正确的数字时,它工作正常,但是当您输入错误的数字,然后输入正确的数字时,它会不断循环“输入数字”部分。如何解决这个问题?

最佳答案

将提示和检查放在同一个循环中。

#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; 行用途的注释。如前所述,它的作用是防止 while() 循环立即退出。我认为您一直在从 N 计算 k 上,这就是您通常想要做的事情,但是您可以提供一个“假” "k 以便在提供任何输入之前 k 可以充当循环条件。

关于c - 如何检查用户输入是否是数字N=4k+1,如果不是,则要求在C中重复输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53354641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com