用c++编程读入1 个正整数 n(n 例:括号内是说明 输入 1 输出 1 输入 10 输出 3628800 输入 5 输出 120 输入 15 输出 1307674368000
时间: 2024-09-24 20:04:04 浏览: 86
在C++中,你可以使用`cin`(标准输入流)来读取用户输入的正整数n,并通过循环计算阶乘。阶乘是一个数学运算,表示从1乘到给定的数的所有整数的积。例如,5的阶乘(5!)就是5 * 4 * 3 * 2 * 1。
这是一个简单的程序示例,展示了如何实现这个功能:
```cpp
#include <iostream>
// 定义阶乘函数
long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
int main() {
int n;
std::cout << "请输入一个正整数:";
std::cin >> n;
// 检查输入是否有效(正整数)
if (std::cin.fail()) {
std::cerr << "无效输入!" << std::endl;
return 1;
}
// 计算并输出阶乘结果
long long result = factorial(n);
std::cout << "输入 " << n << " 的阶乘是:" << result << std::endl;
return 0;
}
```
当你运行这个程序,用户会被提示输入一个正整数,然后程序会计算并输出其阶乘。
相关问题
7-1 单向链表2 分数 25 作者 wangxiu 单位 福州大学 编程实现:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n(0<n<=9)和一组(n个)整数,建立一个单向链表,再输入一个整数 x,将链表中最后一个与x相等的整数删除。 输入输出示例:括号内为说明 输入样例: 3 (repeat=3) 5 (数据的个数n=5) 1 2 4 3 7 (5个整数) 4 (待删除整数x=4) 5 (数据的个数n=5) 2 1 5 7 5 (5个整数) 5 (待删除整数x=5) 3 (数据的个数n=3) 1 2 4 (3个整数) 100 (待删除整数x=100) 输出样例: size=4:1 2 3 7 size=4:2 1 5 7 size=3:1 2 4
下面是符合要求的 C++ 代码:
```c++
#include <iostream>
using namespace std;
struct Node {
int val;
Node* next;
Node(int x) : val(x), next(NULL) {}
};
Node* createList(int n) { // 创建链表
Node* head = new Node(0);
Node* cur = head;
for (int i = 0; i < n; ++i) {
int x;
cin >> x;
Node* node = new Node(x);
cur->next = node;
cur = node;
}
return head->next;
}
Node* deleteNode(Node* head, int x) { // 删除节点
Node* dummy = new Node(0);
dummy->next = head;
Node* prev = dummy;
Node* cur = head;
while (cur) {
if (cur->val == x) {
prev->next = cur->next;
delete cur;
return dummy->next;
}
prev = cur;
cur = cur->next;
}
return dummy->next;
}
void printList(Node* head) { // 输出链表
int cnt = 0;
while (head) {
if (cnt > 0) cout << " ";
cout << head->val;
head = head->next;
++cnt;
}
cout << endl;
cout << "size=" << cnt << ":";
}
int main() {
int repeat;
cin >> repeat;
while (repeat--) {
int n, x;
cin >> n;
Node* head = createList(n);
cin >> x;
head = deleteNode(head, x);
printList(head);
}
return 0;
}
```
这个程序先读入 repeat,表示有 repeat 组数据需要处理。每组数据首先读入 n,然后调用 createList 函数创建链表。接着读入 x,调用 deleteNode 函数删除链表中最后一个与 x 相等的节点。最后调用 printList 函数输出链表。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 编写程序,输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。 若输入月份错误,输出提示信息。 输入输出示例:括号内为说明,无需输入输出 输入样例: 3 (repeat=3) 5 9 14 输出样例: May September Wrong input!
下面是实现以上功能的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int repeat;
cin >> repeat;
char* month[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
while (repeat--) {
int m;
cin >> m;
if (m < 1 || m > 12) {
cout << "Wrong input!" << endl;
} else {
cout << month[m-1] << endl;
}
}
return 0;
}
```
程序中首先定义了一个指针数组 month 来保存月份的英文名称,然后在循环中读入用户输入的月份数字 m,进行判断。如果 m 不在 1 到 12 的范围内,输出提示信息;否则输出对应月份的英文名称。
注意,在每次循环中都需要重新定义变量 m,以便接收新的输入。同时,指针数组 month 的作用域应该在循环外部,以免重复定义浪费空间。
阅读全文