首页 > 其他分享 >学习日记---第三天

学习日记---第三天

时间:2024-11-17 18:44:14浏览次数:3  
标签:arr int 第三天 --- 二维 取整 数组 铅笔 日记

今天被头歌上面的python题难住了,一题写了两个半小时,也许是坤坤在发力吧...

笔记复习

1.利用sizeof确定数据类型的大小,即所占的字节

语法:

sizeof(变量名)

示例:

int arr [] = { 4,2,8,0,5,7,1,3,9 };
a=sizeof(arr)/sizeof(arr[0]);
//sizeof(arr)用于计算整个数组的大小,sizeof(arr[0])用于计算数组中第0个元素的大小

2.冒泡排序

a.比较相邻元素,如果第一个比第二个大,就交换他们两个
b.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值
c.重复以上步骤,每次比较次数-1,直到不需要比较
如此操作之后元素将按升序排列

冒泡排序的原理与昨天数组中元素的逆置原理相同,区别在于多了两个关键点:

a.排序的轮数

b.排序的次数

分析:

可以发现,当数组元素个数为4时,我们需要比较3轮,其中第一轮比较3次,第二轮比较2次,第三轮比较1次。

这里可以得出一个结论:

冒泡排序中比较轮数==数组元素个数-1

每轮比较次数==数组元素个数-排序轮数-1  ps:这里的排序轮数指的是第一轮记为0,同数组元素的索引

示例:

#include<iostream>
using namespace std;

int main() {
	int arr [] = { 4,2,8,0,5,7,1,3,9 };
	cout << "排序前:" << endl;
	for (int i = 0; i <= 8; i++) {
		cout << arr[i];
	}
	cout << endl;
for (int k = 0; k < sizeof(arr)/sizeof(arr[0]) - 1; k++) {//利用这种形式表示数组元素个数更具有普遍性
	for (int j = 0; j < 9 - k - 1; j++) {
		if (arr[j] > arr[j + 1]) {
			int temp = arr[j];
			arr[j] = arr[j + 1];
			arr[j + 1] = temp;
		}
	}

}
cout << "排序后:" << endl;
for (int i = 0; i < 9; i++) {
	cout << arr[i]<<" ";
}
cout << endl;
return 0;
}

3.二维数组

二维数组就是在一维数组的基础上多加一个维度,一维数组只有行,二维数组是行+列

二维数组的定义与一维数组类似,共有四种,如下:

#include<iostream>
using namespace std;

