南京理工大学 程序设计基础(Ⅰ) SPOC | 学校专有课程 编程作业 第6章作业1

南京理工大学 程序设计基础(Ⅰ) 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;
}

今天工图考得崩溃~~
不知道拼多多上面能不能拼到工图大佬~
工图真的好难啊~~!

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值