是/否用户提示使用getchar()

时间:2013-01-31 01:51:33

标签: c loops getchar

我为一个程序编写了我的代码,该程序找到了1到2000之间任何整数的素因子和不同的素因子。但是,现在我需要编写代码来循环程序并向用户询问另一个数字,直到用户我想停下来它看起来如下:

你想尝试另一个号码吗?说Y(es)或N(o):y //然后它会要求1到2000之间的数字,程序将运行。

你想尝试另一个号码吗?说Y(es)或N(o):n ---> “感谢您使用我的节目。再见!:

我曾尝试为此编写代码,但正如您所看到的那样,我最终陷入了代替代码的问题。我不知道如何循环它,所以程序将再次重复。这是我唯一觉得自己被困住的事情。我觉得我的代码下面这个问题是正确的,它只需要循环我不确定如何做的程序。希望你能帮忙。

int main()  {
  unsigned num;
  char response;

  printf("Please enter a positive integer greater than 1 and less than 2000:");
  scanf("%d", &num);
  if (num > 1 && num < 2000){
    printf("The distinctive prime facters are given below: \n");
    printDistinctPrimeFactors(num);
    printf("All of the prime factors are given below: \n");
    printPrimeFactors(num);
  }
  else {
    printf("Sorry that number does not fall within the given range.\n");
  }
  printf("Do you want to try another number? Say Y(es) or N(o): \n");
  response = getchar();
  if(response == 'Y' || answer == 'y')
  //then loop back through program
  //else print "Good Bye!"
  }
  return 0;
}

3 个答案:

答案 0 :(得分:1)

您希望在代码周围添加do {...} while(condition)。条件是response =='y' || response =='Y'。打印'再见',当你离开循环和你的好。像这样:

int main() {
    char response;
    do {
        //your code
    } while(response =='y' || response =='Y');
    printf("Goodbye");
    return 0;
}

这与常规while循环不同,因为它会在循环体首次运行后检查条件。

答案 1 :(得分:0)

基本思想是这样的:

char response = 'y';
do {
    workSomeMagic();
    response = getNextInput();
while ((response == 'y') || (response == 'Y'));

显然,workSomeMagic()getNextInput()需要充实,但它们与手头的问题无关,即在某个条件成立时如何进行循环。

workSomeMagic()基本上是您的数字输入和素数因子计算,而getNextInput()则从用户检索字符。

我会谨慎使用getchar(),因为如果输入“y”,您将在输入流和换行符中同时获得y<newline>将导致下一次迭代退出。

最好使用基于行的输入函数,例如找到here的优秀函数。

答案 2 :(得分:0)

int main()  
{
char response = 'y';
do {

 /*
  your 
  code
  here
*/
printf("Do you want to try another number? Say Y(es) or N(o): \n");
response = getch();

} while ((response == 'y') || (response == 'Y'));
 printf("Goodbye");
 return 0;
}