C++复习day3:分支语句与函数(依据C++premier plus)

发散复习了C++ premier plus的六、七章节部分并予以记录。
六:分支语句和逻辑运算符,且粗略复习文件的输入/输出
七:函数
 

第六章:分支语句和逻辑运算符

 
一.分支语句
1.if语句
(1)分为if单独/if、else成对/if、else if、else形式,且由{}引起语句块
(2)可以使用如3==myNumber的方式防止关系运算符误写为赋值符号
2.逻辑表达式
(1)||逻辑OR(或)、&&逻辑AND(且、与)、!逻辑NOT(非)
(2)在头文件中引入<iso646.h>即可用and、or、not来表示逻辑表达式
(3)c++在知道逻辑表达式结果后会立刻返回结果,如&&表达式若是式1为false则式2得不到执行
3.字符函数库cctype(在头文件<cctype>中定义)
 isalnum() 如果参数是字母数字,即字母或数字,该函数返回true
 isalpha() 如果参数是字母,该函数返回true
 isblank() 如果参数是空格或水平制表符,该函数返回true
 iscntrl() 如果参数是控制字符,该函数返回true
 isdigit() 如果参数是数字(0~9),该函数返回true
 isgraph() 如果参数是除空格之外的打印字符,该函数返回true
 islower() 如果参数是小写字母,该函数返回true
 isprint() 如果参数是打印字符(包括空格),该函数返回true
 ispunct() 如果参数是标点符号,该函数返回true
 isspace() 如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符,该函数返回true
 isupper() 如果参数是大写字母,该函数返回true
 isxdigit() 如果参数是十六进制的数字,即0~9、a~f、A~F,该函数返回true
 tolower() 如果参数是大写字符,则返回其小写,否则返回该参数
 toupper() 如果参数是小写字母,则返回其大写,否则返回该参数
 tolower()/toupper() 大写转为小写/小写转为大写
 isupper()/islower() 判断是否为大写/判断是否为小写,若是返回true,否则返回该参数
4.?:运算符
(1)形如expression1 ? expression2 :expression3<其中1为关系表达式,2、3则是算术表达式>式一通过则选取2,否则则是3
5.switch语句
(1)当选取条件为枚举值而判别条件为int是,会自动将枚举值提升后进行比对。
(2)c++的分支语句不能处理范围问题
6.break离开循环体,continue离开本次循环并判断进入下一次循环
7.读入数字的循环:
(1)while(i<MAX && cin>>fish[i])语句中cin>>fish数组如果失败会返回false就退出循环,起到了控制输入的效果。
(2)失败的流输入会导致流关闭,如果这并非程序最后一次使用流的话需要进行清理 if(!cin)cin.clear();
(3)循环读入的错误处理代码:清理打开流并循环将上次输入的全部清理掉。
while(!(cin>>fish[i])){
    cin.clear();
    while(cin.get()!='\n'){
        continue;
    }
    cout<<"plz print a number";
}
 
二.简单文件的输入输出
1.cin的部分特性:
(1)当目标为int/char/doublue时,cin会读入直到第一个非数字/第一个字符/第一个非浮点数元素
(2)使用cin.getline(word,50)其中word为char[50],此时会尝试读入直到第一个换行符
 
2.文件输出(即写入到文本文件):
(1)包含头文件<fstream>——>声明流ofstream fout——>关联流与文件fout.open(filename);<这个filename可以是任意类型字符串>
——>进行文件流输出fout<<chararray<<endl;——>关闭文件流fout.close();
(2)默认文件输出流将新建不存在的文件与清空已存在的文件,当文件不允许访问时可能会出错。
 
3.文件读入(即从文件读取):
(1)包含头文件<fstream>——>声明流ifstream fin——>关联流与文件fin.open(filename);<这个filename可以是任意类型字符串>
——>进行文件流输出fin>>doublevalue;/fin.getline(chararray,50);——>关闭文件流fout.close();
(2) 特性和cin一样
(3)检查打开情况:
if(!fin.is_open()){
    exit(EXIT_FAILURE);
}
(4)检查连接状态良好且未结束——>判断读取结束的原因
fin>>target;
while(fin.good()){fin>>target;}
if(fin.eof()){cout<<"eof is reached!\n";}
else if(fin.fail()){cout<<"Input terminated by data dismatch.\n";}
else{cout<<"unkown error.\n";}
(5)fin.good()结果等同于fin>>target本身,所以可对读入精简为 while(fin>>target){;}
 

第七章 函数

 
一.基础知识
1.函数原型(即提前声明,被称为静态类型检查)、函数定义、函数调用。
2.调用处参数称实参,定义处为形参(参量),引用型变量如对象、数组等传地址(通过传指针传递)能保留函数内部对其成员的操作,一般类型变量传值只是在副本上操作。
补充:数组有恒等式arr[i]==*(arr+i)/&arr[i]=arr+i
3.无法在方法中通过sizeof判断数组长度,因为数组形参被判断为指针,而sizeof仅返回指针本身内容的长度
4.可在形参中标注数组为const将之变为函数内只读,实质上将指针转换为常量指针,不允许使用其修改目标地址内容
5.可以采用数组头尾指针传入的方式替代传输数组长度的的方式。
6.禁止将常量地址赋予非常量指针,但允许把常变量赋予非常形参 (多级嵌套指针问题考虑是否违背常量不可修改的原则进行违规判断即可)
 
二.函数与二维数组
如图两种形参构造方式。总之就是单独传入行数,列数随指针传入(不能省略)
 
三.函数与c-风格字符串
(1)c-风格字符串指针在非指向空字符串时判定为true
注释:上面警告是由于""中内容被视为不变字符串const char[],所以被赋予一般指针时要求强转
 
四.函数和结构(struct)
1.结构默认的形参产生方式也是复制值
2.结构也可以使用实参加&而形参使用指针的方式调用函数
 
五.函数与string对象
1.需要多个字符串时可以声明string数组
 
六.函数与array对象
1.c++中对象的函数传递形式类似结构,默认传的也是副本。注意指针用'->'而对象名用'.'
 
七.递归
  1. 基线条件(针对最小问题) :满足该条件时函数直接返回一个值
  2. 递归条件: 包含一个或多个调用,旨在解决问题的一部分
 
 
八.引用的形参
通过形参声明引用&实现将默认传值更换为传本体地址的引用<相当于佳假名、标签>
 
九.函数指针
1.函数的地址是存储其机器语言代码的内存的开始地址,相关环节:
 (1)获取函数地址:使用不包含参数列表的函数名即可
 (2)声明函数指针:double (*pf) (int);即:返回值类型 (*指向函数的指针名)(其函数参数列表类型)
 (3)对函数指针赋值:pf=ned;
 (4)使用指针来调用函数:pf(x)或(*pf)(x)
 (5)使用c++11的自动类型推断功能能简化函数指针的定义,但自动类型推断只能用于单值初始化,不允许用于初始化列表。
 (6)函数指针的数组形式为const double * (*pa[3])(const double*,int)={f1,f2,f3};
 (7)使用typedef可以简化相关声明减少输入量和错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值