算法笔记刷题日记——Day1 C_C++在ACM中的常用语法

写在前面

这学期选了ACM课,但平时缺乏练习,不怎么刷题,因此期末考试成绩并不理想。考虑到之后的考研复试中包含机试,且计试可以算是非常重要的印象分,因此我打算寒假刷一下算法笔记,备战3月初的PAT甲级和3月末的CCF CSP认证考试,为后续考研复习数据结构等也算是打下一个良好的基础。

学习进度记录

今日学习了算法笔记的章节2 C/C++快速入门与章节3 入门——简单模拟(1)的部分内容,本来打算略过章节2的部分,但是想到ACM课考试的时候,就曾经有一道题因缺乏对基础C语言知识的了解做不出来,觉得还是有必要学习一下。
章节3的内容今日还未完结,打算明天刷完之后再发完整的刷题日记。

C/C++ 查漏补缺笔记

定义变量

1.int a,b=-1是正确的语法

int与long long

  • int的数据在10^9以内
  • long long的数据范围在2147483647内,一般超过10^10就需要long long类型

对于浮点型,记住一点,不要使用float,都用double存储

char类型的数据

  • 小写字母的ASCII码值比大写字母的ASCII码值大32

强制类型转换(新类型名)变量名

宏定义的格式

  • #define pi 3.14

scanf

  • 格式scanf("格式控制",变量地址);
    | int | %d |
    | — | — |
    | long long | %lld |
    | double | %lf |
    | char | %c |
    | 字符串(char数组) | %s |

  • 除了%c,scanf对其他格式符的输入是以空白符(即空格、换行等)为结束判断标志

  • %c可以读入空格和换行

  • %s读入以空格和换行为读入结束的标志

printf

  • 格式printf("格式控制",变量名称);
    | int | %d |
    | — | — |
    | long long | %lld |
    | double | %f |
    | char | %c |
    | 字符串(char数组) | %s |

  • 实用的输出格式

    • %md,int型变量m位右对齐输出,高位空格补齐
    • %0md,高位0补齐
    • %.mf,浮点数保留m位小数输出

getchar putchar

  • getchar输入单个字符,putchar输出单个字符
  • getchar可以接收换行符和空白符
c1=getchar();
getchar();

常用<math.h>函数

  • fabs
  • floor向下取整 ceil向上取整
  • sqrt取平方根
  • pow(r,p),返回r^p
  • round用于将double型变量四舍五入,round原型return (int)(x+0.5),浮点数四舍五入需先*10/100/1000再round再/10/100/1000

数组

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

memset

  • 格式memset(数组名,值,sizeof(数组名));
  • 头文件<string.h>
  • memset按字节赋值,对每个字节赋一样的值,因此一般赋值0或-1

!!字符数组

1.字符数组的初始化

  • 初始化方式一:char arr[2]={'h','e'};
  • 初始化方式二:char arr[]="hello";,但以字符串方式赋值数组仅限于初始化
  • 比较两种方式:初始化方式一的数组长度是2,初始化方式二的数组长度是6,字符串的结尾用'\0'作为结束符,占用1 bit

2.字符数组的输入输出

  • 方式一:scanf输入,printf输出
    • scanf("%s",str[i]);
    • printf("%s",str[i]);
    • scanf方式输入的时候会自动在数组中加入'\0'作为字符串的结束标记,并占用一个字符位
    • printf通过识别'\0'作为字符串的结尾输出
  • 方式二:getchar输入,putchar输出
  • 方式三:gets输入,puts输出
    • gets用于输入字符数组
      • 需要注意的是gets识别换行符号,但可以接收空白符
      • 如果用gets接收数组前有输入换行符,需要先使用getchar
      • gets方式会自动在数组中加入'\0'作为字符串的结束标记,并占用一个字符位
    • puts用于输出字符数组,并同时输出换行符
    • puts通过识别'\0'作为字符串的结尾输出

3.特别提醒,如果不是使用scanf或gets方式输入数组,需要在每个字符串输入后,手动加入'\0',使得printf和puts能够正确识别字符串末尾,防止输出乱码

sscanf与sprintf string+scanf/printf

1.sscanf格式sscanf(str,"%d",&n),和scanf一样,从左往右传递元素
2.sprintf格式sprintf(str,"%d",n),和printf一样,从右往左传递元素

