PowerPoint 演示文稿

Similar documents
新版 明解C++入門編

CC213

FY.DOC

untitled

c_cpp

C/C++语言 - C/C++数据

新版 明解C言語入門編

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

新・解きながら学ぶJava

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

新・解きながら学ぶC言語

Microsoft Word - 第3章.doc

C/C++程序设计 - 字符串与格式化输入/输出

Microsoft Word - 01.DOC

新・明解C言語入門編『索引』

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

CHAPTER VC#

untitled

C C

C 1

untitled

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

02

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

Microsoft PowerPoint - 10 模板 Template.pptx

untitled

untitled

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

51 C 51 isp 10 C PCB C C C C KEIL

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

C/C++ - 字符输入输出和字符确认

IO

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

Microsoft Word - 正文.doc

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

ebook39-5

《计算概论》课程 第十九讲 C 程序设计语言应用

nooog

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

3.1 num = 3 ch = 'C' 2

untitled

第3章.doc

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

没有幻灯片标题

Microsoft Word cppFinalSolution.doc

CHAPTER 1

C语言的应用.PDF

2

Microsoft Word - CPE考生使用手冊 docx

Ps22Pdf

第七讲 继承与多态

untitled

untitled

PowerPoint 演示文稿

ebook39-6

Microsoft PowerPoint - string_kruse [兼容模式]

第一章 绪论

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

概述

C/C++ - 文件IO

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义

chap07.key

untitled

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Strings

C/C++语言 - 运算符、表达式和语句

上海交通大学

Microsoft PowerPoint - 03.Fortran程序设计基础1

ch02_Basic

Strings

提问袁小兵:

C/C++语言 - 分支结构

_汪_文前新ok[3.1].doc

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

extend

全国计算机技术与软件专业技术资格(水平)考试

《大话设计模式》第一章

Chapter12 Derived Classes

计算概论A B03 C++语言的基本成分 - 运算成分(2)

Microsoft Word - ch04三校.doc

C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1

第3章 Java语言基础

C/C++ - 函数

Java

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C H A P T E R 7 Windows Vista Windows Vista Windows Vista FAT16 FAT32 NTFS NTFS New Technology File System NTFS

C

C/C++ 语言 - 循环

C/C++ System Program Documentation

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

Microsoft PowerPoint - 07 派生数据类型

第一章 章标题-F2 上空24,下空24

ebook42-13

Transcription:

计算概论 A 课程程序设计部分 C++ 语言基本成分 数据成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn

再谈, 我们的进度安排 我们的学习过程 感性理性函数指针等 数据成分运算成分控制成分数组字符串 结构化的程序递归 传统学习过程 数据类型与表达式 输入输出 关系运算 控制语句 函数数组指针结构体 作业练习 感性认识作业练习 ( 以抄程序为主 ) 正常作业练习 ( 要求独立写程序 )

程序设计语言的构成 语言的种类千差万别, 但是, 一般说来, 基本成分不外四种 : 数据成分, 用以描述程序中所涉及的数据 ; 运算成分, 用以描述程序中所包含的运算 ; 控制成分, 用以表达程序中的控制构造 ; 传输成分, 用以表达程序中数据的传输 ; 计算机科学技术百科全书

C 程序设计语言的基本构成 数据成分

0x0012FF70 0x0012FF71 0x0012FF72 0x0012FF73 0x0012FF74 0x0012FF75 0x0012FF76 0x0012FF77 0x0012FF78 0x0012FF79 0x0012FF7A 0x0012FF7B 0x0012FF7C 0x0012FF7D 0x0012FF7E 地址 请这样来想象内存 存储空间单位 2 10 =1024 1B (Byte) = 8 b (bit) 1KB = 1024Byte 1MB = 1024KB 1GB= 1024MB 1TB = 1024GB 1PB = 1024TB

#include<iostream> using namespace std; int main() { int number[45] = {78, 56, 69, 31, 36, 67, 31, 47, 69, 34, 45, 74, 61, 82, 43, 41, 76, 79, 81, 66, 54, 50, 76, 51, 53, 28, 74, 39, 45, 61, 52, 41, 43, 75, 78, 84, 72, 51, 43, 64, 75, 81, 69, 55, 74 }; int max = 0; int i = 0; for (i = 0; i < 45; i++) { if (number[i] > max) max = number[i]; } cout << "The Maximal Number is:" << max; return 0; }

变量 : 先定义再使用 值可以变化的量 变量的定义格式 ( 变量类型 )( 变量标识符 ); int Max; int Max = 0; char character; char character = A ; double Result = 12.345 ;

请这样来想象内存 0x0012FF70 0x0012FF71 0x0012FF72 0x0012FF73 0x0012FF74 0x0012FF75 0x0012FF76 0x0012FF77 0x0012FF78 0x0012FF79 0x0012FF7A 0x0012FF7B 0x0012FF7C 0x0012FF7D 0x0012FF7E 地址

C/C++ 程序中的数据类型

