循环
  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. 【DFS练习】【最大的蛋糕块】-C++

    这道题目是一个基本的dfs模板(?)下面日常贴一波dfs的基本模板: void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return; } if(越界或者 ...

  2. dbo是默认用户也是架构

    dbo是默认用户也是架构 dbo作为架构是为了更好的与2000兼容, 在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名, 在2005中DataBaseNa ...

  3. Excel催化剂图表系列之一整套IBCS图表大放送,一秒变图表专家

    不知不觉,从2019年1月初开始打算来一波图表系列的功能,首选IBCS标准化图表,结果入坑后,一路跌至谷底,和预想的完全不是一个量级的工作量,为了追求一键式.通用化及细节的严谨性,过程中好几次文件报错 ...

  4. SpringBoot学习笔记2

    九:创建父工程 注意:打包方式选择为pom 将创建SpringBoot常用的依赖和插件放在父工程的pom.xml,如下: <project xmlns="http://maven.ap ...

  5. ThinkPHP 入门

    ThinkPHP是一个免费.开源的,快速.简单地面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷Web应用开发和简化企业级应用开发而诞生的.ThinkPHP借鉴国外很多优秀的 ...

  6. 常用socket函数详解

    常用socket函数详解 关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确.每次都查半天,经常烦恼于此.索性都弄 ...

  7. JAVA面试题 String s = new String("xyz");产生了几个对象?

    面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest ...

  8. Spring还可以这样用缓存,你知道吗?

    大家在项目开发过程中,或多或少都用过缓存,为了减少数据库的压力,把数据放在缓存当中,当访问的请求过来时,直接从缓存读取.缓存一般都是基于内存的,读取速度比较快,市面上比较常见的缓存有:memcache ...

  9. python中的内存机制

    首先要明白对象和引用的概念 (例子:a=1, a为引用,1为对象,对象1的引用计数器为1,b=1此时内存中只有一个对象1,a,b都为引用,对象的引用计数器此时为2,因为有两个引用) a=1,b=1 i ...

  10. CentOS7源码安装Nginx

    系统平台:腾讯云服务器 CentOS 7.3 64位 一.安装编译工具及库文件 [root@VM_0_5_centos ~]# yum install -y make zlib zlib-devel ...