首页 > 其他分享 >数组练习题(一)

数组练习题(一)

时间:2024-07-06 10:57:35浏览次数:17  
标签:练习题 const cout totalSalary int 数组 && include

1.     (销售人员薪金范围)解决以下问题。一家公司以底薪加提成的方式付给销售人员工资。销售人员每周获得200美元的底薪,外加本周达到一定销售额的9%的提成。例如,一个销售人员一周的销售额是5000美元,就会得到200美元加上5000美元的9%,即总共650美元。请编写一个程序(利用一个计数器的array对象),判断有多少销售人员可以获得以下范围内的报酬(假设每个销售人员的报酬都将取整)。
         a)200~299美元
         b)300~399美元
         c)400~499美元
         d)500~599美元
         e)600~699美元
         f)700~799美元
         g)800~899美元
         h)900~999美元
         i)1000美元及以上

#include <iostream>
#include<vector>
using namespace std;


int main()
{
	const int baseSalary = 200;//基本工资
	const double rate = 0.09;//提成比例


	int staffnumber;
	cout << "请输入员工数" << endl;
	cin >> staffnumber;

	//获取每位员工的营业额
	vector <int> sales(staffnumber);//vector可用于动态输入,而一维数组大小必须为常量值
	cout << "请输入每位员工的营业额" << endl;
	for (int i = 0; i < staffnumber; ++i)
	{
		cin >> sales[i];
	}

	// 统计落入每个报酬范围的销售人员数量
	vector<int> salaryCount(9, 0); // 分别对应a)到i)的范围

	for (int i = 0; i < staffnumber; ++i) {
		int sale = sales[i];
		double commission = sale * rate;
		int totalSalary = baseSalary + static_cast<int>(commission);

		// 将总收入放入相应的范围计数器中
		if (totalSalary >= 200 && totalSalary <= 299) {
			salaryCount[0]++;
		}
		else if (totalSalary >= 300 && totalSalary <= 399) {
			salaryCount[1]++;
		}
		else if (totalSalary >= 400 && totalSalary <= 499) {
			salaryCount[2]++;
		}
		else if (totalSalary >= 500 && totalSalary <= 599) {
			salaryCount[3]++;
		}
		else if (totalSalary >= 600 && totalSalary <= 699) {
			salaryCount[4]++;
		}
		else if (totalSalary >= 700 && totalSalary <= 799) {
			salaryCount[5]++;
		}
		else if (totalSalary >= 800 && totalSalary <= 899) {
			salaryCount[6]++;
		}
		else if (totalSalary >= 900 && totalSalary <= 999) {
			salaryCount[7]++;
		}
		else if (totalSalary >= 1000) {
			salaryCount[8]++;
		}
	}

	// 输出每个范围内的销售人员数量
	cout << "200~299美元: " << salaryCount[0] << " 人" << endl;
	cout << "300~399美元: " << salaryCount[1] << " 人" << endl;
	cout << "400~499美元: " << salaryCount[2] << " 人" << endl;
	cout << "500~599美元: " << salaryCount[3] << " 人" << endl;
	cout << "600~699美元: " << salaryCount[4] << " 人" << endl;
	cout << "700~799美元: " << salaryCount[5] << " 人" << endl;
	cout << "800~899美元: " << salaryCount[6] << " 人" << endl;
	cout << "900~999美元: " << salaryCount[7] << " 人" << endl;
	cout << "1000美元及以上: " << salaryCount[8] << " 人" << endl;

	return 0;
}

2.     (利用array对象去重)利用一个一维array对象解决以下问题。读入20个数,每个数在10~100之间(包括10和100)。在读入每个数时,确认这个数的有效性,并且若它和之前读入的数不一样,就把它存储到array对象中。读完所有的数之后,仅显示用户输入的不同的数值。假设“最糟糕的情况”是这20个数都不相同。请尽量用最小的array对象解决这个问题。

#include <iostream>
using namespace std;
int main()
{
	const int size = 20;
	const int Min_Value = 10;
	const int Max_Value = 100;


	int currentIndex = 0;//当前位置的索引
	int array[size];//创建数组

	cout << "请输入10~100的有效数字" << endl;

	for (int i = 0; i < size; ++i)
	{
		int num;
		cin >> num;

		//检查有效性
		if (num < 10 || num>100) {
			cout << "输入的数值不在有效范围内,请重新输入。" << endl;
			--i;  // 重新尝试读取同一个位置
			continue;
		}

		//检查是否相同
		bool alreadyExists = false;
		for (int j = 0; j < currentIndex; ++j) {
			if (array[j] == num) {
				alreadyExists = true;
				break;
			}
		}

		// 如果数值不重复,则存储到数组中
		if (!alreadyExists) {
			array[currentIndex] = num;
			currentIndex++;
		}
	}


	cout << "您输入的不同的数值为:" << endl;
	for (int i = 0; i < currentIndex; ++i) {
		cout << array[i] << " ";
	}
	cout << endl;

	return 0;

	

}

