专业C7讲IO流格式控制ppt课件.ppt

上传人:本田雅阁 文档编号:2696205 上传时间:2019-05-05 格式:PPT 页数:30 大小:703.51KB
返回 下载 相关 举报
专业C7讲IO流格式控制ppt课件.ppt_第1页
第1页 / 共30页
专业C7讲IO流格式控制ppt课件.ppt_第2页
第2页 / 共30页
专业C7讲IO流格式控制ppt课件.ppt_第3页
第3页 / 共30页
专业C7讲IO流格式控制ppt课件.ppt_第4页
第4页 / 共30页
专业C7讲IO流格式控制ppt课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《专业C7讲IO流格式控制ppt课件.ppt》由会员分享,可在线阅读,更多相关《专业C7讲IO流格式控制ppt课件.ppt(30页珍藏版)》请在三一文库上搜索。

1、1/59,2/30,while、break、continue回顾,1、以下程序中,while循环的循环次数是 int main() int i=0; while(i10) if(i1) continue; if(i=5) break; i+; A) 1 B) 10 C) 6 D) 死循环,不能确定次数,3/30,for、switch回顾,2、以下程序的输出结果是 int main() int a=0,i; for(i=;i5;i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; couta; A) 31

2、 B) 13 C) 10 D) 20,4/30,while、for、if、break回顾,3、以下程序的输出结果是 int main() int i=0,a=0; while(i20) for(;) if(i%10)=0) break; else i - -; i+=11; a+=i; couta; A) 21 B) 32 C) 33 D) 11,5/30,函数回顾,函数原型、函数定义、函数参数、函数返回值 寻找并输出11999之间的数m,它满足m、m2和m3均为回文数。 回文:各位数字左右对称的整数。 例如:11满足上述条件 112=121,113=1331。 分析: 10取余的方法,从最低

3、位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。,6/30,算法实现,#include using namespace std; bool symm(long n); int main() long m; for(m=11; m1000; m+) if (symm(m) ,7/30,算法实现,bool symm(long n) long i, m; i=n ; m=0 ; while(i) m=m*10+i%10; i=i/10; return( m=n ); ,8/30,将I/O流格式控制添加到I/O流语句中可以控制I/O的格式 应用I/O流格

4、式控制需要包含头文件 #include (input/output manipulators) 参见表3-4(I/O流格式控制标识符及其作用) 常用的 left,right fixed,scientific dec,oct,hex setprecision(),setfill(),setw(),第七讲 I/O流格式控制,9/30,说明,C+利用2个长整形变量的不同位分别记录程序中所设置的各种输入格式控制、输出格式控制 通过setiosflags(标志位)可以直接设置各种标志位。 但是,不一定能保证应该具有的互斥设置项。因此,建议不要直接使用这种方法 例如:可以同时设置 ios:hex | io

5、s:oct | ios:left | ios:right 出现互斥设置时,系统将忽略一些标志位 cout setiosflags(ios:left|ios:right); setw()仅对下一个输出项起作用,其余设置长期起作用直到新的相关设置。 默认设置项为 ios:skipws | ios:dec,10/30,函数定义(以方案二为例),#include / 详见教材源代码3.4 #include using namespace std; int main() int n, left=101, right=303; cout hex n dec; cout left ”t” right end

6、l; cout setfill(*) showbase showpos uppercase std:left ”(” oct setw(8) n ”)” internal dec setw(8) n ” std:right hex setw(8) n ” dec nouppercase noshowpos noshowbase setfill( ) endl; return 0; ,屏蔽格式控制符left,需指明std:名字空间,运行结果 (键盘输入7f 或 7F) 101 303 (0177*)+*127*0X7F,11/30,3.6 应用举例,3.6.1 深入理解ASCII字符集 显示AS

7、CII字符集 显示GB2312-80汉字字符集 英文字符大小写转换(字符运算) 3.6.2 深入理解整型数据 整数按八、十、十六进制输入输出 输出整数的二进制各位 操作整数的十进制各位 3.6.3 输出字符图案 由文字组成的字符图案,给出一些相对独立、功能完整的函数。 需要另外设计主函数调用它们、测试它们。,12/30,显示ASCII字符集,void ShowASCII() int i; cout setfill(0) uppercase showbase; for(i=0; i256; i+) cout setw(3) dec i t setw(3) oct i t setw(2) hex

8、i t char(i) endl; cout setfill( ) nouppercase noshowbase; 说明:1. 控制字符起控制作用如(退格、回车、换行、响铃); 2. 在中文、纯西文状态下显示ASCII扩展字符结果不同。,13/30,显示GB2312-80汉字字符集,原理 连续输出两个字符char(160+区码)和char(160+位码)为显式对应区位码汉字 区码、位码的取值范围为0194 第0115区 图形符号 第1655区 一级汉字(拼音序) 第5687区 二级汉字(笔画序) 例如:汉字“啊”的区位码为1601 输出汉字“啊”,实际上是在汉字系统中连续输出 char(160

9、+16) 和 char(160+1) cout char(176) char(161);,14/30,显示GB2312-80汉字字符集,void ShowGBHZ() int section, position; / 区、位 cout section; if(section87) break; for(position=1; position=94; position+) cout setw(2) section setw(2) position char(160+section) char(160+position) ; cout endl; cout setfill( ); / 说明:在中

