[英]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.