c语言第二章
C语言基础知识第二章概述

2019/3/14
C语言程序设计教程
第2章 C语言的基本数据类型与表达式
12
例如:字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八 进制) ∴字符A可以表示为‘A’、’\x41’、’\101’。 2、分类: char 和 unsigned char; 3、值域: 每个字符型数据在内存中占一个字节;包括 ASCII字符表中的所有字符(可显示字符和非显 示字符)。
– 例如: 某计算机允许表示具有七位有效数字的十进制数,计算 333.3333+0.0002222222,若计算时没有位数的限制,则结果应当 是3.3335222222。 计算机由于字长位数的限制,只能表示七位有 效数字,于是只得将小数点后的七个数字全部删掉,而仅保留其 整数部分,得到和值333.3335。 (4)根据实际要求选择单精度或双精度。
2019/3/14
C语言程序设计教程
13
• 注意: • • • • (1)字符常量只能用单引号括起来,不能用双引号 或其他括号。 (2)字符常量只能是单个字符, 不能是字符串。 ‘ab’ 不是字符常量 (3)字符可以是字符集中任意字符,但数字被定义为 字符型之后就以ASCII码值参与数值运算。 如,‘6’和6是不同的,‘6’是字符常量,而6是整型 常量。
注意
‘a’与“a”的区别。
2019/3/14
C语言程序设计教程
15
• 字符常量与字符串常量的区别:
– ⑴ 定界符不同。 – 字符常量使用单引号,而字符串常量使用双引号。 – ⑵ 长度不同。 – 字符常量的长度固定为1,而字符串常量的长度可以是0,也可以 是某个整数。 – ⑶ 存储要求不同。 – 字符常量存储的是字符的ASCII码值,而字符串常量除了要存储 字符串常量的有效字符外,还要存储一个字符串结束标志‘\0’。
C语言程序设计教程第2章程序流程

流程图
算法
确定
程序结构
变量类型
程序语句
(7)调试
调试
C语言程序设计
第二章 程序设计和程序结构
良好的程序编写风格会大大缩 短调试过程,附录4介绍了C语言程 序的一般书写风格,附录11介绍了 一些常见的错误。
C语言程序设计
第二章 程序设计和程序结构
2.1.2 算法
在实际的编程过程中要注意:
1、避免拿起题目就开始写程序的 2、应该先设计出合适的算法
第二章 程序设计和程序结构
本章概述
2.3程序结构 2.1程序设计与算法 2.4流程图及程序例子 2.2流程图
C语言程序设计
第二章 程序设计和程序结构
本章概述
• 本章主要介绍了C语言的程序结构、 流程图的绘制和程序设计的过程。 • 学习目标: • 1、理解程序的开发、设计过程 • 2、掌握C语言程序结构
C语言程序设计
第二章 程序设计和程序结构
其中最后一行的“Press any key to
continue”是VC6.0自动添加在每个
程序运行结果后面的一句提示信息,它
表示当程序执行结束时,操作者可以按
任意键返回到编辑界面。在后面的程序 运行结果中,将不再给出这一信息。
C语言程序设计
第二章 程序设计和程序结构
scanf("%d",&num1);
printf("Input the 2nd integer number: "); scanf("%d",&num2); sum=num1+num2; printf("sum=%d\n",sum); }
C语言程序设计
C语言程序设计 第2章 顺序结构与分支结构程序设计