#include <iostream>
#include <string.h>
using namespace std;int main(){char str[50];cin.getline(str,50);int a,b,c;if(sscanf(str,"%d is greater than %d",&a,&b)==2){if(a>b) printf("Yes");else printf("No");}else{if(sscanf(str,"%d is equal to %d plus %d",&a,&b,&c)==3){if(a==(b+c)) printf("Yes");else printf("No");}else{printf("???");}}return 0;
}
#include <iostream>
#include <string.h>
using namespace std;int main(){char str[50];int a,b,c,d,e,f;scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f);sprintf(str,"%04d-%02d-%02d %02d:%02d:%02d",a,b,c,d,e,f);puts(str);return 0;
}

指针 引用

1.指针指向变量所在的位置
2.指针的定义int *p1,*p2;``int *p1,p2;前者定义2个指针,后者定义1个指针
3.指针赋值int* a=&b;,指针作为函数参数fun(int* a)
4.C++中的引用func(int &a)

结构体

1.结构体的定义与结构体变量的定义

  • 需要注意的是结构体变量的定义,可以在结构体的定义之后,也可以单独采用结构体名 变量名的方式定义
  • 结构体内不能定义自己,但可以定义自己的指针,下面是典型的结构体代码示例。
struct student{int age;student* stu;
}Alice,Bob,stuList[100];
student Alice;

2.结构体的访问

student Alice;
student* Bob;
Alice.age;
Bob->age;/(*Bob).age

cin与cout

1.cin与cout在考试中并不推荐,容易超时,只有在必要的时候才会使用,如对于string的处理
2.读入一整行,针对char str[50]数组,采用cin.getline(str,50);针对string容器,采用getline(cin,str),getline可以读入空格,但是不读入空行,且属于自动忽略的类型,且它会自动忽略行尾的空格

== eps取1e-8

(fabs((a-b))<1e-8)判断相等

复杂度

1.O(n^2)的算法当n为100000的时候,会超出OJ系统的承受能力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端学习路线】

前端学习路线 1. 大纲: 前端学习路线2. ES6 语法1. let 和 const2. 箭头函数3. 解构3.1 数组解构3.2 对象解构 4 剩余参数4.1 和解构联用4.2 合并数组 5. 可选链6. Set7.数组操作8.字符串扩展方法8.1 startsWith() 和 endsWith()8.2 模板字符串 1. 大纲: 前端学习路线 学习前端…

【Android 字节码插桩】Gradle插件基础 Transform API的使用

前言 啪~我给大家开个会&#xff08;手机扔桌子上&#xff09; 什么叫做 客户无感的数据脱敏&#xff01;&#xff1f; 师爷给翻译翻译什么叫做客户无感的数据脱敏&#xff1f; 什么特么的叫做客户无感数据脱敏&#xff1f; 举个栗子~ 客户端Sdk新升级了一个版本&#xff0c;增…

Jmeter,如何从数组参数中取值

有个post请求&#xff0c;参数“equipment_ids”&#xff0c;是个数组&#xff0c;需求每次执行的时候&#xff0c;按顺序取equipment_ids中不同的值 要实现在 JMeter 中每次执行请求时按顺序取不同的 equipment_ids 中的值&#xff0c;你可以使用 Counter 元件来生成索引&…

Qt读写Execl:QXlsx库

Qt三方库开发技术&#xff1a;QXlsx介绍、编译和使用 我自己记录的实例代码&#xff1a;https://download.csdn.net/download/cao_jie_xin/88795216 目录 一、概述二、下载三、编译四、加载QXlsx静态库五、介绍一些常用的功能1、一些头文件和命名空间2、创建一个excel文件3、…

vue-cli脚手架的安装

vue-cli 1 什么是vue-cli Vue 提供了一个官方的 CLI&#xff0c;为单页面应用 (SPA) 快速搭建繁杂项目的脚手架。它为现代前端工作流提供了 batteries-included 的构建设置。只需要几分钟的时间就可以运行起来并带有热重载、保存时 lint 校验&#xff0c;以及生产环境可用的构…

2024年1月个人工作生活总结

本文为 2024年1月工作生活总结。 研发编码 docker-compose外部网络配置 高版本的docker-compose有些语法变化。 使用如下方式声明外部网络&#xff1a; version: 3.8services:ll-busybox: ...networks:my-net:ipv4_address: 172.100.1.1 networks:my-net:external:name: &q…

