C++ 代码,用户先输入元素个数n(n>2),然后依次输入这n个整数,输出其中最大和第二大数
时间: 2023-06-08 16:03:50 浏览: 283
好的,我可以回答这个问题。请参考下面的 C 代码:
```c
#include <stdio.h>
int main() {
int n, max = 0, secondMax = 0, num;
printf("请输入元素个数:");
scanf("%d", &n);
printf("请依次输入这 %d 个整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &num);
if (num > max) {
secondMax = max;
max = num;
} else if (num > secondMax && num != max) {
secondMax = num;
}
}
printf("最大数是:%d\n", max);
printf("第二大数是:%d\n", secondMax);
return 0;
}
```
这个程序会先让用户输入元素个数 n,然后会逐个读入这 n 个整数,并找出其中的最大值和第二大值。最后输出这两个值。
相关问题
使用c++ 指针完成元素次序 描述 输入一组数据,依次输出每个元素在升序排序后的次序,输入数据保证每个输入数据都是唯一的。 输入 第一行输入一个整数正整数N,第二行输入N个不相同的整数,每个数不超过整型范围。 输出 依次输出每个数的排名。
好的,我来给你提供一个用C++指针实现的代码。这里我使用动态分配的数组来存储输入的数据,代码如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int *nums = new int[n];
for(int i = 0; i < n; i++)
{
cin >> nums[i];
}
int *sorted_nums = new int[n];
copy(nums, nums + n, sorted_nums);
sort(sorted_nums, sorted_nums + n);
for(int i = 0; i < n; i++)
{
int *pos = find(sorted_nums, sorted_nums + n, nums[i]);
cout << distance(sorted_nums, pos) + 1 << endl;
}
delete[] nums;
delete[] sorted_nums;
return 0;
}
```
这段代码会先读入一个整数N,然后动态分配一个大小为N的数组nums,将输入的N个不同的整数存入数组nums中。接着,动态分配一个大小为N的数组sorted_nums,将nums中的元素复制一份存入sorted_nums中,并对sorted_nums进行升序排序。最后,遍历nums中的每个元素,使用find函数在sorted_nums中查找该元素,并使用distance函数计算该元素在sorted_nums中的下标加1,即为该元素的排名。最后别忘了释放动态分配的数组内存。
使用c++写 二叉排序树 依次给出n(O<n<100000)个整数,请你以这n个数创建一棵二叉排序树,这棵排序树的根节点为第一个数,并输出其中序遍历和后序遍历。 输入说明 共两行,第一行为整数n,第二行为n个整数 输出说明 共两行,第一行为中序遍历,第二行为后序遍历 的代码
在 C++ 中,我们可以使用递归的方式来构建二叉搜索树并进行中序和后序遍历。下面是一个简单的二叉搜索树(BST)节点结构以及相关的函数实现:
```cpp
#include <iostream>
using namespace std;
// 二叉搜索树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 插入一个元素到二叉搜索树
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (root == NULL) {
return new TreeNode(val);
}
if (val < root->val) {
root->left = insertIntoBST(root->left, val);
} else {
root->right = insertIntoBST(root->right, val);
}
return root;
}
// 中序遍历
void inorderTraversal(TreeNode* node, string& res) {
if (node != NULL) {
inorderTraversal(node->left, res);
res += to_string(node->val) + " ";
inorderTraversal(node->right, res);
}
}
// 后序遍历
void postorderTraversal(TreeNode* node, string& res) {
if (node != NULL) {
postorderTraversal(node->left, res);
postorderTraversal(node->right, res);
res += to_string(node->val) + " ";
}
}
int main() {
int n;
cin >> n; // 输入整数个数
int arr[n];
for (int i = 0; i < n; ++i) {
cin >> arr[i]; // 输入数组元素
}
TreeNode* root = insertIntoBST(NULL, arr[0]); // 构建二叉搜索树
string inOrderRes, postOrderRes;
inorderTraversal(root, inOrderRes); // 中序遍历
cout << "中序遍历结果:" << inOrderRes << endl;
postorderTraversal(root, postOrderRes); // 后序遍历
cout << "后序遍历结果:" << postOrderRes << endl;
return 0;
}
```
这个程序首先读取输入的整数个数和数值,然后构造一个二叉搜索树。接着,分别进行中序遍历和后序遍历并将结果存入字符串`inOrderRes`和`postOrderRes`。最后输出这两个遍历的结果。
阅读全文