(掷双骰)编写一个程序,模拟掷两个骰子,然后计算两个骰子值的和。注意:由于每个骰子显示1~6之间的一个整数值,因此这两个值的和在2~12之间变动,其中7是出现频率最高的值,而2和12是出现频率最低的值。两个骰子值共36种可能的组合。程序应该掷这两个骰子36000次。请利用一个一维array对象记录每个可能的和出现的次数。以表格的形式打印结果。同时,判定这些次数的统计值是否合理(也就是说,有6种方式可以掷到7,因此所有掷出的和值中,大约有1/6应该是7)。

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

const int POSSIBLE_SUMS = 13;  // 因为和的范围是2到12,共有11种可能的和
const int ROLLS = 36000;       // 掷骰子的总次数

int main() {
	int dice1, dice2;
	int sum;
	int frequencies[POSSIBLE_SUMS] = { 0 };

	// 设置随机种子
	srand(time(0));

	// 掷骰子并统计结果
	for (int i = 0; i < ROLLS; ++i) {
		dice1 = rand() % 6 + 1;  // 生成1到6之间的随机数
		dice2 = rand() % 6 + 1;  // 生成1到6之间的随机数
		sum = dice1 + dice2;
		frequencies[sum]++;
	}

	// 打印表头
	cout << setw(10) << "Sum" << setw(15) << "Frequency" << setw(18) << "Expected Probability" << endl;
	cout << "----------------------------------------------" << endl;

	// 打印每个和值的统计结果和理论概率
	for (int i = 2; i <= 12; ++i) {
		double expected_prob = static_cast<double>(frequencies[i]) / ROLLS;

		cout << setw(10) << i << setw(15) << frequencies[i] << setw(18) << expected_prob << endl;
	}

}

标签:练习题,const,cout,totalSalary,int,数组,&&,include
From: https://blog.csdn.net/haishicd/article/details/140184150

相关文章

  • 深入理解数组及其操作
    前言数组(Array)是一种线性数据结构,用于存储相同类型的元素。它在编程中广泛使用,因其简单性和高效的随机访问特性而受欢迎。本文将详细介绍数组的概念、基本操作及其在C语言中的实现。数组的基本概念数组是一组有序的元素集合,每个元素通过数组名和一个索引进行访问。数组的索......
  • 语法基础——字符、字符串与字符数组
    字符、字符串和字符数组2024-07-0520:52:00星期五字符串和字符数组的区别和联系字符串和字符数组在C语言中是紧密相关的概念,但它们之间存在一些区别和联系。定义与表示:字符串在C语言中并没有专门的类型,而是通过字符数组来表示。字符数组可以用来存储一个字符串,其中字......
  • 【力扣】每日一题—第88题,合并两个有序数组
    目录题目暴力求解思路:通过代码:拓展学习:最终代码如下:题目给你两个按**非递减顺序**排列的整数数组`nums1`和`nums2`,另有两个整数`m`和`n`,分别表示`nums1`和`nums2`中的元素数目。请你**合并**`nums2`到`nums1`中,使合并后的数组同样按**非递减顺序*......
  • C++基础知识持续更新,今天来记录结构体的基本知识,包括结构体的定义和使用,结构体数组,结
    C++结构体C++基础知识持续更新,今天来记录结构体的基本知识,包括结构体的定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体中的const的使用场景,以及结构体的案例。1.结构体的定义和使用结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。......
  • 搜索旋转数组
    题目链接搜索旋转数组题目描述注意点数组已被旋转过很多次数组元素原先是按升序排列的若有多个相同元素,返回索引值最小的一个解答思路首先需要知道的是,本题数组中的旋转多次只是将头部的某些元素移动到尾部,所以不论怎么旋转,数组都是有一定顺序的,最差的情况是分为两......
  • 算法:递归数组求和
    递归数组求和给定一个数组,求所有元素的和算法思想:传入数组和下标,如果下标越界就返回0,否则返回当前值和下一个值的和,递归操作。Java实现:publicclassMain{ publicstaticintfunc(int[]array,intindex){ if(index>array.length-1){ return0; }el......
  • Day2 |977.有序数组的平方& 209.长度最小的子数组&59.螺旋矩阵II
    977.有序数组的平方这题太简单了,中间的排序我用的选择排序贴代码了publicint[]sortedSquares(int[]nums){for(inti=0;i<nums.length;i++){nums[i]=nums[i]*nums[i];}for(inti=0;i<nums.length;i++){......
  • 【34. 在排序数组中查找元素的第一个和最后一个位置】
    题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你必须设计并实现时间复杂度为O(logn)的算法解决此问题。示例1:输入:nums=[5,7,7,8,8,10],t......
  • 代码随想录刷题day 2 | 977.有序数组的平方、 209.长度最小的子数组、 59.螺旋矩阵II
    977.有序数组的平方classSolution{publicint[]sortedSquares(int[]nums){int[]ans=newint[nums.length];intleft=0,right=nums.length-1;for(inti=nums.length-1;i>=0;i--){if(nums[right]*nums[righ......
  • 数据库MyBatis传递数组或集合
    应用场景假设你有两个表,一个是商品信息表(表1,例如商品类别信息),另一个是库存信息表(表2,记录每种商品的库存数量)。你想知道特定几个商品类别(通过其ID标识,这里是1、2、3)的所有商品的总库存量。这个查询就会非常有用,它不仅能够跨表根据商品类别ID筛选出相关商品,还能计算出这些商......