int main() {
	//第一种
	int arr[2][3];
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[0][2] = 3;
	arr[1][0] = 4;
	arr[1][1] = 5;
	arr[1][2] = 6;
	//-----------------------
	//第二种
	int arr2[2][3] = { {1,2,3},{4,5,6} };
	//-----------------------
	//第三种
	int arr3[2][3] = { 1,2,3,4,5,6 };
	//------------------------
	//第四种(省略行数,由编译器计算行数)
	int arr4[][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 3; j++) {
			cout << arr4[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}
//一般在实操时使用第二种定义方式

输出二位数组中的每个元素可用for循环嵌套

4.二维数组数组名

与一维数组数组名相同,二维数组数组名也有两个用途:

a.查看二维数组所占内存空间

b.获取二维数组的首地址

#include<iostream>
using namespace std;

int main() {
	int arr[2][3] = { {1,2,3},{1,2,3} };
//对于这个数组来说,1,2,3为第一行,1,1为第一列
	cout << "二维数组第一行所占内存为:" << sizeof(arr[0]) << endl;
//使用arr[0]可以表示二维数组的第一行
//注:使用arr[][0]是无法表示数组的第一列的,要想输出数组的特定列,需要使用for循环,输出每一行的第n列元素
	return 0;
}

二维数组应用案例:考试成绩统计

//二维数组应用案例:考试成绩统计  
#include<iostream>
using namespace std;

int main() {
	int arr[3][3] = { {100,100,100},{90,50,80},{60,70,80} };
	string name[3] = { "张三","李四","王五" };
	for (int i = 0; i <= 2; i++) {
		int sum = 0;
		for (int j = 0; j <= 2; j++) {
			sum += arr[i][j];
			cout << arr[i][j] << " ";
		}
		cout << name[i]<<"的总分为:"<<sum << endl;
	}
	return 0;
}

精选好题

1.题目

P 老师需要去商店买 nn 支铅笔作为小朋友们参加 NOIP 的礼物。她发现商店一共有 33 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P 老师决定只买同一种包装的铅笔。

商店不允许将铅笔的包装拆开,因此 P 老师可能需要购买超过 nn 支铅笔才够给小朋友们发礼物。

现在 P 老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 nn 支铅笔最少需要花费多少钱。

输入格式

第一行包含一个正整数 nn,表示需要的铅笔数量。

接下来三行,每行用 22 个正整数描述一种包装的铅笔:其中第 11 个整数表示这种包装内铅笔的数量,第 22 个整数表示这种包装的价格。

保证所有的 77 个数都是不超过 1000010000 的正整数。

输出格式

1 个整数,表示 P 老师最少需要花费的钱。

输入输出样例

 2.学到的点:

1.c++中整数的计算结果仍是整数,如果是小数则会向下取整

2.c++中小数类型的定义有两种,一种是float,一种是double,相比于float,double能够存储更多位小数,因此一般用double

3.cmath头文件

包含大量数学函数和常量如自然对数、圆周率,以及向下取整和向上取整计算

向上取整:

ceil(3 / 2)

向下取整:

floor(3/2)

ps:不使用math库也可以实现向上取整的操作,具体做法是用if函数比较结果和结果取整后的大小,如果结果比取整后的结果小,那么加1即可;如果相等则不需要操作;由于int转换将小数转化为整数是向下取整,因此不需要考虑结果比取整后的结果小的情况。

答案:

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

int main() {
	double arr[7];
	for (int i = 0; i < 7; i++) {
		cin >> arr[i];
	}
	int brr[3];
	int a = ceil(arr[0] / arr[1]);
	int b = ceil(arr[0] / arr[3]);
	int c = ceil(arr[0] / arr[5]);
	brr[0] = a * arr[2];
	brr[1] = b * arr[4];
	brr[2] = c * arr[6];
	long long min = 1000000000;
	for (int j = 0; j < 3; j++) {
		if (min > brr[j]) {
			min = brr[j];
		}
	}
	cout << min << endl;
	return 0;
}

标签:arr,int,第三天,---,二维,取整,数组,铅笔,日记
From: https://blog.csdn.net/wlyyywwq/article/details/143784024

相关文章

  • 学习日记---第2天
    笔记复习1.数组数据是一个集合,里面存放了相同类型的元素定义方法有三种:a.数据类型数组名[数组长度];arr[元素位置]=值;b.数据类型数组名[数组长度]={值1,值2...};c.数据类型数组名[]={值1,值2...}示例://第一种#include<iostream>usingnamespacestd;intmain()......
  • 双非本 大一的蓝桥杯c++组备赛日记----普通人的极限在哪里?
    本文创作灵感:从开学到现在,刷到许许多多的让人热血沸腾、心生向往的视频,大都是MIT精致生活,清北狂人此类的。刷多之后心中躁动,跃跃欲试,可又知自己能力有限,面对神仙般的人物只能望其项背,每日累得吐血,但成效低微,心中茫然不已。又恰逢手贱误删文件,导致重新装了一遍vs。本人之前看的......
  • 20222323 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    1.实验内容(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置(2)尝试获取BBS、论坛、QQ、MSN中某一好友的IP地址,并查询获取该好友所在的具体......
  • 学期2024-2025-1 学号20241317 《计算机基础与程序设计》第八周学习总结
    学期2024-2025-1学号20241317《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上具体......
  • 赣CTF-Misc方向wp
    checkin下载附件,一张图片,拖进010,在文件尾看到隐藏文本,提取并用社会主义价值解密ez_forensics提示为结合题目进行想象,我们会想到取证第一步vc挂载,但是需要密码,研究图片,lsb隐写,在row:G通道找到密钥挂载,得到flag真的是base64哦考点base64隐写点击查看代码importbase64......
  • 【原创】PREEMPT-RT 系统cpu使用率周期飙高问题
    PREEMPT-RT系统某些应用场景syscpu使用率周期CPU飙高问题目录PREEMPT-RT系统某些应用场景syscpu使用率周期CPU飙高问题背景现象复现条件原因解决措施背景在22年进行PREEMPT-RT系统问题的调试时,之前文章在CPU性能优化小记-使用火焰图定位性能问题只是定位解决了其中一个问题,还......
  • 2024-2025-1 20241403 《计算机基础与程序设计》第八周学习总结
    学期(如2024-2025-1)学号(如:20241403)《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第八周作业)这个作业的目标功能......
  • request to https://registry.npm.taobao.org/ant-design-vue failed, reason: ce
     一、原因分析其实早在2021年,淘宝就发文称,npm淘宝镜像已经从http://registry.npm.taobao.org切换到了http://registry.npmmirror.com。旧域名也将于2022年5月31日停止服务(直到HTTPS证书到期才真正不能用了)2024年1月22日,淘宝原镜像域名(http:/......
  • 7-Zip 和 WinRAR 的对比分析,按不同的特性进行表格化:
    7-Zip和WinRAR的对比分析,按不同的特性进行表格化:特性7-ZipWinRAR开发公司7-Zip由IgorPavlov开发WinRAR由RARLab开发支持的格式支持7z,ZIP,RAR,TAR,GZ,ISO等支持RAR,ZIP,TAR,GZ,ISO等压缩比率通常提供更高的压缩比率(尤其是7z格式)......
  • C++入门基础知识151—【关于C++ ++ 和 -- 运算符重载】
    成长路上不孤单......