在linux(centos)上运行C语言文件

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.下载gcc2.创建C语言…

软件价值2-贪吃蛇游戏

贪吃蛇游戏虽然很多&#xff0c;不过它可以作为软件创作的开端&#xff0c;用python来实现&#xff0c;然后dist成windows系统可执行文件。 import pygame import sys import random# 初始化 pygame.init()# 游戏设置 width, height 640, 480 cell_size 20 snake_speed 15# …

SpringBoot 整合多数据源的事务问题

代码 先贴代码&#xff1a;核心就是&#xff1a;Spring给我们提供的一个类 AbstractRoutingDataSource&#xff0c;然后我们再写一个切面来切换数据源&#xff0c;肯定要有一个地方存储key还要保证上下文都可用&#xff0c;所以我们使用 ThreadLocal 来存储数据源的key pom.xml…

【笔记】计算文件夹的大小

目标&#xff1a;遍历文件夹&#xff0c;计算文件夹下包含文件和文件夹的大小。将这些结果存入python自带的数据库。 用大模型帮我设计并实现。 Step1 创建一个测试用的目录结构 创建目录结构如下所示&#xff1a; TestDirectory/ │ ├── EmptyFolder/ │ ├── SmallF…

结合创新!11种多尺度特征融合方法,附论文和代码

随着深度学习和计算机视觉技术的快速发展&#xff0c;多尺度特征融合已经成为一个备受关注的、不断探索的研究方向&#xff0c;它通过捕捉不同尺度和层次上的特征信息&#xff0c;提高对图像和视频内容的理解能力&#xff0c;为图像处理、计算机视觉和深度学习等领域的应用提供…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DatePicker组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之DatePicker组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DatePicker组件 日期选择器组件&#xff0c;用于根据指定日期范围创建日期滑…

Delphi TStringList常用的方法和属性

Delphi TStringList 是一个常用的字符串列表类&#xff0c;用于存储和操作字符串列表。以下是一些常用的方法和属性&#xff1a; 方法&#xff1a; Add&#xff1a;向列表末尾添加一个字符串。Insert&#xff1a;在指定位置插入一个字符串。Delete&#xff1a;删除指定位置的…

字符串操作函数1

1.strcpy使用 使用这个函数我们可以进行字符串拷贝。它有两个参数&#xff0c;第一个参数是指向目标空间&#xff0c;第二个参数是指向需要拷贝的字符串。返回值为拷贝完成后指向的字符串首地址。头文件为<string.h> 演示如下&#xff1a; 注意&#xff1a; • 源字符…

TensorFlow2实战-系列教程4:数据增强

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 猫狗识别1 数据增强 猫狗识别2------数据增强 猫狗识别3------迁移学习 对于图像数据…

RS485自动收发电路震荡的问题

电路 设计初衷 电源5V 选择5V的原因&#xff0c;差分2.5V比1.5V可以提高传输能力 TTL输入 3.3V电平满足需求 TTL输出 4.5V了&#xff0c;MCU是3.3V平台 这样就分为两种情况 MCU接收端可以容忍5V输入 MCU接收端不可以容忍5V输入&#xff0c;就要进行电压转换&#xff0c;我这里使…

MacOS X 中 OpenGL 环境搭建 Makefile的方式

1&#xff0c;预备环境 安装 brew&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安装glfw&#xff1a; brew install glfw 安装glew&#xff1a; brew install glew 2.编译 下载源代码…

Linux内核--设备驱动(一)驱动的结构介绍

目录 一、引言 二、I/O架构 三、字符设备基本构成 ------>3.1、cdev ------>3.2、char_device_struct ------>3.3、cdev_map 四、打开字符设备 ------>4.1、加载 ------>4.2、创建文件设备 ------>4.3、打开字符设备 ------>4.4、写入字符设备…

本地搭建Plex私人影音网站并结合内网穿透实现公网远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【数据库】mysql触发器使用

题目&#xff1a; 创建职工表以及职工工资表职工表字段&#xff1a;工号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄工资表字段&#xff1a;编号自增&#xff0c;职工工号&#xff0c;基础工资10000通过触发器实现&#xff1a;对职工进行添加时 工资表中也要体现当前职…