main() { char op;float x,y;
scanf("%f%c%f",&x,&op,&y); switch (op) { case '+' : printf("=%f\n",x+y); break;
case '-' : printf("=%f\n",x-y); break; case '*' : printf("=%f\n",x*y); break; case '/' : if (y!=0.0)
200,0,0
空语句
空语句是只有分号 ;的语句。示什么操作也不做。 从语法上讲,空语句也是一条语句。 在程序设计中,若某处在语法上需要一条语句,而实际上不需要 执行任何操作时就可以使用它。 例如,在设计循环结构时,有时用到空语句。
int i,s=0; for(i=1;i<=10;s=s+i++);
main() { int a;
scanf("%d",&a); switch(a) { case 3+8:printf("a==11");break; case 90: printf("a==90");break; case 'a': printf("a==97");break; case a>100:printf("a>100");break; default:printf("default"); } }
printf("%c\n",c); }
C语言教材 第2章

第2章 C 语言的基本数据类型本章要点了解C 语言的数据类型,掌握基本数据类型的应用及其相互转换规则,理解变量和常量的概念,并掌握其定义及引用方法。
本章的难点是数据在内存中的存储形式。
第一节 C 语言的数据类型由于信息的表现形式多种多样,处理的方法也不相同,所以,我们必须考虑用不同形式的数据来表示不同的信息。
例如:一个班级的人数要用整数来表示;班级学生的平均成绩要用小数表示;学生的姓名、性别要用字符来表示;一个班级学生某一门课程的成绩要用一组不同的数值来表示等。
计算机语言中的数据类型就是为了能够高效处理各种不同的数据而引进的一个概念,是指数据的内在表现形式。
不同的数据类型具有不同的取值范围和不同的操作。
C 语言提供的数据类型如图2-1所示。
在程序中使用的所有数据都必须指定它的数据类型,C 语言的数据类型由基本类型和非基本类型组成。
其中,基本数据类型是其他数据类型的基础。
C 语言中的基本数据类型包括整型、实型(浮点型)、字符型,其中实型又包括单精度和双精度两种类型。
本章主要讨论这4种基本类型。
整型、单精度型、双精度型和字符型数据定义的关键字分别为:int 、float 、double 和char 。
除了这四个关键字外,C 语言中还提供了一些数据类型的修饰符,如:long 、short 、signed 和unsigned 。
它们的作用是与基本类型的定义关键字结合起来使用,以对基本类型进行扩充,使得在程序编写的过程中可以灵活调整数值的范围以及所占用的存储空间。
结合修饰符的应用,基本数据类型可进一步划分,如表2-1所示。
表2-1 各种数据类型及其说明语言的数据类型图)空类型(指针类型)共用体类型()结构体类型(数组类型构造类型)枚举类型()字符型()双精度型()单精度型(实型(浮点型))整型(基本类型C 12void union structenum char double float int -⎪⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎪⎩⎪⎪⎨⎧⎩⎨⎧说明:(1)表中方括号内的部分是可以省略不写的。
C语言第02章 数据类型、运算符与表达式

回到 首页
运算符和结合性 P325,附录3
2.8 算术运算符和算术表达式
3、自增、自减运算符
自增运算符++和自减运算符--均是单目运算符, 功能是使变量的值增1或减1。其优先级高于所有 双目运算符,结合性为右结合性(自右至左)。
回到 首页
例如:++i或i++ 等价于i=i+1; --i或i-- 等价于i=i-1;
2.7数值型数据之间的混合运算
回到 首页
1、整型、实型、字符型数据之间可以混合运 算
整型(包括int,short,long)和实型(包括float,double)数据可 以混合运算,另外字符型数据和整型数据可以通用,因此,整 型、实型、字符型数据之间可以混合运算。 例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
2.9赋值运算符和赋值表达式
1、赋值运算符和赋值表达式
赋值运算符:“=”为双目运算符,右结合性。 赋值表达式:由赋值运算符组成的表达式称为赋值表达 式。 赋值表达式一般形式: 变量 赋值符 表达式 如 a=5 类型转换:将高精度的数据类型赋值给低精度的数据类 型,可能出错。
回到 首页
2.9赋值运算符和赋值表达式
2.8 算术运算符和算术表达式
3、自增、自减运算符
回到 首页
y=++x;等价于先计算x=x+1(结果x=6),再执行y=x,结果y=6。 y=x++;等价于先执行y=x,再计算x=x+1,结果y=5,x=6。 y=x++*x++;结果y=25,x=7。x++为后缀形式,先取x的值进行“*” 运算,再进行两次x++。 y=++x*++x;结果y=49,x=7。
C语言基础知识第二章

• •
说明: 在C语言中,没有专门的字符串变量,字符串常量如 果需要存放在变量中要用字符数组来处理。
2013/6/5
C语言程序设计教程
第2章 C语言的基本数据类型与表达式
16
请 判 断 这 些 常 量 正 确 与 否 :
120 、 -100、 0; 0120、 072; 0xFFFF、 0x1e、0X28AF,0XED4 ; 120L, 200L ; 长整型常量 3.14、 -3.1、 5.12E-6 ; 'a' 、'#'、'\n'、'\101' ; 099、12f、 0xg 、48EA ; 019.5 、1e-08; 实型常量只能用十进制形式表示 2.1E10.2、E-6、6.4E+4.8、E9 ; "changsha" 、"+++\\?ab" ; ' \' 、'\p' 、'''、'ab' ;
2013/6/5
C语言程序设计教程
18
• 注意: • 1、符号常量与变量不同,它的值在其作用 域内不能改变,也不能再被赋值。 • 2、使用符号常量的好处: • (1)含义清楚、见名知意。 • (2)修改方便、一改全改,如现在想将符 号常量PI的值修改成3.15的话,只需要将宏 定义语句改为: #define PI 3.15 即可。
C语言程序设计教程
1
第2章 基本数据类型、运算符和表达式 2.1 C语言的数据类型 2.2 常量和变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 变量赋初值 2.7 各类数据之间的混合运算 2.8 C运算符简介
C语言 第2章 类型、运算符与表达式(2.4~2.7)

数据类型、运算符和表达式
主要内容
2.1 预备知识 2.2 常量和变量的概念 2.3 各种数据类型的常量及变量 2.4 变量赋初值 2.5 不同类型数据之间的混合运算 2.6 常用运算符和表达式 2.7 输入函数与输出函数
2
2.4.1 变量和内存的概念
变量: 程序运行过程中其值可以改变的量。 系统为程序中的每一个变量开辟存储单元。 变量名: 字母开头,后跟字母、数字和下划线组成。 C语言中的关键字不能作为变量名。
37
2.7.1
格式输出函数printf
printf函数一般格式: printf(格式控制,输出表列) 格式控制是由双引号括起来的字符串,包含三种信息: 1、格式说明:由“%”和格式字符组成,如%d,%f等。 它的作用是将输出的数据按照指定的格式输出。 2、普通字符:需要原样输出的字符。 3、转义字符:用于控制输出。 输出表列是一些要输出的数据。
27
2.5 数据的混合运算
1、自动转换
• 运算转换
• 赋值转换 2、强制类型转换
28
1、自动转换—运算转换
在进行运算时,不同类型的数据要先自动转换成 同一类型,然后进行运算。转换的规则按图所示。
double← float
long unsigned 转换由编译系统自动完成。 转换按数据长度增加的方向进行, 即按“向高看齐”的原则提升“ 较低”类型,以保证不降低精度。
33
2、强制类型转换
注意:对一个变量进行强制转换后,得到一个新的 类型的数据,但原来变量的类型不变。 例:x原为实型变量且值为2.6,在执行 i = (int)x 后得到一个整数 2,并把它赋给整型变量 i, 但 x 仍为实型,值为2.6。
第2章 C语言,数据类型、运算符和表达式

(C语言运算符总表见教材P26或P325附录C) return 31
C语言程序设计
算术运算符
+ - * / % 功能: 操作数要求: 结合性: 优先级: 注意事项: 算术运算 两个操作数 (当-用作负号时除外) 自左至右(当-用作负号时除外) -(负号) —— * / % —— + - (由高→低) ① 两个整数相除,结果为整数! 例: 3/2=1 ② %要求两个操作数均为整型数据! 且余数与被除数同号!
说明: ① 字符变量中存放的是字符ASCII码值! ② char与int数据间可进行算术运算!
char choice = 'A';
return24
C语言程序设计
字符串常量
字符常量是用双引号括起来的字符序列. 例如: "hello!" , "0" (1) 字符串常量在内存中的存储 (2) 字符串常量.vs.字符常量
整型
浮点型 字符型 说明:
① 数据类型所占字节数随机器硬件不同而不同! ② 可用sizeof(数据类型说明)来计算某一数据类型占内存的字节数! return
C语言程序设计 next part
2. 常量与变量
标识符命名 常量 变量
go go go
6
C语言程序设计
标识符命名
例: 判断下列标识符号合法性
next
ห้องสมุดไป่ตู้
20
C语言程序设计
字符常量
转义字符是用反斜杠\后面跟一个字符或一个八进制或十 六进制数表示的ASCⅡ码值。例如: '\n', '\101' (1) C语言中常用的转义字符 (2) 转义字符使用实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符型数据的输入和输出
3. 调用函数 调用函数scanf()和printf()输入 输出 和 输入/输出 输入 字符
函数scanf()和printf()除了处理整 和 函数 除了处理整 型数据和浮点型数据的输入/输出 型数据和浮点型数据的输入 输出 外,也可以处理字符型数据的输入 /输出。此时,在函数调用的格式 输出。 输出 此时, 控制字符串中相应的格式控制说明 为%c
9
字符型数据的输入和输出
2. 字符输出函数 字符输出函数putchar()
与字符型常量在程序中的表示不同, 与字符型常量在程序中的表示不同,输 输出字符时, 入/输出字符时,字符两侧没有单引号。 输出字符时 字符两侧没有单引号。 • 函数getchar()和putchar()只能处理单 函数getchar()和putchar()只能处理单 getchar() 个字符的输入和输出,即调用一次函数, 个字符的输入和输出,即调用一次函数, 只能输入或输出一个字符。 只能输入或输出一个字符。
7
字符型数据的输入和输出
• 可以调用函数getchar(),putchar(),scanf(),printf()。 1. 字符输入函数getchar() 字符输入函数
是字符型变量, 设ch是字符型变量,函数 是字符型变量 函数getchar()的一般调用格式 的一般调用格式 是: ch=getchar(); 从键盘输入一个字符,并赋值给变量ch。 从键盘输入一个字符,并赋值给变量 。 函数getchar()只能读入一个字符,如果要读入 函数 只能读入一个字符, 只能读入一个字符 多个字符就需要多次调用函数。 多个字符就需要多次调用函数。一般采用循环 调用的方式。例如上例中, 调用的方式。例如上例中,“ch=getchar();” 被循环调用了10次 共读入10个字符 被循环调用了 次,共读入 个字符
目数 运算符 名称
单目 ! 逻辑非
双目 && 逻辑与 || 逻辑或
14
逻辑运算
• 设a和b表示逻辑运算对象,逻辑运算符的 功能描述如下: !a 表示a为真,结果为假;a为假则结果为真。 真 假 假 真 a&&b 当a和b都为真时,结果是真;否则结 真 真 果是假。 假 a||b 当a和b都为假时,结果为假,否则结果 假 假 是真。 真 • (ch>=‘a’&&ch<=‘z’)||(ch>=‘A’&&ch<=‘Z’)用 于判断ch是否为英文字母。
3
Enter 10 characters:7834tus$#! Letter=3,digit=4,other=3
注意,必须连续输入 个字符 个字符, 注意,必须连续输入10个字符,字符之间 不能有间隔。 不能有间隔。 For循环中,每次读入一个字符,根据字符 循环中, 循环中 每次读入一个字符, 的种类, 的种类,选择不同的分支执行相应的累加 运算。循环执行了10次 共读入10个字符 个字符, 运算。循环执行了 次,共读入 个字符, 做了10次累加运算 次累加运算。 做了 次累加运算。 程序中使用字符输入函数getchar()读入字 程序中使用字符输入函数 读入字 用逻辑表达式判断字符的种类, 符,用逻辑表达式判断字符的种类,多分 支结构则用else-if语句实现。 语句实现。 支结构则用 语句实现
18
#include<stdio.h> int main(void) { double x,y; printf("Enter x:"); scanf("%lf",&x); if(x<0) y=0; else if(x<=15) y=4*x/3; else y=2.5*x-10.5; printf("f(%.2f)=%.2f\n",x,y); return 0; }
4
字符类型
上例中,用到了字符类型的数据,包括字符 上例中,用到了字符类型的数据, 型变量ch和字符型常量 和字符型常量‘ 、 型变量 和字符型常量‘a’、‘Z’、‘0’等。 、 等 1. 字符型常量 • • • 指单个字符,用一对单引号及其所括起的字 指单个字符, 符来表示。 符来表示。 例如: 是字符型常量, 例如:‘A’、‘a’、‘9’、‘!’是字符型常量, 、 、 、 是字符型常量 他们分别表示字母A、a,数字字符9和符 他们分别表示字母 、 ,数字字符 和符 号!。
13
逻辑运算
• 上例中,用ch>=‘0’&&ch<=‘9’来判断ch是否为数字字 符,用(ch>=‘a’&&ch<=‘z’)||(ch>=‘A’&&ch<=‘Z’)来判 断ch是否为英文字母。这些都是逻辑运算 逻辑运算。 逻辑运算 • 前面的学习中,用关系表达式描述给定的条件,例如 用x<=1比较x和1的大小关系。如果需要描述的条件比 较复杂,设计的操作数多于两个,用关系表达式就很 难正确表示。例如,判断x是否在闭区间[-1,1]内,也 就是-1<=x<=1,就需要对3个操作数x、-1、1进行比 较,一般采用逻辑表达式(x>=-1)&&(x<=1)来描述这 个条件,当x>=-1和x<=1的值同时为真时,该表达式 真 的值为真。 真
C语言程序设计
第二章 分支结构
1
ห้องสมุดไป่ตู้
统计输入的一批字符中各类字符的数量
• 输入10个字符,统计其中英文字母、数 字字符和其他字符的个数
2
#include<stdio.h> int main(void) { int digit,i,letter,other; char ch; digit=letter=other=0; printf("Enter 10 characters:"); for(i=1;i<=10;i++){ ch=getchar(); if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) letter++; else if(ch>='0'&&ch<='9') digit++; else other++; } printf("letter=%d,digit=%d,other=%d\n",lette r,digit,other); return 0; }
19
练习和作业
1. 输入x,计算并输出下列函数 -1 x<0 y=sign(x)= 0 x=0 1 x>0 2. 输入15个字符,统计其中英文字母、 空格或回车、数字字符和其他字符的 个数。(作业)
20
查询自动售货机中商品的价格
查询自动售货机中商品的价格。假设自动售货机出售 种商 查询自动售货机中商品的价格。假设自动售货机出售4种商 薯片crisps、爆米花 品:薯片 、爆米花popcorn、巧克力 、巧克力chocolate和可乐 和可乐 cola,售价分别是每份 元和3.5元。在 ,售价分别是每份3.0元、2.5元、4.0元和 元 元 元和 元 屏幕上显示以下菜单(编号和选项), ),用户可以连续查询商 屏幕上显示以下菜单(编号和选项),用户可以连续查询商 品的价格,当查询次数超过5次时 自动退出查询;不到5 次时, 品的价格,当查询次数超过 次时,自动退出查询;不到 次时,用户可以选择退出。当用户输入编号1~4, 次时,用户可以选择退出。当用户输入编号1~4,显示相 应商品的价格(保留一位小数);输入0,退出查询; );输入 应商品的价格(保留一位小数);输入0,退出查询;输入 其他编号,显示价格为0。 其他编号,显示价格为 。 [1] [2] [3] [4] [0] Select Select Select Select Exit crisps popcorn chocolate cola
• 注意区分数字和数字字符,例如,1是整型数 注意区分数字和数字字符,例如, 是整型数 是字符。 字,而‘1’是字符。 是字符
6
2. 字符型变量
• 字符型变量在定义时用类型名 字符型变量在定义时用类型名char,例 , 如: char ch; ch; • 定义了一个字符型变量 ,它的值是字 定义了一个字符型变量ch, 符型数据。 = 将字符型常量‘ 符型数据。ch=‘A’将字符型常量‘A’ 将字符型常量 赋给了字符型变量ch。 赋给了字符型变量 。
运行结果:
Type in an expression:2.0+3.67 2.0+3.67
12
字符型数据的输入和输出
3. 调用函数 调用函数scanf()和printf()输入 输出字符 和 输入/输出字符 输入
本例中,表达式包括两个操作数和一个运算符, 本例中,表达式包括两个操作数和一个运算符,由 于运算符是一个字符,用字符型变量operator来保 于运算符是一个字符,用字符型变量 来保 存该运算符,并在函数scanf()中用 读入。输入 中用%c读入 存该运算符,并在函数 中用 读入。 表达式时,在操作数和运算符之间不能出现空格。 表达式时,在操作数和运算符之间不能出现空格。 如果输入空格,由于%c表示要读入一个字符 表示要读入一个字符, 如果输入空格,由于 表示要读入一个字符,而 空格本身也时一个字符,因此空格被作为输入字符。 空格本身也时一个字符,因此空格被作为输入字符。
15
练习
• 写出满足下列条件的C语言表达式
1. ch是空格或者回车。 2. number是偶数 3. year year是闰年,即year能被4整除但不能被 year 4 100整除,或year能被400整除。