C/C++
文章平均质量分 52
swordtraveller
这个作者很懒,什么都没留下…
展开
-
【C++】序列点与副作用
有一道考题考过int a = 1, b = 2;问(a++, b++, a+b)的值,那这题a和b的自增运算到底什么时候发生的呢?自增属于副作用。像逗号, 分号; 这些都属于序列点。到达序列点时,序列点之前的副作用都应该生效。即到达逗号,时,a的自增就生效了,而不是先使用a的值然后把自增留着以后生效。所以(a++, b++, a+b)的值是5。那b = a++;呢?这里先把a的值赋给b,以后到达分号时自增(++)才保证已经生效。注意赋值符号=不是序列点。...原创 2020-11-29 11:00:22 · 204 阅读 · 0 评论 -
[C++] 非规范输入的检测和处理
本文首先给出对”非规范输入“一词的定义:指用户没有按照程序设计者的期望规范而产生的输入。例如,程序要求输入数字,用户却输入了字母,而程序设计之初却只考虑了对数字的处理;并没有考虑到对字母的处理,于是在用户输入字母时,就有可能引发程序的错误执行乃至崩溃。场景1:输入数字,判断是否为特定数字,但用户非规范输入了非数字如字母等。代码:#include <iostream>...原创 2020-01-26 22:40:39 · 1181 阅读 · 1 评论 -
[C/C++] 详解getline与getchar的一个著名的坑
1.scanf()所做工作的本质读取 从第一个非空白符起,到第一个空白符之前的内容。简记为[非空开始,空前结束]不妨试试以下例子:char a[10], b[10], c[10];scanf("%s", a);printf("a=%s\n", a); scanf("%s", b);printf("b=%s\n", b);scanf("%s", c);printf("c...原创 2019-10-30 23:07:51 · 1748 阅读 · 2 评论 -
[C++] 容器list排列
list容器网上资料讲的相对其他容器vector等要少很多,这里对list容器的排序简单说一下。框架:#include <iostream>#include <list>using namespace std;int main() { list<int> l; for (int i = 0; i < 5; i++) { int ...原创 2019-09-15 21:58:34 · 273 阅读 · 0 评论 -
[C++] 正则表达式 简单入门(正则匹配,正则查找,正则替换)
一、生成正则表达式1.头文件#include <bits/stdc++.h>注意.h不可少!(这个是万能头文件)或#include <regex>(这个是正则的头文件)2.生成正则表达式对象例子:如果给定字符串S="Hello",现在要匹配用户输入的字符串T是否包含S字符串"Hello",例如"78495Hello8984"包含了"He...原创 2019-08-01 19:01:52 · 9037 阅读 · 1 评论 -
[C++] 使用iomanip格式化输出
方法:使用<iomanip>头文件调用流操纵算子例子:保留两位小数输出浮点数1.235和1.345。注:GCC/G++编译器使用的规则是“四舍六入五成双”,当数字为5时若5前面是奇数就进位,是偶数就舍去。(5前奇进偶舍)所以GCC/G++编译器正确的输出结果为1.24和1.34传统的C语言中使用printf函数这样写:printf("%.2f %.2f", 1.2...原创 2019-08-04 23:57:51 · 923 阅读 · 0 评论 -
[C++语言] 多个头文件的编写的注意事项
今天终于完成了算法设计作业的收尾工作,过程中编写了许多头文件,遇到了不少坑,这里记下来提醒自己,及时复盘总结提高。注意点1:类声明部分写入.h头文件(header),类实现写入.cpp源文件(source)。如果声明和实现都写入头文件,也能通过编译,但不是好的编程习惯。在Dev中,将多个头文件和源文件添加到同一个项目中编译,而不要简单地拖动到同一个文件夹里。如果你只是放在同一个...原创 2019-06-29 22:53:04 · 2036 阅读 · 0 评论 -
用C/C++读写文件示例
main.cpp #include<cstdio>//cstdio=stdio.h,stdio由std和io组成 using namespace std;int a,b;int main(){ freopen("test.txt","r",stdin);//freopen("filename","r",stdin); "r"只读,文件不存在会出错 freop原创 2018-12-10 20:23:35 · 296 阅读 · 0 评论 -
[C++基础知识]超长整型数据的输入、运算和输出
问题:(蓝桥杯入门训练问题)解答:#include<cstdio>using namespace std;long long r,c;int main(){ scanf("%d",&r); c=r*(r+1)/2; printf("%lld",c); return 0;}分析:要点1:变量数据类型的选择:应该使用long long...原创 2019-01-21 17:53:45 · 8638 阅读 · 0 评论 -
Dev C++断点调试
1.前提:程序应能够正确编译成功。#include<iostream>using namespace std;int main(){ int a; cout<<1<<endl; cout<<2<<endl; cout<<3<<endl; return 0;}正确编译成功 运行示例,依次原创 2019-01-22 15:40:59 · 27462 阅读 · 2 评论 -
(中国大学Mooc)C语言程序设计进阶 之 Dev-C++中与ACLLib的详细图文解说
1.前提:会使用Dev-C++,会用浏览器下载东西。2.打开Dev,文件-新建-项目,选Windows Application,C项目,写好名称,其他不管,确定。以.dev形式保存在你新建的某个文件夹下。3.下载ACLLib去这里下载ACLLib然后解压,在\src下找到两个文件:acllib.c和acllib.hC语言程序设计进阶_中国大学MOOC(慕课) https://w...原创 2019-01-22 20:33:34 · 10701 阅读 · 27 评论 -
谈谈C++中的scanf和gets,getchar和缓冲区
#include "stdio.h"using namespace std;int main () { char str[20]; scanf("%s", str); //输入bei jing printf("%s", str); char str2[20]; //输入bei jing gets(str2); puts(str2);return 0;} 会发生什么呢?...原创 2019-03-13 22:28:26 · 504 阅读 · 0 评论 -
[算法提高] 贪心算法 翻硬币
[问题背景]蓝桥杯 历届试题 PREV-6 翻硬币小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,...原创 2019-03-19 18:20:26 · 735 阅读 · 0 评论 -
[算法提高] 动态规划 买不到的数目
[问题背景]蓝桥杯 历届试题 PREV-8买不到的数目问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在...原创 2019-03-19 20:17:31 · 211 阅读 · 0 评论 -
[算法提高] 计划目录
这只是一个目录,表示我将要学习的内容,一些自己的想法、参考的好的他人博文链接也会写在这个系列中。因为自己也是初学者,所以希望能从一个初学者低起点的角度分析问题,帮到其他初学者。同时我的内容也一定存在不少冗余、错误之处,还请同行、大佬们多多批评指教,谢谢。[算法类型]1.递归[算法提高] 递归 快速幂 - swordtraveller的博客 - CSDN博客 https://blo...原创 2019-03-17 16:54:21 · 144 阅读 · 0 评论 -
[算法提高] 递归 快速幂
理解递归的想法不难,关键是如何 快速 写出 正确 高效 的递归。函数递归调用的基本形式:Type MyFunction(){ ... MyFunction();}下面以递归实现 快速幂 ,说明一下写递归的一些注意点,这些要点是不是必要的我不知道,我想这需要严格的证明。一般求幂的方法是调用<cmath>中的pow()函数,例如求我们可以用pow(x, ...原创 2019-03-17 19:11:28 · 871 阅读 · 0 评论 -
[算法提高] 动态规划 爬楼梯
[问题背景]来源:LeetCode(力扣)编号:70. 爬楼梯内容:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: ...原创 2019-03-17 19:45:32 · 653 阅读 · 1 评论 -
[算法提高] DFS 深度优先搜索 数岛屿连通块面积
[问题背景]假设'#'是陆地,'.'是海洋。我们从图中把左、上、右、下四个方向相邻的'#'连起来作为一个连通块,也就是一个“岛屿”,每个岛屿的面积就是'#'的个数。如图:图中有三个连通块,按自左向右再自上而下的顺序,三个连通块的面积依次是4、2、1.输出这些连通块的面积。[测试样例1]##.#.#..#.#...#[输出样例1]4 2 1[测试样...原创 2019-03-18 17:00:34 · 1103 阅读 · 0 评论 -
[算法提高] 动态规划 0-1背包问题
考虑一般性的0-1背包问题,设背包容量为c,物品数量为n,每件的物品都有自己的重量和价值,每件物品只有两种状态:放入(记为1)、不放入(记为0),试寻找最优解满足放入的物品总重量不超过背包容量的前提下,放入的物品总价值最大。记背包为{},候选物品栏为()。我们依次决定A,B,C,D,E是否要放入。先看A要不要放入。如果对于{}(A,B,C,D,E),无非转化成两种方案:方案1:...原创 2019-04-24 16:02:46 · 525 阅读 · 0 评论 -
[C++语言] 何时应该用this指针
如果 本类实例 与 同类另一实例 的元素 不加说明会发生混淆,则应以this指针指出本类实例的元素。试以 全国计算机二级考试真考题库(未来教育)第20套第一道操作题的部分程序代码为例:class Point{ double x,y;public: Point(double x=0.0, double y=0.0) // **********found*******...原创 2019-05-11 17:31:23 · 2541 阅读 · 0 评论 -
[QT] QT入门小白常见问题快问快答
Q1:QT不支持C++11特性怎么办呢?A1:在.pro文件中加入一行CONFIG += C++11和Dev的-std=c++11不同,Dev中的这个c要小写,而QT中的这个C要大写。Q2:QT中建立带界面的程序,和黑窗程序分别应该选哪个呢?A2:如图所示:Qt Widgets Application是带有可视化窗体界面的应用Qt Console Appli...原创 2019-05-11 22:25:04 · 258 阅读 · 0 评论 -
[C++] 必背模板(更新中)
生成0~9的随机数#include <stdlib.h>#include <time.h>using namespace std;int main() { srand(unsigned(time(0))); int number = rand() % 10; return 0;}生成1~10的随机数#include <std...原创 2019-06-01 21:56:21 · 4642 阅读 · 3 评论 -
[C++] 容器的迭代器
“迭代器是跟着容器走的,不同容器的迭代器不一样。”(某倪大佬语)问题背景:想写一段函数代码,函数名为findit,希望返回vector<pair<int,int>>的迭代器。auto findit(string input){ int m = input[0] - 'a'; for (auto it = v[m].begin(); it ...原创 2019-05-29 21:05:34 · 187 阅读 · 0 评论 -
从VC++ 6.0 MSDEV到Visual Studio 2017的过渡阶段
很多学校在工科学生的C语言学习阶段会介绍VC++ 6.0给学生使用,但是当一些学生开始尝试在Visual Studio 2017学习C++时遇到了一些不适应,这里作个记录,帮助工科学生尽快适应VS2017.注:使用C语言考PAT的同学编译器可以选择C(gcc)或C(clang).(C++对应C++(g++)或C++(clang++))简单地说就是:1.Ctrl+Shift+N新建项...原创 2018-08-11 11:08:45 · 3155 阅读 · 0 评论