循环
  1. for循环
  2. while循环
  3. do  while循环
通常,入口条件循环比出口条件循环好,因为循环开始前对条件进行检查
c++11基于范围的for循环
   对数组(或容器类,如:vector和array)的每个元素执行相同操作
  • int a[5]={1,3,4,5,6};
           for (int i :a)
                 cout<<i<<endl;   //////不断循环把依次打印出来
  • int a[5]={1,3,4,5,6};
           for (int & i :a)
                { i=i+5;
                    cout<<i<<endl;  
                    } //////修改数组的值,符号&表明i是一个引用变量
  • for (int i :{1,3,4,5,6})
                 cout<<i<<endl;
设计循环时的指导规则
  • 指定循环终止条件
  • 在首次测试前初始化条件
  • 在条件再次测试前更新条件
  • 语句块是由花括号,而不是缩进定义的
延时循环
  • ANSI和c++库中存在clock函数返回程序开始执行后所用的系统时间,单位不一定是秒
  • 添加头文件#include<ctime>
  • CLOCKS_PER_SEC,该常量等于每秒钟包含的系统时间,所以系统时间除于这个值等于秒数
  • ctime把clock_t作为clock()返回类型的别名,这意味着可以把变量声明为clock_k类型
c++设置类型别名的方式
  1. 使用预处理器:#define aliasname  typename
    • 当声明多个一系列别名时不能使用
  2. 使用关键字typedef创建:typedef typename  aliasname
  • 能处理define处理不了的复杂别名,与define相比,typedif是更好的选择,有时也是唯一的选择
  • 注意,typedif不是创建新类型,而是在已有的类型建立一个新名称
 
数据输入
  1. 使用原始的cin进行输入
    • cin读取char值时与读取其他基本类型一样,忽略了空格和换行符,所以输入的空格没有显示也没有包括在计数内
    • 用cin输入时被缓冲,意味着当用户按下回车才发给程序,当缓存区还有数据时,会赋予下一条cin语句
    • int n;cin>>n;如果输入的类型不匹配时将出现4种情况
      • n的值不变
      • 不匹配的输入将留在输入队列的缓冲区中
      • cin中一个错误的标记被设置  (当错误被标记时,可以使用cin.clear()重置标记,同时也清除文件尾的eof)
      • 对cin方法的调用返回false或0
  2. 使用cin.get()
    • cin.get(ch)读取输入中的下一个字符(即使是空格),并将其赋给变量ch
    • 在c语言中要修改变量的值,必须将变量的地址传递给函数,但在c++中只要将参数声明为引用即可,头文件iostream将cin.get(ch)的参数声明为引用类型
    • cin.get()函数接受不同数量参数的原因是函数重载
  3. 当cin及cin.get()等输入作为循环条件时,则转换成bool类型,正确输入则返回true错误则返回false
  4. 当程序用户输入了错误内容时应采取3个步骤
    1. 用clear()函数重置cin以接收新的输入   
    2. 用cin.get()读取行尾之前的所有输入,也就是删除错误输入
    3. 提示用户重新输入
文件尾检测:EOF
  • windo命令提示符模式下在任意位置按下Ctr+z和Enter
  • 检测到EOF后cin将两位(eofbit和failbit)都设置为1;通过成员函数cin.eof()和cin.fail()来查看eofbit是否被设置,返回true和false
  • cin.clear()可以用来重置输入流,即清空缓冲区,
逻辑运算细节
  • !运算符高于所有关系运算符和算术运算符
  • 逻辑 | | 运算符高于&&运算符
  • C语言用逻辑运算符的另一种表达方式需要包含头文件iso646.h,c++不需要使用头文件,即&&    and,||    or,!  not
字符函数库cctype
 
函数名称
返回值
isalnum()
如果参数是数字或字母,则返回true
isalpha()
如果参数是字母,则返回true
islower()
如果是小写字母,则返回true
isupper()
如果是大写字母,则返回true
isdigit()
如果是数字(0-9),则返回true
isctrl()
如果是控制字符,则返回ture
isgraph()
如果是空格以外的打印字符,则返回true
ispunct()
如果是标点符号该字符返回true
isprint()
如果参数是打印字符(包括字符),则返回true
isspace()
如果参数是标准空白字符,包括空格换行回车制表符,则返回true
isxdigit()
如果参数是16进制数字,则返回true
toupper()
如果是小写字母则返回大写字母,否则返回原参数
tolower()
如果是大写字母则返回小写字母,否则返回原参数
 
 
 