C/C++ 程序中的数据类型

整型数据的分类 整型 基本型 int 短整型 长整型 short short int long long int

整型数据的分类 整型 内存空间 基本型 int 32bit 短整型 short short int 16bit 长整型 long long int 32bit 注 C 标准没有具体规定以上各类数据所占内存字节数, 只要求 long 型数据长度不短于 int 型,short 型不长于 int 型

如何知道某种类型的数占多少字节? sizeof 运算符 用于计算某种类型的对象在内存中所占的字节数 #include <iostream> using namespace std; int main() { cout << "sizeof(short int)=" << sizeof(short int) << endl; cout << "sizeof(int)=" << sizeof(int) << endl; cout << "sizeof(long int)=" << sizeof(long int) << endl; return 0; }

整型数据的分类 基本型 短整型 长整型 int signed int 有符号 short short int signed short signed short int long long int signed long signed long int 无符号 unsigned int unsigned short unsigned short int unsigned long unsigned long int

整型数据的分类 基本型 短整型 长整型 int signed int 有符号 short short int signed short signed short int long long int signed long signed long int 无符号 unsigned int unsigned short unsigned short int unsigned long unsigned long int

unsigned int i = 123; signed vs. unsigned 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 signed int i = -123; 32bit 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 32bit

unsigned int i = 123; signed vs. unsigned 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 32bit 原码 取反 +1 补码 signed int i = -123; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 32bit

signed int i = -123; 打印一个数的十六进制表示 F F F F F F 8 5 #include <iostream> using namespace std; int main() { int a = -123; cout << hex << a << endl; return 0; }

signed int i = -123; 打印一个数的八进制 3 7 7 7 7 7 7 7 6 0 5 #include <iostream> using namespace std; int main() { int a = -123; cout << oct << a << endl; return 0; }

以不同的方式输出整数 #include <iostream> using namespace std; int main() { int a = -123; cout << hex << a << endl; cout << oct << a << endl; cout << dec << a << endl; return 0; }

把一个十六进制数输入程序 32bit 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 7 F F F F F 8 5 #include <iostream> using namespace std; int main() { int a = 0x7FFFFF85; cout << dec << a << endl; cout << oct << a << endl; return 0; }

把一个八进制数输入程序 signed int i = -123; 32bit 3 7 7 7 7 7 7 7 6 0 5 #include <iostream> using namespace std; int main() { int a = 037777777605; cout << dec << a << endl; cout << hex << a << endl; return 0; }

unsigned int i = Max; Max & Min 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 signed int i = Max; 32bit 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32bit

unsigned int i = Max; Max & Min 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 signed int i = -123; 32bit #include <iostream> using namespace std; int main() { 32bit unsigned int a = 0xFFFFFFFF; cout << dec << a << endl; return 0; } 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1

Max & Min signed int i = Max; 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32bit #include <iostream> using namespace std; int main() { signed int a = 0x7FFFFFFF; cout << dec << a << endl; return 0; }

Max & Min signed int i = Min; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Right? No! #include <iostream> using namespace std; int main() { signed int a = 0x7FFFFFFF; a = a + 1; cout << dec << a << endl; return 0; }

Max & Min signed int i = Max; 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32bit 2147483648 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32bit 1 当最高位是 1 其他位为 0(-0) 时, 最高位既表示负号, 也表示整数最高位 1. = -2147483648

整型数据的范围 VC 中每种类型所占内存空间和表示的范围 : 总结 : 其实, 就用 int 就行了!

使用须知 #include <iostream> using namespace std; int main() { int a; cout<<a<<endl; return 0; } 养成习惯吧, 直到不再需要定变量的那一天!

C/C++ 程序中的数据类型

浮点型 浮点型 = 实型 浮点型长度有效位范围 float 32bit 7 位 -3.4*10 38 ~3.4*10 38 double 64bit 15 位 -1.7*10 308 ~1.7*10 308 long double 64bit 15 位 -1.7*10 308 ~1.7*10 308

#include <iostream> using namespace std; int main() { float a = 3.141592653589793238462643383279502884197169399375 1058209749445923078164062862089986280348253421170679; 感受浮点型 double b=3.141592653589793238462643383279502884197169399375 1058209749445923078164062862089986280348253421170679; } long double c =3.14159265358979323846264338327950288419716939 93751058209749445923078164062862089986280348253421170679; cout << a << endl; cout << b << endl; cout << c << endl; return 0;

#include <iostream> #include <iomanip> 感受浮点型 using namespace std; int main() { float a = 3.141592653589793238462643383279502884197169399375 1058209749445923078164062862089986280348253421170679; double b=3.141592653589793238462643383279502884197169399375 1058209749445923078164062862089986280348253421170679; long double c =3.14159265358979323846264338327950288419716939 93751058209749445923078164062862089986280348253421170679; cout << setprecision(100) << a << endl; cout << b << endl; cout << c << endl; return 0; }

