在循环和函数中使用用户输入
using a user input in a loop and function
我的程序接受用户输入,int n
,并打印出前n
数量的质数。这正在按预期工作
例如,如果用户输入8
为n,程序将打印:
2 3 5 7 11 13 17 19
我的问题是添加函数isPrime(n)
(不允许更改(
这是我尝试过的,但我只是得到输出:
2 3 5 7 11 13 17 19 0 is not a prime number,
当它应该读2 3 5 7 11 13 17 19 8
不是质数
#include "prime.h"
#include <iostream>
int main()
{
int n;
std::cout << "Enter a natural number: ";
std::cin >> n;
for (int i = 2; n > 0; ++i)
{
bool Prime = true;
for (int j = 2; j < i; ++j)
{
if (i % j == 0)
{
Prime = false;
break;
}
}
if (Prime)
{
--n;
std::cout << i << " ";
}
}
if (isPrime(n))
{
std::cout << n << " is a prime number." << std::endl;
}
else
{
std::cout << n << " is not a prime number." << std::endl;
}
system("pause");
}
质数:
#ifndef PRIME_H_RBH300111
#define PRIME_H_RBH300111
bool isPrime(int);
#endif
#pragma once
isPrime(int)
的定义
质数.cpp :
#include <cmath>
#include "prime.h"
bool isPrime(int n)
{
if (n < 2)
{
return false;
}
else if (n == 2)
{
return true;
}
else if ((n % 2) == 0)
{
return false;
}
}
我无法更改prime.cpp
的.h
文件我只需要isPrime(n)
函数来处理main()
函数代码用户输入 n,似乎没有取数字8
。而是0
给我输出。 0
不是质数而不是:n (8)
不是质数
你在循环中递减n
。循环退出时,n
的值为 0
。
您可以通过以下方式解决问题:
- 在循环中使用另一个变量。
- 保留
n
的副本,并在循环退出后重置n
的值。
这是第二种方法:
int copyN = n;
for (int i = 2; n > 0; ++i)
{
...
}
n = copyN;
if (isPrime(n))
...
你在 for 循环中递减 n。 for 循环的条件为"n> 0",因此当循环结束时,您知道 n 不是> 0。 您可以将 n 的值保存在不同的变量中(即"int nOrig = n;"(并将其用于素数测试,或者在循环中使用不同的变量。
相关文章:
- C++如何通过用户输入删除列表元素
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 打印时有二叉树问题.用户输入不打印任何内容
- C ++奇怪的数组由用户输入
- 如何允许大写和小写用户输入?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 如何使用用户输入变量制作二维数组?
- 用户输入字符串的文件附加问题..C++
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?