条件运算符(?:)
  • c++种唯一一个需要3个操作数的运算符
  • 表达式1 ? 表达式2 :表达式3    //当表达式1为true时,则执行表达式2,为false时则执行表达式3
  • 而且可以在条件表达式中嵌套另一个表达式(一个被谴责的任务,隐藏代码)
 
switch语句:
switch(integer-expreession)
{
        case    label 1    :    statement(s)
        case    label 2    :    statement(s)
……
        default              :  statement(s)
}
  • integer-expreession必须是结果为整数的表达式
  • 标签必须是一个整数常量表达式,如:int,char,也可以是枚举量
  • 如果integer-expreession找不到匹配的标签,则执行default标签
  • 为了应对不按指令办事的用户,最好用字符输入
  • 要让程序执行一组特定语句后停止,必须使用break
  • switch语句中将int值和枚举量标签进行比较时,将枚举提升为int,在while循环测试条件中,也会将枚举量提升为int类型
  • 当选项多余3个时,最好用switch分支语句
break:当循环遇到break,则跳出循环
continue:跳过循环体下面的语句,开始新一轮的循环
 
简单文件操作
  1. 写入到文本文件
    • 必须包含头文件fstream
    • 必须指明名称空间std,可以使用using或std::
    • 头文件ftream定义一个处理输出的ofstream类
    • 需要创建多个ofstream变量(对象),要遵守变量的命名规则
    • ofstream对象与文件关联起来,可以使用open()方法
    • 使用完应使用close()将其关闭
    • 可以像使用cout那样使用ofstream的对象,如<<,endl以及各种cout格式化函数
    1. 方法open()接受一个字面字符串做参数,或存在数组的字符串。
    2. 将在当前目录新建文件,open参数将会是文件名,如果文件名存在则默认清空再打开
    3. 如果没有使用close(),系统将在程序正常终止时关闭
  2. 读取文本文件
    • 必须包含头文件fstream
    • 必须指明名称空间std,可以使用using或std::
    • 头文件ftream定义一个处理输入的ifstream类
    • 需要创建多个ifstream变量(对象),要遵守变量的命名规则
    • 将ifstream对象与文件关联起来,可以使用open()方法
    • 使用完应使用close()将其关闭
    • 可以像使用cin那样使用ifstream的对象,cin适用的操作和方法都适用ifstream的对象,如>>
    • 可以使用ifstream对象和get()方法读取一个字符,使用getline()方法读取一行字符
    • 可以结合ifstream和eof()、fail()等方法判断输入是否成功
    • 当ifstream的对象被作为测试条件时,最后一个读取操作成功时转化成true,否则false
    1. 检查文件是否成功打开可以使用方法is_open(),成功返回true
    • 读取文件时不应该超过EOF
    • 最后读取数据遇到EOF,eof()返回true
    • 最后数据出现类型不匹配时,fail()将返回ture
    • 当文件受损,或硬件故障时,bad()将返回true
    • 当没有出现任何错误时,good()将返回true
附录
  1. 通常cout显示bool值之前把他们转化成int,但cout.self(ios::boolalpha)函数调用设置了一个标记,该标记命令cout显示true和false,而不是1和0
  2. 头文件cstdlib定义下,exit(EXIT_FAILURE)实现程序终止
  3. window文本文件的每行都以回车字符和换行符结尾,通常c++读取文件时将这两个字符转换为换行符并在写入文件时执行相反的转换。
  4. 布尔函数is_int() 使用climits文件中定义的两个字符常量(INT_MAX和INT_MIN)来确定参数是否位于适当的范围,非常适合作为条件