10、文、纯西文状态下显示的结果不同。,15/30,中文状态下的运行结果(第16区),16/30,纯西文状态下的运行结果(第16区),17/30,英文字母大小写转换,原理:1. 英文字符(属于ASCII字符)在计算机内存中按其 ASCII码值(整数)存放,可进行算术运算。 2. az及AZ分别在ASCII码表中连续顺序 排列,任何字母对应小写与大写的差为定值(32)。 char upper(char c) if(c=a ,18/30,3.6.2 深入理解整型数据,整数按八、十、十六进制输入输出 只需要在输入流、输出流中添加格式控制标识符即可。 不需要另外编写数制转换的计算语句,由系统自动完成。 整数

11、的二进制各位(针对下列类型分别讨论) 1字节整型 char 与 unsigned char 4字节整形 int 与 unsigned int 整数十进制各位 十进制数各位数字之和 十进制数各位倒置,19/30,void CBits(char x) int len = sizeof(x)*8; cout =0; i-) / 从高位到低位 cout i ,如: (-1): 1111 1111 A (65): 0100 0001 (127): 0111 1111,如:?(255): 1111 1111 ?(127): 0111 1111,20/30,void IBits(int x) int len

12、 = sizeof(x)*8; cout =0; i-) / 从高位到低位 cout i ,如:-1: 1111 1111 1111 1111 1111 1111 1111 1111,21/30,整数的十进制各位,整数的表示 在内存中按二进制(补码)形式存放 应用中,有时需要操作整数的十进制各个位 十进制各位的取法 除以10取余 各位数字 除以10取商 十位数字移至个位,百位移至十位, 反复除以10直至商为0可计算出十进制位数 例如:,22/30,整数的十进制各位之和,给定一个整数(位数任意),计算其各位之和,int SumDigits(int n) int sum = 0; while(n

13、!= 0) sum += n % 10; n /= 10; return sum; ,sum的变化规律: 00 + 5 sum 为 5 55 + 3 sum 为 8 88 + 1 sum 为 9 SumDigits(135)的结果为 9,23/30,整数的十进制各位倒置,给定一个整数(位数任意),将其各位形成新值,int reverse(int n) int m = 0; while(n != 0) m = 10*m + n%10; n /= 10; return m; ,m的变化规律: 010*0 + 5 m 为 5 510*5 + 3 m 为 53 5310*53 + 1 m 为 531

14、reverse(135)的结果为531,24/30,输出字符图案,九九乘法表。要求输出如下内容,共9行 每行第一个乘数不变,第二个乘数从1至9 每个算式占8个字符宽,每行9个算式 乘数、星号、等号各占1个字符宽,共4个字符; 乘积占2个字符宽; 再空2格; 如:3*3= 9 3*4=12 ,25/30,九九乘法表,void Multiply() int i, j; / 2个乘数,其积为i*j for(i=1; i10; i+) for(j=1; j10; j+) cout i ”*” j ”=”; setw(2) i*j ” ”; cout endl; ,主要的执行语句输出语句,26/30,字

15、符图案,输出由字符“#”及空格组成如下图案,27/30,字符图案,观察与分析 循环输出 ”#” 分成上(9行)、 下(10行)两个图案 难点 符号出现的起始列 上半部分起始列从20起 逐行依次递减2 下半部分起始列从2起 逐行依次递增2 每行输出的”#”个数 上半部分逐行依次递增2 下半部分逐行依次递减2,28/30,字符图案,void pattern() int i, j; for(i=0; i=0; i-) cout setw(2*(10-i) “; for(j=0; j2*i+1; j+) cout “# “; cout endl; ,29/30,3.8 小结,到本章为止,已经介绍了 C+ 程序设计语言的基本语法。这些基本语法是程序设计的基础,需要尽快掌握,并且学会灵活运用。 与学习自然语言中的外国语一样,学习计算机程序设计语言也需要多读、多写。首先需要阅读一些简单的程序,然后立即动手编写类似的程序。当自己动手编写的总代码行数达到一定量的时候,自己的程序设计能力和水平就自然提高了。 事实上,主动地编写程序比被动地阅读程序更加容易。本章给出了一些源代码(即源程序),希望大家精读它们以培养和提高自己阅读程序的能力。,30/30,作业及实验,第三章作业:HZAU-专业C+作业ch3 第二次实验:HZAU-专业C+实验2(计算机1-2班) 抓紧时间!,see you!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1