PAT复习---算法笔记

u2

2.1

cin和cout 消耗时间比scanf和printf多得多
c++标准库中stdio.h等价于cstdio,math.h等价于cmath,string.h等价于cstring
c++向下兼容c
绝对值在10的9次方内的整数都可以定义为int型
%f是float和double型的输出格式
碰到浮点型的数据都应该用double来存储
%c是char型的输出格式
字符串常量可以作为初值赋值给字符数组,不能赋值给字符变量,使用%s的格式输出
布尔型在C++中可以直接使用,在c语言中必须添加stdbool.h头文件
%.1f 保留一位小数输出
define 标志符 常量 eg:define pi 3.14(末尾无分号)
const 数据类型 变量名=常量 eg:const double pi=3.14;

2.2
&取地址符
数组名称本身代表了这个数组第一个元素的地址,所以不需要再加取地址运算符
除了%c外,scanf对其他格式符(如%d)的输入是以空白符(空格、换行等)为结束标志的,因此,除非使用%c把空格按字符读入,其他情况都会自动跳过空格。
另外,字符数组使用%s读入的时候以空格和换行为读入结束的标志

double型
输入%lf,输出%f
getchar可以识别换行符

math函数
1.fabs(double x)取绝对值
2.floor(double x)向上取整
ceil(double x)向下取整
3.pow(double r,double p)r的p次方
4.sqrt()算术平方根
5.log以自然对数为底的对数
6.正三角,反三角sin,asin
7.round四舍五入

C语言中不允许在for语句的表达式A里定义变量,但在c++中可以,所以要把文件保存为.cpp

如果数组大小较大(10的6次方级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是:函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大。

冒泡排序
#include <stdio.h>
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
int main() {
int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
int len = (int) sizeof(arr) / sizeof(*arr);
bubble_sort(arr, len);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
return 0;
}

memset-----对数组中每个元素赋相同的初值(0/-1)------<string.h>头文件
memset(数组名,值,sizeof(数组名))

fill函数赋其他值----头文件

字符数组的输入输出
1.scanf、printf
2.getchar、putchar
3.gets、puts

string.h头文件
1.strlen(字符数组)----------长度
2.strcmp(字符数组1,字符数组2)------比较
3.strcpy(字符数组1,字符数组2)------复制
4.strcat(字符数组1,字符数组2)-----拼接
2----->1

5.sscanf(str,"%d",n)----str的内容写到n-----左到右
sprintf(str,"%d",n)----n的内容写到str----右到左

全局变量与局部变量,有参函数与无参函数,值传递与地址传递
数组作为函数参数时,参数中数组的第一维不需要填写长度,如果是二维数组,第二维需填写长度。调用时只需填写数组名

数组作为参数时,在函数中对数组元素的修改就等同于是对原数组元素的修改

对于int*型的指针变量p来说,p+1是指p所指的int型变量的下一个int型变量地址
两个int型指针相减,等价于在求两个指针之间相差了几个int

引用不产生副本,而是给原变量起了个别名,常量不可以使用引用。对引用变量的操作就是对原变量的操作。不管是否使用引用,函数的参数名和世纪传入的参数名可以不同

结构体

构造函数就是用来初始化结构体的一种函数,不需要写返回类型,且函数名与结构体类型名相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miraitowa_FTY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值