我正在使用C ++上的一小段代码,我设法要求用户输入要运行的序列的期望数量,如下例所示:
#include <stdio.h>
#include <iostream>
int main()
{
int x = 0;
int y = 1;
int i = 0;
int num = 0;
printf("How many times you want the sequence to run: \n");
scanf ("%d",&num);
for (i=0;i<num;i++)
{
printf ("%d \n",x);
x = x + y;
y = x - y;
}
getchar ();
return 0;
}
我的问题是如何使它返回询问用户是否要运行其他序列或只是退出应用程序。我知道使用While或do While可以在其中创建循环,但是我不确定在代码中的何处添加循环。 感谢您的任何反馈
答案 0 :(得分:2)
我没有使用上面建议的无限while循环,而是有一个do-while循环来检查用户输入。看起来像这样:
#include <stdio.h>
#include <iostream>
int main()
{
char input;
do{
int x = 0;
int y = 1;
int i = 0;
int num = 0;
printf("How many times you want the sequence to run: \n");
scanf ("%d",&num);
for (i=0;i<num;i++)
{
printf ("%d \n",x);
x = x + y;
y = x - y;
}
printf("Press R to run another sequence or any other key to quit.\n");
scanf ("%c",&input);
}while(input == 'r');
return 0;
}
您应该尝试避免代码中的无限while循环,对于斐波那契数,递归函数要好得多,并且是针对此类应用程序而设计的。
答案 1 :(得分:0)
您可以将代码包装到while
循环中。
一种解决方案:
while(1)
{
int x = 0;
int y = 1;
int i = 0;
int num = 0;
printf("How many times you want the sequence to run: \n");
printf("To quit input any character that isn't a number \n");
if (scanf ("%d",&num) != 1) break; // Stop if the user doesn't input a valid number
for (i=0;i<num;i++)
{
printf ("%d \n",x);
x = x + y;
y = x - y;
}
}
答案 2 :(得分:0)
使用提供的一些反馈可以解决问题;这是代码
#include <stdio.h>
#include <iostream>
int main()
{
char input;
do{
int x = 0;
int y = 1;
int i = 0;
int num = 0;
printf("How many times you want the sequence to run: \n");
scanf ("%d",&num);
for (i=0;i<num;i++)
{
printf ("%d \n",x);
x = x + y;
y = x - y;
}
printf("Press R to run another sequence or any other key to quit.\n");
scanf (" %c",&input);
}
while(input == 'r');
return 0;
}
使用scanf (" %c", &input);
能够读取声明的变量char input;
,以使do
和while
循环在代码中起作用。