用 C++编写一个程序.输入多个正整数.确定和打印其中最大的两个数(按从大到小顺序)输入数据的第一个数为数的个数)
时间: 2023-07-16 14:13:05 浏览: 100
以下是使用C++编写的程序,实现输入多个正整数并确定打印其中最大的两个数:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
int n;
std::cout << "请输入数的个数:";
std::cin >> n;
std::vector<int> nums(n);
std::cout << "请输入 " << n << " 个正整数:" << std::endl;
for (int i = 0; i < n; ++i)
std::cin >> nums[i];
std::sort(nums.begin(), nums.end(), std::greater<int>());
std::cout << "最大的两个数为:" << nums[0] << " " << nums[1] << std::endl;
return 0;
}
```
程序首先要求用户输入数的个数n,并创建一个长度为n的vector存储输入的正整数。接着程序使用for循环读取n个正整数,并将其存入vector中。
然后,程序使用sort函数对vector进行排序(从大到小),并打印出前两个元素即为最大的两个数。
注意,这里假设用户输入的都是正整数,如果需要做异常处理或者输入不规范的情况,还需要对程序进行修改。
相关问题
请编写程序创建一个有向图。有向图中包含n个顶点,编号为0至n-1。 输入格式: 输入第一行为两个正整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过20000。接下来e行表示每条边的信息,每行为3个非负整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。 输出格式: 按顶点编号递增顺序输出每个顶点引出的边,每个顶点占一行,若某顶点没有引出边,则不输出。每行表示一个顶点引出的所有边,格式为a:(a,b,w)……,表示有向边a->b的权值为w,a引出的多条边按编号b的递增序排列。C++要求尽可能简单
以下是一个简单的C++程序,用于创建有向图并输出每个顶点引出的边:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 20000;
struct Edge {
int to;
int weight;
Edge(int t, int w) : to(t), weight(w) {}
};
vector<Edge> edges[MAXN];
int n, e;
int main() {
cin >> n >> e;
for (int i = 0; i < e; i++) {
int a, b, c;
cin >> a >> b >> c;
edges[a].push_back(Edge(b, c));
}
for (int i = 0; i < n; i++) {
if (edges[i].size() == 0) {
continue;
}
cout << i << ":";
for (int j = 0; j < edges[i].size(); j++) {
cout << "(" << i << "," << edges[i][j].to << "," << edges[i][j].weight << ")";
}
cout << endl;
}
return 0;
}
```
该程序使用一个 vector 数组 edges 存储每个顶点引出的边。输入时,按照题目要求读入每条边的信息并将其加入对应顶点的 edges 数组中。输出时,按照顶点编号递增顺序遍历 edges 数组,对每个非空向量(即该顶点有引出的边)输出该顶点引出的所有边。
使用C++,将一个正整数N进行分解,使得N为多个正整数相加,穷举N的所有分解式。例如:7=6+1,7=5+2,7=5+1+1,... 。是用递归的方式求出正整数N的所有整数分解因子。(1)输入说明:输入小于30的正整数N (2)输出说明:列出N=?+?+…。按递增顺序输出N的所有整数分解式子。递增顺序是指:对于两个分解序列N1={n1,n2,…}和N2={m1,m2,…},若存在i使得n1=m1, … , ni=mi,但是ni+1<mi+1,则n1序列必定在n2序列输出。每个式子由小到大相加,式子间用分号隔开,且每输出4个式子后换行。
以下是使用C语言编写的程序,可以对小于30的正整数N进行分解,输出所有的分解式子:
#include <stdio.h>
void print_partition(int n, int max, int* partition, int len) {
if (n == 0) {
for (int i = 0; i < len; i++) {
printf("%d", partition[i]);
if (i < len - 1) {
printf(" ");
}
}
printf("; ");
if (len % 4 == 0) {
printf("\n");
}
return;
}
for (int i = 1; i <= max && i <= n; i++) {
partition[len] = i;
print_partition(n - i, i, partition, len + 1);
}
}
int main() {
int n;
scanf("%d", &n);
int partition[30];
print_partition(n, n, partition, 0);
return 0;
}
注意:这个程序使用递归的方式求出正整数N的所有整数分解因子,时间复杂度为指数级别,对于较大的N可能会运行很长时间。
阅读全文