循环 与 分支语句 和 字符函数库cctype 文件简单处理的更多相关文章

  1. 学习笔记二十三——字符函数库cctype【转】

    本文转载自: 字符函数库cctype 在头文件cctype(ctype.h)中定义了一些函数原型,可以简化输入确定字符是否为大写字母.数字.标点符号等工作. 例如: 如果ch是一个字母,则isalph ...

  2. 字符函数库 - cctype 和 climits 中的符号常量

    一. C++从C语言中继承一个与字符相关的.非常方便的函数软件包,他可以简化诸如确定字符是否为大写字母‘数字.标点符号等工作,这些函数的原型在头文件cctype(老式的为ctype.h)中定义的.例如 ...

  3. C++学习笔记之字符函数库cctype

    C++从C语言继承了一个与字符相关的.非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母.数字.标点符号等工作,这些函数原型是在头文件cctype(老式风格ctype.h)中定义的. 下表对这 ...

  4. 字符函数库 cctype

    <cctype> (ctype.h) Character handling functions This header declares a set of functions to cla ...

  5. C/C++知识总结 四 循环与分支语句

    C/C++循环与分支语句 循环与分支语句的意义 关系运算符.逻辑运算符 for循环和嵌套for循环(基于范围for循环) while循环与do while循环 分支if语句.if else语句.if ...

  6. 【C语言入门教程】5.6 函数库和文件

    函数库是为代码复用建立的,将同一类型,需要在不同的程序里使用的函数放置在一起,就组成了一个函数库.如 C 语言的标准库,它集合了开发者常用的函数.开发者自行编写的函数也可以组成函数库,通常称之为自定义 ...

  7. [C++ Primer Plus] 第6章、分支语句和逻辑运算符(一)程序清单

    程序清单6.2 #include<iostream> using namespace std; void main() { char ch; cout << "Typ ...

  8. 【java开发】分支语句、循环语句学习

    一.Java分支语句类型 if-else 语句 switch 关于if-esle语句可以拆分为三种 if语句 if(条件){语句块;} if-else语句if(条件语句){语句块;} if-else ...

  9. T_SQL编程赋值、分支语句、循环

    咱们在C#中会常用到赋值.循环.分支语句什么的 今天咱们来看下当初在C#用到的一点东西放到SQL中是怎么使用的 创建变量 在C#中创建一个值类型变量很简单 int a:这就可以了 SQL: decla ...

随机推荐

  1. 【CYH-02】NOIp考砸后虐题赛:成绩:题解

    这道题挺送水了吧... 两种做法. 其实空间都不需要那么大,我来提交界面一看一堆MLE的,于是还是良心的放开了时限. 这么简单,就不做解释了. 下面放出几种代码. 代码: 两个数组: #include ...

  2. Excel催化剂图表系列之一键完成IBCS国际商业标准图表

    在数据分析领域,最后一公里的图表输出,是一片十分广阔的领域.一直以来,笔者深知不是这一方面的能手,学习上也仅仅是浅尝而止.没有往其深入研究并有所产出.很幸运地在数据圈子能够结识到其他的志同道合的伙伴, ...

  3. 人事管理系统为你解剖JSP

    人事管理系统为你解剖JSP 前言: 之前写过两篇学习JSP的博客,<Java匹马行天下之JavaWeb核心技术——JSP>https://www.cnblogs.com/zyx110/p/ ...

  4. 查询表格——建立动态表格,使用ajax输入查询条件将后台数据查询出来以表格的形式展示出来

    建立动态表格,使用ajax将前台查询条件传给后台,并将查询结果以表格的形式展示出来. 页面的展示效果如下图所示: 第一步:查询条件的部分: 代码如下: <div class="text ...

  5. 支持微信页面右侧悬浮QQ在线客服

    使用方法: 1.将style里的css样式复制到你的样式表中 2.将body中的代码部分拷贝到你需要的地方即可 (js.图片采用绝对路径,不建议修改) <!DOCTYPE html PUBLIC ...

  6. Linux vi/vim使用

    vi/vim 基本使用方法 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令. 1.vi的基本概念 基本上vi ...

  7. 使用ASM实现动态代理

    如果对我这段代码感兴趣,直接拷贝测试debug,要不然你不知道我写的是什么鬼,如果有什么问题,可以告诉我. 一.实现动态代理,首先得考虑有应该定义哪些类,根据JDK的动态代理思想,那么它就应该有一个生 ...

  8. CTF杂项题解题思路

    下载压缩包解压 如果是图片就先查看图片信息 没有有用信息查看图片看是否是一个图片 如果不是图片就将文件进行还原 从还原文件中查找有用信息 例:这是一张单纯的图片 http://123.206.87.2 ...

  9. BGP属性控制实验

    目录 实验拓扑 实验需求 实验步骤 个人小结: 实验拓扑 实验需求 更改BGP路由的属性让R4访问R1优先选R2这条路 实验步骤 1. 按照图示配置IP地址及环回口地址 R1 [R1]int g0/0 ...

  10. DesignPattern系列__05开闭原则

    介绍 开闭原则是编程设计中最基本.最重要的原则. 定义:一个软件实体如类.方法和模块等,应该对扩展(提供方)开放,对修改(使用方)关闭.用抽象构建框架,用实现扩展细节. 也就是说,在需求发生新的变化时 ...