C 允许用户在输入错误选项后再次尝试输入
我有一些生成一组随机数的代码。之后,它会询问用户是否希望生成另一组随机数。我遇到的问题是,我希望用户只输入y表示是,或输入n表示否,如果他们没有将这些输入到选项中,请告诉他们这是无效的输入,然后重试。我不知道怎么做。代码如下:C 允许用户在输入错误选项后再次尝试输入,c,C,我有一些生成一组随机数的代码。之后,它会询问用户是否希望生成另一组随机数。我遇到的问题是,我希望用户只输入y表示是,或输入n表示否,如果他们没有将这些输入到选项中,请告诉他们这是无效的输入,然后重试。我不知道怎么做。代码如下: // C program for generating a // random number in a given range. #include <stdio.h> #include <stdlib.h> #include <string.
// C program for generating a
// random number in a given range.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// Generates and prints 'count' random
// numbers in range [lower, upper].
void printRandoms(int lower, int upper,
int count) {
int i;
printf("\nGenerated Numbers:\n");
for (i = 0; i < count; i++) {
int num = (rand() %
(upper - lower + 1)) + lower;
printf("%d ", num);
}
}
int main() {
int lower, upper, count;
char c='y';
do {
printf("Minimum number size:\n");
scanf("%d", &lower);
printf("\nMaximum number size:\n");
scanf("%d", &upper);
printf("\nAmount of numbers to be generated:\n");
scanf("%d", &count);
// Use current time as
// seed for random generator
srand(time(0));
printRandoms(lower, upper, count);
printf("\n\nGenerate new set? (y/n)\n");
scanf(" %c",&c);
printf("\n");
if (c=='n'){
exit(0);
}
do {
printf("Please enter valid input!\n");
scanf(" %c", &c);
if (c=='n'){
exit(0);
}
} while (c!='y'||c!='n');
} while(c=='y');
return 0;
}
//用于生成
//给定范围内的随机数。
#包括
#包括
#包括
#包括
//随机生成并打印“计数”
//范围内的数字[下,上]。
无效打印随机数(整数下限、整数上限、,
整数计数){
int i;
printf(“\n生成的数字:\n”);
对于(i=0;i
任何帮助都将不胜感激。这回答了您的问题,但另一方面,我通常喜欢将条件放在第一个问题中,因此如果用户输入零,则应用程序将退出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// Generates and prints 'count' random
// numbers in range [lower, upper].
void printRandoms(int lower, int upper,
int count) {
int i;
printf("\nGenerated Numbers:\n");
for (i = 0; i < count; i++) {
int num = (rand() %
(upper - lower + 1)) + lower;
printf("%d ", num);
}
}
int main() {
int lower, upper, count;
char c='y';
do {
printf("Minimum number size: ");
scanf("%d", &lower);
printf("\nMaximum number size: ");
scanf("%d", &upper);
printf("\nAmount of numbers to be generated: ");
scanf("%d", &count);
// Use current time as
// seed for random generator
srand(time(0));
printRandoms(lower, upper, count);
printf("\n\nGenerate new set? (y/n)\n");
do {
printf("\t\t==> ");
scanf(" %c", &c);
c &= 0x5f; // convert to uppercase
if (c=='N') exit(0);
} while (c != 'Y');
} while (1);
return 0;
}
#包括
#包括
#包括
#包括
//随机生成并打印“计数”
//范围内的数字[下,上]。
无效打印随机数(整数下限、整数上限、,
整数计数){
int i;
printf(“\n生成的数字:\n”);
对于(i=0;i”;
scanf(“%c”、&c);
c&=0x5f;//转换为大写
如果(c=='N')退出(0);
}而(c!=“Y”);
}而(1),;
返回0;
}
除非检查返回,否则无法正确使用任何输入功能。尤其是使用scanf
时,必须检查EOF
是否小于请求的转换次数,以指示匹配或输入失败。在下一次输入之前,您必须从输入流中进一步清空导致匹配失败的任何违规字符,否则,导致失败的字符将保持未读状态,只是等待在下一次尝试输入时再次咬您。和