0

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

你想试试其他号码吗?Say Y(es) or 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;
}
4

3 回答 3

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 循环不同,因为它在第一次运行循环体后检查条件。

于 2013-01-31T01:59:01.790 回答
0

基本思想是这样的:

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

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

workSomeMagic()基本上是您的数字输入和素数计算,同时getNextInput()从用户那里检索一个字符。

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

最好使用基于行的输入功能,例如此处的优秀功能。

于 2013-01-31T01:57:43.960 回答
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;
}
于 2014-03-04T05:55:24.123 回答