循环
  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. Junit简单的案例

    Calculator: public class Calculator { public double add(double number1, double number2) { return num ...

  2. I/O:FileChannel

    FileChannel: abstract void force(boolean metaData) :强制将所有对此通道的文件更新写入包含该文件的存储设备中. abstract MappedByte ...

  3. delegate委托的例子,实现对Form中控件的更新

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. 小白开学Asp.Net Core《二》(补)

    小白开学Asp.Net Core<二>(补) ——数据仓储层(Repositroy).服务层(Service) -------------------------------------- ...

  5. Visual Studio 调试(系列文章)

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  6. 将个人网站主页设置为Tomcat默认打开页面

    步骤: 1.打开server.xml,在</Host>的上一行添加内容格式如下 <Context path="" reloadable="true&qu ...

  7. Python之父新发文,将替换现有解析器

    花下猫语: Guido van Rossum 是 Python 的创造者,虽然他现在放弃了"终身仁慈独裁者"的职位,但却成为了指导委员会的五位成员之一,其一举一动依然备受瞩目.近日 ...

  8. 一个完整的产品设计流程——家庭安全管家

    不管是产品设计,还是前后端开发,始终都应该做出来才能够有很好的提高锻炼.书看得再多,如果不配合实际练习始终得不到实质性的进展. 接下来的案例是和几位学弟学妹一起做的,契机是参加一个用户体验设计比赛,从 ...

  9. rabbitMQ_helloworld(一)

    在下图中,“P”是我们的生产者,“C”是我们的消费者.中间的框是队列 - RabbitMQ代表消费者的消息缓冲区. 本例使用maven构建项目,在pom.xml中添加一下依赖 <dependen ...

  10. 【iOS】edgesForExtendedLayout

    在 iOS 7.0 中,苹果引入了一个新的属性,叫做 edgesForExtendedLayou,它的默认值为 UIRectEdgeAll. 当你的容器是 navigationController 时 ...