C++ 循环 运行 直到我输入正确的值
C++ loop that run until i enter correct values
这是一个计算二项式系数的程序。不,当我输入 k 值时 > n 程序崩溃 s.But 我想知道当我输入 k> n 程序时如何才能让我返回输入正确的新值 (n>k) .当我输入正确的值 (n>k) 时程序停止。
#include<stdio.h>
#include <iostream>
using namespace std;
int binomialCoeff(int n, int k)
{
// Base Cases
if (k==0 || k==n)
return 1;
else
return binomialCoeff(n-1, k-1) + binomialCoeff(n-1, k);
}
int main()
{
int n,k;
cin >>n;
cin>>k;
printf("Value of C(%d, %d) is %d ", n, k, binomialCoeff(n, k));
return 0;
}
也许用 do while 循环?
像这样:
do {
cin >>n;
cin>>k;
}while(n>k);
但是这个循环不起作用。
是这样的吗?
int main()
{
int n, k;
do {
printf("Enter n and k values: ");
cin >> n >> k;
} while (n < k);
printf("Value of C(%d, %d) is %d ", n, k, binomialCoeff(n, k));
return 0;
}
但是,如果 (n < k)
,binomialCoeff()
不应该 return 0
吗?
int binomialCoeff(int n, int k)
{
if (k == 0 || k == n)
return 1;
else if (n < k)
return 0;
else
return binomialCoeff(n - 1, k - 1) + binomialCoeff(n - 1, k);
}
如果您想捕获非整数的输入,请尝试以下操作:
#include <limits>
...
int main()
{
int n, k;
while (!(cin >> n) || !(cin >> k) || (n < k)) {
cout << "inavlid input! try again" << endl;
/* clear failbit */
cin.clear();
/* discard invalid input */
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
printf("Value of C(%d, %d) is %d\n", n, k, binomialCoeff(n, k));
return 0;
}
这是一个计算二项式系数的程序。不,当我输入 k 值时 > n 程序崩溃 s.But 我想知道当我输入 k> n 程序时如何才能让我返回输入正确的新值 (n>k) .当我输入正确的值 (n>k) 时程序停止。
#include<stdio.h>
#include <iostream>
using namespace std;
int binomialCoeff(int n, int k)
{
// Base Cases
if (k==0 || k==n)
return 1;
else
return binomialCoeff(n-1, k-1) + binomialCoeff(n-1, k);
}
int main()
{
int n,k;
cin >>n;
cin>>k;
printf("Value of C(%d, %d) is %d ", n, k, binomialCoeff(n, k));
return 0;
}
也许用 do while 循环? 像这样:
do {
cin >>n;
cin>>k;
}while(n>k);
但是这个循环不起作用。
是这样的吗?
int main()
{
int n, k;
do {
printf("Enter n and k values: ");
cin >> n >> k;
} while (n < k);
printf("Value of C(%d, %d) is %d ", n, k, binomialCoeff(n, k));
return 0;
}
但是,如果 (n < k)
,binomialCoeff()
不应该 return 0
吗?
int binomialCoeff(int n, int k)
{
if (k == 0 || k == n)
return 1;
else if (n < k)
return 0;
else
return binomialCoeff(n - 1, k - 1) + binomialCoeff(n - 1, k);
}
如果您想捕获非整数的输入,请尝试以下操作:
#include <limits>
...
int main()
{
int n, k;
while (!(cin >> n) || !(cin >> k) || (n < k)) {
cout << "inavlid input! try again" << endl;
/* clear failbit */
cin.clear();
/* discard invalid input */
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
printf("Value of C(%d, %d) is %d\n", n, k, binomialCoeff(n, k));
return 0;
}