浮点数的表示 1 位符号位 8 位指数位 ( 含 1 位符号位 ) log 10 (2 127 ) 38. 23 23 位二进制小数位 ( 默认为 1.XXXX) log 10 (2 24 ) 7. 225

浮点数的表示 1 位符号位 8 位指数位 ( 含 1 位符号位 ) log 10 (2 127 ) 38. 23 23 位二进制小数位 ( 默认为 1.XXXX) log 10 (2 24 ) 7. 225 IEEE Standard for Floating-Point Arithmetic (IEEE 754) http://grouper.ieee.org/groups/754/ ISO/IEC/IEEE 60559:2011 - Information technology - Microprocessor Systems - Floating-Point arithmetic http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57469

使用须知 #include <iostream> #include <iomanip> using namespace std; int main() { float a, b; a = 123456.789e5; b = a + 20; cout << setprecision(20) << b << endl; return 0; } 避免将一个很大的数与一个很小的数直接相加或相减, 否则就会 丢失 小的数

C/C++ 程序中的数据类型

字符型数据 一个字符型占一个字节 ; 0 1 0 0 0 0 0 0 其值可以是任何 可以出现 在 C/C++ 语言中的字符 ; 最多可以表示 个字符 例如 char a = @ ; @ 64 01000000

使用须知 #include <iostream> #include <iomanip> 由于存储类型和整型相同 using namespace std; 可以与整型数据相互赋值 int main() { 可以和整数一样进行运算 char a = 64; int b = Z'; int c = b - a; char d = 6 + 256; cout << a << " " << b << " " << c << " " << d << endl; return 0; }

使用须知 #include <iostream> using namespace std; int main() { cout << "This is the first line! \n"; cout << '\a' << '\\' << '\n'; return 0; }

C/C++ 程序中的数据类型

0 0 0 0 0 0 0 1 布尔型 用于存储 真 和 假 的变量 占一个字节 其值只能为 1 或 0 1 代表 True 0 代表 False 赋给布尔型变量的值 可以赋任何值给它, 但 赋 0 存 0, 表示 False 赋非零存 1, 表示 True

布尔型 #include <iostream> using namespace std; int main() { bool b1 = true, b2 = false; cout << "b1 = true 时,b1 = " << b1 << endl; cout << "b2 = false 时,b2 = " << b2 << endl; b1 = 7 > 3; b2 = -100; cout << "b1 = 7 > 3 时,b1 = " << b1 << endl; cout << "b2 = -100 时,b2 =" << b2 << endl; return 0; }

C/C++ 基本数据类型

所有 数 都是有类型的 常量也一样!

C/C++ 中的常量 常量 : 在程序运行过程中, 其值保持不变的量 字面常量 -1,0,123,4.6, -1.23; 符号常量 用一个标识符代表一个常量的, 称为符号常量 #include <iostream> using namespace std; int main() { const float PI = 3.14159f; float r, area; cin >> r; area = r * r * PI; } cout << "Area = " << area; return 0;

整型常量的后缀 常量有类型吗? n = 10000L; // 长整型常量 m = -0x88abL; // 长整型十六进制常量 k = 10000U; // 无符号整型常量 i = 07777LU; // 无符号长整型八进制常量 浮点型常量的后缀 x = 3.1415F // 单精度浮点型常量 y = 3.1415L // 长双精度浮点型常量 说明 : 浮点型常量默认为 double 型 ; U, L, F 均可以小写 ;

变量定义 须知

什么是标识符 关于 C/C++ 程序的标识符 用来标识符号常量名 变量名 函数名 数组名 类型名 文件名的有效字符序列称为标识符 (identifier) C++ 语言规定 : 标识符只能由字母 数字和下划线三种字符组成, 且第一个字符必须为字母或下划线, 且不可与保留字 ( 关键字 ) 相同 合法的标识符 : sum,average, -total, class, day, month, student-name,tan,lotus-1-2-3,basic, li-ling 不合法的标识符 : M.D.John, 123,#33,3D64,a>b

C++ 语言的保留字 C++ 环境下的 63 个保留字 : asm do if return typedef auto double inline short typeid bool dynamic_cast int signed typename break else long sizeof union case enum mutable static unsigned catch explicit namespace static_cast using char export new struct virtual class extern operator switch void const false private template volatile const_cast float protected this wchar_t continue for public throw while default friend register true delete goto reinterpret_cast try

匈牙利命名法 关于变量的命名 由 Microsoft 著名开发人员 Excel 主要设计者 Charles Simonyi 在其博士论文中提出 1. 以一个或者多个小写字母开头, 来指定数据类型 2. 其后是一个或者多个第一个字母大写的单词, 指出变量的用途 如 :chgrade; nlength; bonoff; strstudentname;

关于变量的命名 驼峰命名法 ( 骆驼式命名法 ) 由一个或多个单字连结在一起 ; 第一个单词以小写字母开始 ; 第二个单词的首字母大写或每一个单词的首字母都采用大写字母 ; myfirstname, mylastname, nextstudentname, intcount, printemployeepaychecks()