C语言第二页笔记

31.数组大小必须是整数常量,不可以是变量。
32.冒泡排序的本质在于交换,即每次通过交换的方式把当前剩余元素的最大值移动到一端,而当
剩余元素减少为0时,排序结束。
33.现有一个数组a,其中有5个元素,分别为a[0]=3、a[1]=4、a[2]=1、a[3]=5、a[4]=2,要求
把它们按从小到大的顺序排列。
第一趟
(1)a[0]与a[1]比较,此时序列为{3,4,1,5,2}
(2)a[1]与a[2]比较,此时序列为{3,1,4,5,2}
(3)a[2]与a[3]比较,此时序列为{3,1,4,5,2}
(4)a[3]与a[4]比较,此时序列为{3,1,4,2,5}
第二趟
(1)a[0]与a[1]比较,此时序列为{1,3,4,2,5}
(2)a[1]与a[2]比较,此时序列为{1,3,4,2,5}
(3)a[2]与a[3]比较,此时序列为{1,3,2,4,5}
第三趟
(1)a[0]与a[1]比较,此时序列为{1,3,2,4,5}
(2)a[1]与a[2]比较,此时序列为{1,2,3,4,5}
第四趟
(1)a[0]与a[1]比较,此时序列为{1,2,3,4,5}
代码:
for(int i=1;i<=4;i++)
	{
		for(int j=0;j<5-i;j++){
			if(a[j]>a[j+1]){
				int temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
34.如果数组大小较大(大概10^6级别),则需要将其定义在主函数外面,否则会使程序异常退出,
原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来
自静态存储区,允许申请的空间较大。
35.一般来说,给数组中每一个元素赋相同的值有两种方法:memset函数和fill函数。memset函
数的格式为:memset(数组名,值,sizeof(数组名));使用此函数时需要在程序开头添加
string.h头文件。此函数使用的是按字节赋值,即对每个字节赋同样的值,这样组成int型的4个
字节就会被赋成相同的值。
36.gets用来输入一行字符串(gets识别换行符\n作为输入结束),并将其存放在数组中;puts用
来输出一行字符串,即将数组在界面上输出,并紧跟一个换行。
37.在一维字符数组(或二维字符数组的第二维)的末尾都有一个空字符\0,以表示存放的字符串的
结尾。空字符\0在使用gets或scanf输入字符串时会自动添加在输入的字符串后面,并占用一个字
符位,而puts与printf就是通过识别\0作为字符串的结尾来输出的。所以在定义字符数组长度的
时候一定要记得比实际存储字符串的长度至少多1.
38.strlen()函数可以得到字符数组中的第一个\0前的字符的个数,其格式如下:strlen(字符数
组).
39.strcmp函数返回两个字符串大小的比较结果,比较原则是按字典序,其格式如下:strcmp(字
符数组1,字符数组2).例如”a”的字典序小于”b”、”aaaa”的字典序小于”aab”.strcmp的返回结果
如下:
(1)如果字符数组1<字符数组2,则返回一个负整数
(2)如果字符数组==字符数组2,则返回0
(3)如果字符数组1>字符数组2,则返回一个正整数
40.strcpy函数可以把一个字符串复制给另一个字符串,其格式如下:strcpy(字符数组1,字符
数组2).是把字符数组2复制给字符数组1,这里的复制包括了结束符\041.strcat()可以把一个字符串接到另一个字符串后面,其格式如下:strcat(字符数组1,字符数
组2).是把字符数组2接到字符数组1后面。
42.sscanf可以理解为string+scanf,sprintf则可以理解为string+printf.假设定义了一个
char数组str[100],如下所示:sscanf(str,%d”,&n);sprintf(str,%d”,n);
#include <stdio.h>
int main()
{
	int n;
	char str[100]="123";
	sscanf(str,"%d",&n);
	printf("%d\n",n);
	return 0;
 } 
#include <stdio.h>
int main()
{
	int n=233;
	char str[100];
	sprintf(str,"%d",n);
	printf("%s\n",str);
	return 0;
}
43.对于计算机来说,main函数返回0的意义在于告知系统程序正常终止。
44.数组作为参数时,在函数中对数组元素的修改就等同于是对原数组元素的修改。
45.递归是函数自己调用自己的过程。
46.只要在变量前面加上&,就表示变量的地址。而计算机就是通过地址找到某个变量的。
47.指针是一个unsigned类型的整数。指针变量用来存放指针(或者可以理解成地址),它在某种数
据类型后星号*来表示这是一个指针变量。
48.给指针变量赋值的方式一般是把变量的地址取出来,然后赋给对应类型的指针变量。
49.p+1是指p所指的int型变量的下一个int型变量的下一个int型变量地址。指针变量支持自增和
自减操作。
50.在C语言中,数组名称也作为数组得到首地址使用。
51.两个int型的指针相减,等价于在求两个指针之间相差了几个int.
52.指针类型也可以作为函数参数的类型,这时视为把变量的地址传入函数。如果在函数中对这个
地址中的元素进行改变,原先的数据就会确实地被改变。
53.只有在获取地址的情况下对元素进行操作,才能真正地修改变量。
54.不管是否使用引用,函数的参数名和实际传入的参数名可以不同。引用并不是取地址的意思。
55.结构体里面能定义除了自己本身之外的任何数据类型。虽然不能定义自己本身,但可以定义自
身类型的指针变量。
56.构造函数是用来初始化结构体的一种函数,它定义在结构体。构造函数的一个特点是它不需要
写返回类型,且函数名与结构体名相同。
57.如果自己重新定义了构造函数,则不能不经初始化就定义结构体变量。
58.eps取10^-8是一个合适的数字。
59.浮点数的比较
const double eps=1e-8;
const double Pi=acos(-1.0);
#define Equ(a,b) ((fass((a)-(b)))<(eps))
#define More(a,b) (((a)-(b))>(eps))
#define Less(a,b) (((a)-(b))<(-eps))
#define MoreEqu(a.b) (((a)-(b))>(-eps))
#define LessEqu(a,b) (((a)-(b))<(eps))
60.多点测试
(1)while...EOF型。如果题目没有给定输入得到结束条件,那么就默认读取到文件末尾。scanf
函数的返回值为其成功读入的参数的个数。正常的控制台中的输入一般是不会失败的,只有在读取
文件时到达文件末尾导致的无法读取现象,才会产生读入失败。这个时候,scanf函数会返回-1而
不是0,且C语言中使用EOF来代表-1.while(scanf(%d”,&n)!=EOF){}
(2)While...break型。
(3)While(T--)型。
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值