第二讲 基本数据类 型及数组等 此为封面页,需列出课程编码、课程名称和课程开发室名称。

Slides:



Advertisements
Similar presentations
1 第二讲 C++ 编程基础. 2 主要内容 C++ 语言概述 C++ 编程基础 数据的简单输入输出 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境.
Advertisements

C++语言程序设计教程 第5章 构造数据类型 第6章 C++程序的结构.
勇闖「卡勒居」 學長姐經驗分享(文組).
C语言程序设计 主讲教师 :张群燕 电话:
第 2 章 初探 C++.
第一章 C语言概述 计算机公共教学部.
高级语言程序设计 C++程序设计教程(下) 2006年春季学期 与一些教材的区别 偏重理论,不去讨论某个系统的具体使用方法,但会涉及实现技术
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
趙靖宇時間-專治你的Monday blue
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
C++程序设计 第二讲 清华大学软件学院.
第4章 函数与预处理 4.1 概述 4.2 定义函数的一般形式 4.3 函数参数和函数的值 4.4 函数的调用 *4.5 内置函数
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
第三章 C++中的C 面向对象程序设计(C++).
第 6 章 函式.
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
第二章 基本元素、类型和概念 七、输出函数printf 八、输入格式转换函数scanf.
6 使用者函數 6.1 函數定義 宣告函數 呼叫函數 呼叫多個函數 6-6
第二章 C++对C 在非面向对象方面的改进 更简洁,更安全.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
3 數學運算 3.1 鍵盤輸入 輸入函數cin 多重輸入cin 輸出格式化 3-3
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
第三章 数据类型、运算符与表达式.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第5章 数组 北京科技大学 信息基础科学系.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
第二章Java基本程序设计.
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
C语言概述 第一章.
Chapter 2 & Chapter 3.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
C语言大学实用教程 第5章 函数与程序结构 西南财经大学经济信息工程学院 刘家芬
程式結構&語法.
第2章 数据类型及表达式 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
2011 邀请中国姐妹学校韩国语研修团项目 申请时间: ~5月 27日 / 项目地点: 汉阳大学 安山校区 / 项目时间: (星期日) ~ 7.22(星期五) 费用: 100万元(韩币/人 (包含项目 - 学费, 教材费, 宿舍费, 接机费用及所有文化体验活动项目费用)
第三章 C++的语句和简单的程序设计 主要内容:
第 二 章 数据类型、运算符与表达式.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
函式庫補充資料.
Oop8 function函式.
C语言程序设计 李祥 QQ:
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第7章 程序的结构 四、生存期与存储属性 五、extern关键字与外部连接属性 六、static关键字与内部连接属性.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
第二章 类型、对象、运算符和表达式.
第二章 基本数据类型 ——数据的表示.
挑戰C++程式語言 ──第9章 函數.
#include <iostream.h>
Introduction to the C Programming Language
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
變數與資料型態  綠園.
第二章 Java基础语法 北京传智播客教育
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
函式庫補充資料 1.
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

第二讲 基本数据类 型及数组等 此为封面页,需列出课程编码、课程名称和课程开发室名称。 第二讲 基本数据类                   型及数组等 此为封面页,需列出课程编码、课程名称和课程开发室名称。 要求:每个子课程(6位编码的课程)要求做一个这样的胶片,胶片文件命名为“课程编码 课程名称.ppt”。 此页胶片仅在授课时使用,胶片+注释中不使用。 封面页按产品分为4个,各产品使用自己的封面,把其他封面直接删除即可。

本讲内容 上次作业讲解 常见错误 基本数据类型 数组及其应用 本讲作业 2

2.1 上次作业讲解 1、编写程序计算y的值: x-5 (x<1) y= x*5+2 (1≤x<10) x+5 (x≥10) 2、从键盘上输入一个整数和一浮点数,比较 其大小,并输出小值。 3

上次作业讲解 #include <iostream.h> void main( ) { double x,y; cout <<"Input x:" ; cin >> x ; if(x<1) y=x-5;  else if(x>=1 &&x<10) y=x*5+2;  else y=x+5;  cout<<"y="<<y<<endl; } 4

cout <<"Input x(int) and y(double):" ; cin >> x >>y; int x,double y; cout <<"Input x(int) and y(double):" ; cin >> x >>y; double min=x<y?x:y; cout<<"The min is\t"<<min<<endl; int x;double y; 90 56.6 90 56 'double ' : storage-class or type specifier(s) unexpected here; ignored nonstandard extension used : qualifiers after comma in declarator list are ignored--两个警告 5

2.2 常见错误与警告 1、变量未定义或定义了却从未使用 2、逻辑表达式错误(||与&&) 3、IF…ELSE不匹配,或IF(表达式)中少了括号 4、字符串与表达式的错误,如“y=x-5”是字符串 5、 cin >> x,y ; cin >> x>>y >>endl; 之类的错误 6、函数实现的函数头处写分号的错误(见上讲程序) 7、函数未能按声明、使用、定义的原则(第四讲) 重复上机过程! 6

常见错误及改正 1、单词拼写错误 void—viod main---mian iostream--iosteam cout---count endl—end1 2、输出<< 与输入>>用错   cin<<"Enter two numbers:">>x,y; cout<<"Enter two numbers:"; cin>>x>>y; 3、main后少了( ),函数体少了{ }或{ }不匹配 7

error C2018: unknown character "0xa3" 4、;用错,该有的没有,不该有的却有 #include <iostream.h> void main( ) { double x,y; cout << "Enter two float number:" ; cin >> x>>y ; double z=x+y; cout <<"x+y= "<<z<<endl ; } 不是“ ”! 此处无; 应该是; 5、中文标点用错,特别是引号 肯定是用错了中文符号 error C2018: unknown character "0xa3" 8

unknown character “ 0xa3 ”:不可知字符(中文符号) 6、大小写错误 void –Void  前面是x,后面完成X 7、函数后面接(),不是{ }也不是[ ] 8、常见错误 unknown character “ 0xa3 ”:不可知字符(中文符号) syntax error : missing ";" before type "double" "x" : undeclared identifier:x:是没有声明的标识符 4、unexpected tokens following preprocessor directive - expected a newline(若在#include行尾有;则有本条错误):在预处理命令后有一个意外的符号 9

解决办法 5、missing function header (old-style formal list?)  缺少函数头(在函数实现代码如main后面加了;就会出现) 6、subscript requires array or pointer type  下标需要数组或指针类型,max(2,4)误写成max[2,4]! 7、"max" : function does not take 3 parameters  函数不支持3个参数 8、"main" : function should return a value; "void" return type assumed   main前少了void  9、local variable "x" used without having been initialized  本地变量没有初始化就使用了 10、function "void _cdecl main(void)" already has a body  在程序中有两个main函数体!不能在同一文件中放两个程序的代码,一个程序中只有一个main函数! 解决办法 10

11、编译与构建时文件名称不同 解决办法:关闭工作区-选择否-重新编译、构建 大.obj : error LNK2005: _main already defined in aa.obj 大.obj : error LNK2005: "double __cdecl max(double,double)" (?max@@YANNN@Z) already defined in aa.obj Debug/aa.exe : fatal error LNK1169: one or more multiply defined symbols found 解决办法:关闭工作区-选择否-重新编译、构建 11

2.3 基本数据类型 基本数据类型 类型修饰符 常用数据类型

基本数据类型 C++语言的基本数据类型有如下4种: char(字符型) int(整型) float(单精度浮点型)、 double(双精度浮点型) void(空值型) 如:A,b ,z 12 ,98999 12.90, 0.9e12

类型修饰符 C++语言中还有四种类型修饰符: signed(有符号) unsigned(无符号) long(长型) short (短型) 是否能为负数 数的范围是否更宽 无符号:00000000 ~11111111 可表示0到255共256个数 有符号: 11111111~ 01111111 可表示-128到+127共256个数 0代表正,1代表负, ×111111 1

常用数据类型 允许用修饰符组合构成的常用数据类型有: char (signed char) ,unsigned char: 1个字节 short(signed short),unsigned short:2个字节 int (signed int ) ,unsigned int : 4个字节 long (signed long) ,unsigned long: 4个字节 float: 4个字节(大约6位有效数字) double: 8个字节(大约12位有效数字) long double: 10个字节(大约15位有效数字)

常量和变量 常量   是指在程序中不被改变的量 变量   指在程序中其值可以被改变的量

常量 1、整型常量 2、浮点型常量 3、字符型常量 4、字符串常量 5、符号常量 常量是指在程序中不被改变的量。 常量有各种不同的数据类型,这由它的表示方法决定。 1、整型常量 2、浮点型常量 3、字符型常量 4、字符串常量 5、符号常量

1、整型常量 有3种表示方式: 十进制整数 八进制整数(以0开头的整数) 十六进制整数(以0X或0x开头的整数) 如: 123,-34,0 0123(=1*82+2*81+3*80) //等于数83 0X123 //等于数291 -024,-0X32 //不正确 123L //长整型数 123LU //无符号长整型数

2、浮点型常量 有两种表示: 定点数形式 指数形式 如: 0.123,.23,0.0 //定点数形式 0.123,.23,0.0 //定点数形式 123E5,23.4e-2 //指数形式 要注意E或e的前面要有数字,且E的后面的指数必须为整数。 E2,2.1E3.5,e //不合法 实型常数分为单精度、双精度和长双精度3类。 如:34.5 、3.8f、 34.6l 在C++中,一个实型常数未说明则表示是double型。

3、字符型常量 是用单引号括起来的一个字符。如'a'、'! '等。 此外,还有一种特殊形式,即以'\ '开头的字符序列,称为转义字符。 如' \n ' ,它表示一个换行符。 转义字符中可将反斜杠同八进制或十六进制数值结合使用,以表示相应于该数值的ASCII码。 用八进制数表示时,所能表示的范围为 '\000'~'\377',即从0~255。 用十六进制数表示时,表示的范围是'\x00'~'\xff'。

4、字符串常量 是由一对双引号括起来的字符序列。 如: " How do you do? " 、 " hello "字符常量和字符串常量在存储方式上是不同的。 字符常量只占一个字节的空间,而字符串常量除字符序列中每个字符占一个字节外,还要在最后多占一个字节空间用来保存一个'\0'字符(空字符)称为字符串结束标志符号。它是系统自动增加的。 " hello " 的长度为6,占6个内存单元。 注意: "0"与'0'的不同。

5、符号常量 用一个与常量相关的标识符来替代常量出现在程序中,这种相关的标识符称为符号常量。 定义方法须用类型说明符const。 如: const float pi=3.14159; 定义成符号常量后,程序中对其值只能读而不能改变,否则出现编译错误。 由于其常量值不可改变,所以该常量定义时必须初始化。 注: 符号常量名不能放在赋值语句的左边。

变量 1、变量名 变量是指在程序中其值可以被改变的量。 变量具有三个基本要素:名字、类型和值。 C++将大写和小写的字母认为是不同的字母。 如变量名something和 Something为不同的名字。 命名变量名的规则为: 不能为关键字 遵循标识符的命名规则 不能与程序中的其他名字如函数名等同名 一般讲究见名知意 一般变量名全用小写字母。如myBook,theFox。

2、变量类型 必须先定义其类型才能使用该变量。 如: unsigned myAge , myWeight; float myScore; 可用赋值运算符给变量赋值。 如:int x(0); unsigned short width; width=5; 也可在定义时直接给变量赋值。这时所赋的一般是初始值,称为变量初始化。 unsigned short width=5;

3、变量值 如: int a; a=300; 注意有两个值的概念: 一个是数据值(存放在内存空间中的数据) 另一个是地址值(所占内存空间的起始地址) 内容 起始地址 空间大小 由类型决定 与变量名A关联 对应变量值 100110051009100d 300

2.4 数组 数组的定义 数组的赋值 字符数组

数组的定义 数组是一种用一个名字来标识一组有序且类型相同的数据组成的派生数据类型,它占有一片连续的内存空间。 一维数组的说明形式为: 类型说明符 数组名[常量表达式]; 起始地址 内容 B 1001 1005 1009 100d 1011 对应元素值 与数组名关联 如: int B[5]; 表示定义了一个名为B的一维数组,其中有5个元素,类型都为整型。

定义时方括号内必须为常量形式,不能为变量。 如: int size=50; void main ( ) { int array[size]; // error … } 应为:const int size=50;

数组的赋值 1、数组元素的表示 数组的赋值是给数组的各个元素赋值。数组的元素可以被赋值也可被赋初值。 一维数组元素的下标表示如下: <数组名>[<下标表达式>] 如: int a[5]; 则元素为a[0]~a[4] 注意:a[5]不属于该数组的空间范围。 又如: int b[3][4]; 则元素为b[0][0]~b[2][3]。 1 2 3 4 5 a[0] a[1] a[2] a[3] a[4]

2、数组元素的赋初值 在定义数组时,同时给各元素赋初值,这称为数组元素的初始化。 规定:数组元素的个数不能少于初始值的个数。 如: int a[4]={1,2,3,4}; int a[4]={2,3}; //默认值为0 int a[4]={1,2,3,4,5}; //error int b[2][3]={{1,2,3},{4,5,6}}; int b[2][3]={1,2,3,4,5}; int b[2][3]={{1,3},{2,4}};

3、数组元素的赋值 即用赋值表达式给每个数组元素赋值。 如: int m[3]; m[0]=1; m[1]=2;m[2]=3; 注意:m[3]=4; //error 也可用循环语句实现: int a[5]; for (int i=0;i<5;i++) a[i]=i*2+1; 1 2 3 4 5 a[0] a[1] a[2] a[3] a[4] 1 3 5 7 9

例如:计算由键盘输入的五个人的平均年龄 #include <iostream.h> void main( ) { int age[5]; //数组声明 int sum=0; for(int i=0; i<5; i++) { cin>>age[i]; //给数组赋值 sum+=age[i]; //累加数组元素之和 cout<<"Enter another age:"; } cout<<"the average is:"<<sum/5.0<<endl;

字符数组 字符数组是指数组类型为char的一种数组。如: char s1[4]={'a', 'b', 'c', 'd'}; char s3[5]="abcde"; //error char s3[ ]="abcde"; //元素个数由初始值的个数决定 char ss[2][3]={{'a', 'b', '\0''},{ 'c', 'd', '\0'}}; char ss[2][3]={"ab", "cd"}; ss[0,0] ss[0,1] ss[0,2] ss[1,0] ss[1,1] ss[1,2] a b \0 c d

char s1[5]; s1[5]="abcd"; //error 注意: char s1[5]; s1[5]="abcd"; //error s1="abcd"; //error,too! 初始化时允许直接用字符串常量赋值,而在一般赋值时严禁直接对数组名操作,而只能对其中的元素逐个操作(因为数组名是一个指针常量!)。如: static int a[ ]={1,2,4,8,16}; for (int i=0; i<5;i++) cout<<a[i]<<" "; cout<<endl; 结果为:1 2 4 8 16 注 意

for(int i=0;i<12;i++) a[i]=i+1; //元素赋值 给一维数组赋值,并按每行4个元素输出  a[12] #include "iostream.h" void main() { int a[12]; for(int i=0;i<12;i++) a[i]=i+1; //元素赋值 cout<<a[i]<<"\t"; if(i%4==0)cout<<endl; } p 1 2 3 4 5 6 7 8 9 10 11 12 a[0] a[1] a[2] a[9] a[10] a[11]

随机生成数组的10个元素,求它们的最大值及平均值 #include <iostream.h> #include <stdlib.h> //srand()及rand()函数 #include <time.h> //包含time()函数 void main() {  int i,a[10],sum=0,max;  srand((unsigned) time( NULL ) ); //使种子数随时间变化,否则每次运行结果相同 //数组元素用随机函数赋值 for(i=0;i<10;i++) a[i]=rand()/300;//rand()值的范围是0-32768

//数组元素累加求和 for(i=0;i<10;i++) sum=sum+a[i]; //求数组的最大值(打擂算法) max=a[0]; for(i=1;i<10;i++) if(a[i]>max)max=a[i]; //数组按每行5列输出 { if (i%5==0)cout<<endl;   cout<<a[i]<<"\t"; } cout<<"\nmax of array a[] is "<<max<<endl; }

a[i][j]是一维数组中的第几个元素? 1 2 3 4 5 6 7 8 9 10 11 12 a[0][0] 1 2 3 4 5 6 7 8 9 10 11 12 a[0][0] a[1][0] a[2][0] a[2][0] a[2][1] a[2][2] a[2][3] a[i][j]是一维数组中的第几个元素? 如a[2][1]:以首元素为基准,前面有2行(2*4个) ,有1列故有2*4+1=9,其地址为: &(a[0][0]+ 2*4+1) a[2][3]

a[0][0] a[0][1] a[0][2] a[0][3] a[0][0] a[2][3] 4 5 6 7 8 9 10 11 12 a[0][0] for(int i=0;i<4;i++) a[0][i]=i+1; 给1行赋值 for(int i=0;i<4;i++) a[1][i]=5+i; 给2行赋值 for(int i=0;i<4;i++) a[2][i]=9+i; a[2][3]

a[0][0] a[0][1] a[0][2] a[0][3] for(int i=0;i<3;i++) //外循环,控制行 { for(int j=0;j<4;j++) //内循环,控制列 { a[i][j]=4*i+j+1; cout<<a[i][j]<<"\t"; } 可把a[i][j]改为*(*(a+i)+j) cout<<endl; }  2  3  4 5  6  7  8 9  10  11  12

2.5 枚举类型 枚举模式和枚举变量 枚举变量的值

枚举模式和枚举变量 枚举类型是若干个有名字的整型常量的集合。 枚举类型的定义格式为: enum <枚举类型名>{<枚举常量表>}; 如: enum day {sun, mon, tue, wed, thu, fri, sat}; 这时,枚举常量所对应的常量值默认为0~6。 枚举变量的定义格式为: enum <枚举类型名><枚举变量名表>; enum day d1,d2,d3; 也可连在一起写: enum day {sun, mon, tue, wed} d1,d2,d3;

枚举变量的值 如: enum day {sun,mon,tue,wed,thu,fri,sat} d1,d2,d3; enum color {red,blue,yellow,black,white} c1,c2,c3; 则有: d1=sun; d2=sat; c1=red; c2=blue; 但无: d3=yellow; //集合中无该枚举常量值 c3=3; //枚举常量值并不能直接对应整型值 若输出某个枚举变量的值则总是整型数值,而不是枚举符。 如:cout<<d1<<c2; 则输出:0 1 若要输出sun和blue,则要通过编程实现。

2.5 本讲作业 从键盘上输入三个整数,求出其中的最大与最小值(用条件运算符); 分别设计一个求最大值与最小值的函数,求出最大、最小值及中间值,并输出; 编程输出以下图形: * ** *** **** ***** ****** ****** ***** **** *** ** * 4、编程求Sum=1!+2!+3!+…+10!之和。

从键盘上输入三个数,求三个数的最大与最小值 从键盘上输入三个数,求三个数的最大与最小值  void main() { double x,y,z,max,min; cout<<"Enter three number:\n"; cin>>x>>y>>z; //先比较其中两数,求出大的再与第三个数相比 if(x>=y) max=x; else max=y; if(z>max)max=z; if(x<=y)min=x; else min=y; if(z<min)min=z; cout<<"max="<<max<<"\tmin"<<min<<endl; cout<<"mid="<<(x+y+z-max-min)<<endl;

从键盘上输入三个数,通过函数实现对三个数的从小到大的排序 从键盘上输入三个数,通过函数实现对三个数的从小到大的排序  #include "iostream.h" void main() { double x,y,z;     //定义三个变量用来输入三个数 double maxv,midv,minv; // 存放最大、最小及中间数 double max(double x,double y); //求最大值函数max的声明 double min(double x,double y); //求最小值的函数min的声明 cout<<"Enter three number:\n"; cin>>x>>y>>z; //从键盘上输入三个任意的数 maxv=max(x,max(y,z)); //计算最大值 minv=min(x,min(y,z)); //计算最小值 midv=(x+y+z)-(maxv+minv); //通过公式计算中间值 cout<<"最大值 "<<"中间值 "<<"最小值 "<<endl; cout<<maxv<<" "<<midv<<" "<<minv<<" "<<endl;}

return(x>y?x:y); return(x<y?x:y); /**********求最大值的函数的实现***************/ double max(double x,double y) { if(x>y) return x; else return y; } /**********************************************/ /**********求最小值的函数的实现***************/ double min(double x,double y) { if(x<y) return(x>y?x:y); return(x<y?x:y);