南京理工大学 程序设计基础(Ⅰ) SPOC | 学校专有课程 编程作业 第6章作业1
第一题:最大值(100分)
问题描述: 先输入一个正整数n(1到20之间),再输入n个整数,计算其中的最大值和相应下标。
输入描述:
先输入要处理的整数的个数n(1<=n<=20),再输入n个整数,并用空格分开。
输出描述 :
依次输出n个整数中的最大值和相应下标(若多个整数与最大值相同,则从小到大输出相应下标),之间用空格分隔。
输入样例1
5
4 6 7 2 5
输出样例1
7 2
输入样例2
5
4 6 7 2 7
输出样例2
7 2 4
#include<iostream>
using namespace std;
int main() {
int n, arr[20];
cin >> n;
if (n >= 1 && n <= 20) {
//输入数组的容量
for (int i = 0; i < n; i++) {
int num;
cin >> num;
arr[i] = num;
}
//寻找最大值
int maxIndex = 0, maxValue = arr[0];
for (int j = 0; j < n; j++) {
if (arr[j] > maxValue) {
maxValue = arr[j];
maxIndex = j;
}
}
//统计最大数及最大数出现的次数
int indexArr[20], pb = 0;
for (int k = 0; k < n; k++) {
if (arr[k] == maxValue) {
indexArr[pb++] = k;
}
}
//输出答案
cout << maxValue << " ";
for (int m = 0; m < pb - 1; m++) {
cout << indexArr[m] << " ";
}
cout << indexArr[pb - 1];
}
return 0;
}
第二题:峰值个数(100分)
问题描述:
先输入一个正整数n(3到20之间),再输入n个整数,计算其中的峰值个数。峰值是满足大于或小于左右两个元素的元素,例如12,45,32,0,14,25,62,48,51序列中,峰值有45,0,62,48,峰值个数为4。
输入描述:
先输入要处理的整数的个数n(3<=n<=20),再输入n个整数,并用空格分开。
输出描述:
一个整数,表示n个整数中有多少个峰值。
输入样例:
5
4 6 7 2 5
输出样例 :
2
#include<iostream>
using namespace std;
//判断middleNum是不是所谓的“峰值数”
bool myCompare(int frontNum, int middleNum, int endNum) {
if ((frontNum > middleNum && endNum > middleNum) || (frontNum < middleNum && endNum < middleNum)) {
return true;
}
return false;
}
int main() {
int n, arr[20], num = 0;//num用于记录“峰值数”出现的次数
cin >> n;
if (n >= 3 && n <= 20) {
for (int i = 0; i < n; i++) {
int a;
cin >> a;
arr[i] = a;
}
for (int j = 1; j < n - 1; j++) {
if (myCompare(arr[j - 1], arr[j], arr[j + 1])) num++;
}
cout << num;
}
return 0;
}
第三题:互为相反数(100分)
问题描述:
先输入一个正整数n(2到20之间),再输入n个数(可重复,可为浮点数),计算其中有多少对互为相反数(仅有符号不同的两数互为相反数)。
输入描述:
先输入要处理的整数的个数n(2<=n<=20),再输入n个数,并用空格分开。
输出描述:
一个整数,表示n个数中有多少对互为相反数。
输入样例1
5
-4 6 2 4 -2输出样例1
2
输入样例2
5
12.4 -12.4 5.7 -12.4 -5.7
输出样例2
3
#include<iostream>
using namespace std;
int main() {
int n, num;//num用于记录相反数出现的对数
float arr[20];
cin >> n;
if (n >= 2 && n <= 20) {
for (int i = 0; i < n; i++) {
float a;
cin >> a;
arr[i] = a;
}
//类似冒泡排序的思想
for (int j = 0; j < n - 1; j++) {
for (int k = j + 1; k < n; k++) {
if (arr[j] + arr[k] == 0) num++;
}
}
cout << num;
}
return 0;
}
今天工图考得崩溃~~
不知道拼多多上面能不能拼到工图大佬~
工图真的好难啊~~!