第三章 简单程序设计
c语言程序设计第五版谭浩强习题答案第三章课后答案

c语⾔程序设计第五版谭浩强习题答案第三章课后答案第三章最简单的C程序设计 ----顺序程序设计1、假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。
计算公式为$p = (1+r)^n$ ,其中r为年增长率,n为年数,p为与现在相⽐的倍数。
题⽬解析:此题的关键主要是利⽤数学库math中pow函数进⾏计算,若不熟悉可以查阅帮助⽂档,查看pow函数的⽤法。
代码⽰例:#include<stdio.h>#include <math.h>int main(){Cfloat p, r, n;r = 0.07;n = 10;p = pow(1 + r, n);printf("p=%f\n", p);return 0;}运⾏结果:2、存款利息的计算。
有1000元,想存5年,可按以下5种办法存:(1)⼀次存5年期(2)先存2年期,到期后将本息再存3年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,到期后将本息再存1年期,连续存5次(5)存活期存款,活期利息每⼀季度结算⼀次2017年银⾏存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为2.75%;5年期定期存款利息为3%;活期存款利息为0.35%(活期存款每⼀-季度结算⼀-次利息)如果r为年利率,n为存款年数,则计算本息的公式如下:1年期本息和: P= 1000* (1+r);n年期本息和: P= 1000* (1+n* r);存n次1年期的本息和: $P=1000* (1+r)^n$;活期存款本息和: P= 1000 *(1+$\frac{r}{4}$)$^{4n}$;说明: 1000*(1+$\frac{r}{4}$)是⼀个季度的本息和。
题⽬解析:理解题意很关键,其次就是利⽤数学库math中pow函数进⾏幂次⽅计算代码⽰例:#include<stdio.h>#include <math.h>int main(){float r5, r3, r2, r1, r0, p, p1, p2, p3, p4, p5;p = 1000;r5 = 0.0585;r3 = 0.054;r2 = 0.0468;r1 = 0.0414;r0 = 0.0072;p1 = p*((1 + r5) * 5); // ⼀次存5年期p2 = p*(1 + 2 * r2)*(1 + 3 * r3); // 先存2年期,到期后将本息再存3年期p3 = p*(1 + 3 * r3)*(1 + 2 * r2); // 先存3年期,到期后将本息再存2年期p4 = p*pow(1 + r1, 5); // 存1年期,到期后将本息存再存1年期,连续存5次p5 = p*pow(1 + r0 / 4, 4 * 5); // 存活期存款。
c语言程序设计第三章运算符与表达式

第三章运算符和表达式3.1 运算符和表达式概述使用运算符可以对运算对象(包括常量和变量)进行计算以得到计算结果。
用运算符将运算对象连接成一个符合C语言语法规则的式称为表达式。
另外,C语言中的表达式是可以嵌套的,即简单表达式经过运算符连接后还可以形成更为复杂的表达式。
根据运算符所连接的运算对象(操作数)的个数,可以将C语言中的运算符分为三类:(1) 单目(一元)运算符:只连接一个操作数的运算符。
(2) 双目(二元)运算符:带有两个操作数的运算符。
(3) 三目(三元)运算符:同时对三个操作数进行计算的运算符。
C语言中的表达式可以分为三类:(1) 单个常量或者单个变量是最简单的表达式。
(2) 带有运算符的表达式。
(3) 函数调用。
任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。
所以运算对象、运算符和运算结果是运算的三大要素。
3.2 算术运算符和算术表达式一、基本算术运算符和简单算术表达式1. 基本算术运算符C语言为用户提供的基本算术运算符包括:+(加)、-(减)、*(乘),/(除)、%(求余),这些运算符都是双目运算符,也即在生成算术表达式的时,基本算术运算符左右两侧都必须出现运算对象。
2. 简单算术表达式当用基本算术运算符去连接常量或者变量时,就形成简单算术表达式。
简单算术表达式的基本形式:data1 op data2。
data1和data2表示某个常量或者变量,op代表上述5个基本算术运算符之一。
假设有变量定义:int a=20,b=-5;则a+b、a-b、a*-2、20/-b、20%6、a%b等都是简单算术表达式。
3. 基本算术运算符使用说明(1) +、-、*,/既可以连接整型数据,也可以连接实型数据。
当参与这4个运算符的运算对象都是整型数据时,得到整型数据运算结果;否则表示浮点运算。
例如,int a=15,b=2;则a*b等于30,而a/b等于7;a*2.0等于30.0,而a/2.0等于7.5。
《C语言程序设计》第三章 顺序结构程序设计

第三章顺序结构程序设计3.1 基本要求z掌握C语言中使用最多的一种语句——赋值语句的使用方法。
z掌握各种类型数据的输入输出的方法,并能正确使用各种格式转换符。
z掌握文件包含预处理命令#include。
3.2 内容小结本章主要介绍了一些为编写简单程序所必须的语句及基本的输入输出方法。
它们是C语言中5类基本语句:控制语句、函数调用语句、表达式语句、空语句和复合语句。
格式输入输出函数scanf( )和printf( ):在C语言中没有专用的输入输出语句,但可通过调用输入输出函数及C系统提供的9种格式字符,进行各种类型数据、各种格式的输入输出。
单个字符的输入输出函数getchar( )和putchar( )。
文件的包含:函数是C程序的构成单元,C程序中的函数调用可分为两类,本源程序中函数的调用和非本源程序中函数的调用,如是后者需用#include 文件包含预处理命令把该函数所在的源文件包含到本源文件中来。
3.3 典型例题分析z例题1 printf( )函数的功能main( ){ int a , b;a=10;b=25;printf(“a=%d b=%d\n”,a,b);printf(“a+b=%d\na-b=%d\n”,a+b,a-b);}运行结果:a=10 b=2529a+b=35a-b=-15从上例中可以看出,转换说明符不仅规定了输出格式,而且也决定了输出项在整个输出信息中的位置。
此外,从上例也可以看出,输出项还可以是运算表达式,这时输出的是它的运算结果值。
z例题2 scanf( )函数的功能main( ){ int x, y;printf(“Enter integer x:”);scanf(“%d”,&x);printf(“Enter integer y:”);scanf(“%d”,&y);printf(“x+y=%d\n”,x+y);printf(“x-y=%d\n”,x-y);}该程序是以人机对话方式给变量x和y赋值,它的某次运行情况如下所示:Enter integer x:16〈CR〉Enter integer y:25〈CR〉x+y=41x- y=-9其中划有下横线的部分是从键盘打入的字符,其中〈CR〉表示回车键。
C++语言程序设计第3章

优先级和结合性:
先乘除,后加减,同级自左至右。
Page 20
3.3.1 算术运算符和表达式
例: float f = 3.5; int n = 6; long k = 21; double ss = f*n + k/2;
Page 21
3.3.2 自加自减运算符和表达式
运算符 ++ ++ ---
名字 增量(前缀) 增量(后缀) 减量(前缀) 减量(后缀)
▪ 字符数据在内存中的存储形式 - 以ASCII码存储,占1字节,用7个二进制位
Page 14
3.2.2 变量和常量—字符型数据
▪ 字符串常量
例:"CHINA" "a" 'a'
C H I N A \0 a \0 a
所以:char c;
c="a";
Page 15
3.2.2 变量和常量—布尔型数据
▪ 布尔型变量的说明: 例:bool flag;
Union
Unsigned
Class
Const_cast Delete
Friend Public Try Asm Except
Inline
Mutable
Reinterpret_c ast
Typeid
Typename
Namespac e
Static_cast
New Template
Using
Virtual
▪ 布尔型数据的取值: 只有 false 和 true 两个值
▪ 整型数与布尔变量的转换: - 非0整数隐式转换成true,整数0隐式转
换成false; - true转换成1, false转换成0;
第3章 VB程序设计语言基础

通常我们说的整型常量指的是十进制整数,但VB中可 以使用八进制和十六进制形式的整型常数,因此整型常数 有如下三种形式: 1)十进制整数。如125,0,-89。20 2)八进制整数。以&或&O(字母O)开头的整数是八
进制整数,如&O25表示八进制整数25,即(25)8 ,等于十 进制数21。
3)十六进制。以&H开头的整数是十六进制整数,如
End Type
3.3 常量和变量
3.3.1 常 量
在程序运行过程中,其值不能被改变的量称为常量。在 VB中有三类常量: • 普通常量 • 符号常量 • 系统常量。
一、普通常量
1. 整型常量 (1)整型(Integer):表示-32768至32767之间的整数 例如:10 110 20 (2)长整型(Long): 表示-2,147,483,648至2,147,483,647之间的整数 例如:长整型常数的书写: 23&
注意:使用运算符“&”时,变量与运算符“&”之间应
加一个空格。这是因为符号“&”还是长整型的类型定义符,
如果变量与符号“&”接在一起,VB系统先把它作为类型定 义符处理,因而就会出现语法错误。
3.4.3 关系运算符与关系表达式
关系运算符都是双目运算,是用来比较两个运算量之间 的关系,关系表达式的运算结果为逻辑量。若关系成立,结 果为True,若关系不成立,结果为False。 VB中的关系运算符如下表所示。
3.通常不使用行号 4.对象名命名约定:每个对象的名字由3个小写字母组 成的前缀(指明对象的类型)和表示该对象作用的缩写字 母组成 。
3.2 数据类型
一.标准数据类型
二、自定义类型
第三章 最简单的C程序设计

第三章最简单的C程序设计1.C程序输入输出等一系列的函数要注意一下。
2.整形的输出格式有%d,%o,%x,%ld……3.#include"stdio.h"void main(){long y=-43456;printf("y=%-8ld\n",y);printf("y=%-08ld\n",y);printf("y=%08ld\n",y);printf("y=%8ld\n",y);}就是说这个程序中的第三个输出有点问题4.printf("y=%#8o\n",y); 这个也是有点问题的,恩恩……对于这个#呢,应该是用原格式输出,而且必须是全格输出。
5.还有一段语句很有问题:main(){int x,y;double z;scanf……这里的输出呢有以下四种方式:scanf(“%d%lx,%le”,&x,&y,&z);scanf(“%2d*%d%lf”,&x,&y,&z);scanf(“%x%*d,%o”,&x,&y);scanf(“%x%o,%6.2f”,&x,&y,&z);就是问哪一种是错误的,所以……这里就有问题了,运行起来都没错误啊……6.注意字符输入,整形输入不会把空格当成下一个值赋给变量,而且数据之间用空格来区分的,而字符型数据绝对会把空格当成字符赋值给变量,而且即使是回车也是有可能被当成字符的,就如以下的程序段:#include"stdio.h"void main(){char a,b,c,d,e,f; scanf("%c%c%c%c",&a,&b,&c,&d);e=getchar(); f=getchar();putchar(a); putchar(b); printf("%c,%c",e,f);}其输入形式是abc【回车】defg【回车】那么输出结果你猜是什么?7.在整形输入时,若以%3d等形式输入,那么即是取前三位。
第三章 输入输出函数与顺序结构程序设计

3.1格式化输出函数printf( )
案例3-1 计算三个学生的平均成绩 存放三个学生的考试成绩 显示三个学生的成绩 计算平均分后显示该信息
程序代码
/*代码文件名:code3_1.c*/ #include <stdio.h> main() { int score1=12,score2=23,score3=25; /*定义并初始化三个学生成绩 */ float avg; /*输出三个学生成绩*/ printf("score1=%d, score2=%d, score3=%d\n", score1, score2, score3); avg=( score1+ score2+ score3)/3.0;/*计算平均分*/ printf("平均分avg=%f\n",avg); /*输出平均分*/ }
非格式字符
如果格式控制串中有非格式字符则输入时也要 输入该非格式字符。 例如: scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作间隔符,故输入 时应为: 5,6,7 又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c); 则输入应为: a=5,b=6,c=7
尽量不要在输出语句中改变输出变量的值,因 为可能会造成输出结果的不确定性。例如:int k=8;printf(“%d,%d\n”,k,++k);输出结果不是8, 9,而是9,9。这是因为调用函数printf时,其 参数是从右至左进行处理的,将先进行++k运 算。 输出数据时的域宽可以改变。若变量m、n、i 和f都已正确定义并赋值,则语句 printf(%*.*f,m.n,f);将按照m和n指定的域宽 输出浮点型变量f的值,并不输出m、n的值。
《C语言程序设计》教案第三章程序的控制结构—循环结构while和dowhile

《C语言程序设计》课程教案表算法2:分析:设想用sum作为累加器,初值为0,利用sum+=i(i依次取值为1、2。
100)此分析需要解决的3个问题:1)sum=0,i=1;2)每执行一次sum+=i 后,i增1(i=i+1);3)判断如果i小于或等于100,重新执行步骤(2),否则停止计算main(){int i,s=0;i=1;while(i<=100)/*i<=100为循环条件*/{s=s+i;i++; /*改变i的值*/}printf(″s=%d″,s);}运行结果:s=5050说明:循环结构的三个术语:1、循环条件:循环结构中的条件表达式如while (i<=100)其中,i<100就是循环条件。
2、循环体:在每个循环周期均要执行一次的语句序列。
如while下用{ }括起来的语句序列。
3、循环控制变量:能够决定控制条件是真是假的量。
如while(i<=100)中的变量i要写出一个正确的循环结构,对控制变量要做三方面的工作:1、对循环控制变量赋初值。
2、将循环控制变量写入正确的控制条件。
3、对循环控制变量值的更新。
使用while语句需要注意以下几点:while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。
因此,如果表达式的值一开始就为“假”,那么循环体一次也不执行。
当循环体为多个语句组成,必须用{}括起来,形成复合语句。
在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。
下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,gotowhile(s<=10){s=s+i*i;i++;}printf(“%d”,--i);}A) 4 B) 3 C) 5 D) 6对以下程序段,描述正确的是________________。
int x=0,s=0;while(!x!=0) s+=++x;printf(“%d”,s);A) 运行程序段后输出0 B) 运行程序段后输出1C) 程序段中的控制表达式是非法的D) 程序段循环无数次下面程序段的运行结果是[ ]。
C语言程序设计第三章 (2)

举例 int a=10; short b=100 int short b=100; unsigned int short b=100; long d=212365; int long d=212365; unsigned int long d=212365;
练习题
练习
• char c; 等价 • c=65; 是否等价于c= 'A' • printf(“%d %c”,c,c);输入的结果是多少呢?
65 A
注意:
• • • • • int a; char b; a=65; b=‘A’; 不等价,所占内存空间不同。 问变量a 的值和变量b的值是否等价。
练习题
price ?abc int name float name age 8ab year a%d 以上哪些是正确的标识符,哪些不是?
price name age year a b 都是 正确的标识符 ?abc int float 8ab a%d 不能是 标识符
练习题
下列选项中,不能用作标识符的是( )
设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数
A)(a+b)*h/2
ab 式_______________ h 2
计算结果不相符的是( ) B)(1/2)*(a+b)*h
B
C)(a+b)*h*1/2 D)h/2*(a+b)
2014-3-16
自加、自减运算符P53 自加运算(i++, ++i) 相同点:++i 和 i++的作用都等同于i=i+1 不同点:++i是先给i=i+1,然后再引用i的值。 i++是先引用i的值,然后i=i+1 自减运算(i- -, - -i) 相同点:- -i 和 i- -的作用都等同于i=i-1 不同点:- -i是先给i=i-1,然后再引用i的值。 i--是先引用i的值,然后i=i-1
三、第3章(1) PLC程序设计基础

B
C
M ( ) Q ( )
母线
继电接触器控制线路图
结构:电源线、触点、线圈; 实际的元件、有电流
图3.1 典型的梯形图
结构:母线、触点、线圈、盒; 软元件、能流
梯形图的一个关键概念是“能流”(Power Flow),这仅是概念上的“能流”。把左边的母 线假想为电源“火线”,而把右边的母线(虚线
所示)假想为电源“零线”。如果有“能流”从
I、Q、V、M、S、SM、L均可按位、字节、 字和双字来存取。
无符号整数-正数(格式: Byte/Word/Dword)
整数
数
有符号整数-有正有负 (格式:INT/DINT)
浮点数(Real) (实数)-带 小数点
5、负数如何表达? 在计算机中,负数以其正值的补码形式表达。 原码-一个整数,按照绝对值转换成的2#数; 反码-将2#数按位取反,所得的新数为原2#数的反码; 补码-反码加1;
PLC编程语言的国际标准 IEC 61131-3标准的5种编程语言: (1) 顺序功能图(Sequential Function Chart); (SFC) (2) 梯形图(Ladder Diagram);(LAD) (3) 功能块图(Function Block Diagram); (FBD) (4) 指令表(Instruction List);(IL) (5) 结构文本(Structured Text)。(ST)
图3-2梯形图与语句表
图3-3 功能块图
“能流”(Power Flow)只能从左向右流动。 1个网络(Network)中只能放1块独立电路。 功能块图(FBD)类似于数字逻辑门电路。 STEP 7-Micro/WIN的IEC 61131-3指令集只提供梯形图、功能块图。 地址前加“%”,其指令不区分数据类型。
计算机控制技术-常用控制程序设计

;返回DOS
;开中断 ;中断返回 ;采样8个通道 ;设1#炉A/D通道地址 ;形成下次采样存放首地址 ;形成下次采样存放地址
例:试设计一个数据采集系统
要求该系统能对八路模拟信号(变化频率≤100Hz)进行连续巡回检测,电 压范围0V~10V,分辨率为5mV(0.05%),巡回检测周期允许为1s,但为了 对采样的数据进行滤波处理,必须对每路信号进行多次采集。因此,A/D转 换器选用转换速度较快的AD574。AD574的分辨率12位(0.025%),转换误 差0.05%,转换时间25μs ,输入电压的范围均能符合上述要求。多路模 拟开关选用CD4051。CD4051导通电阻为200Ω,由于采样/保持器的输入电 阻一般在10MΩ以上,所以输入电压在CD4051上的压降仅为0.002%左右,符 合要求。CD4051的开关漏电流仅为0.08nA,当信号源内阻为10kΩ时,误 差电压约为0.08μV ,可以忽略不计。采样/保持器选用LF398,LF398采 样速度快,保持性能好,非线性度为士0.01%,也符合上述要求。整个系 统采用以8086CPU构成的微机系统来实施控制。
2. 滤波时间
在考虑滤波效果的前提下,尽量采用执行时间比较短的程 序,如果时间允许,则可采用更好的复合滤波程序。
3. 注意,并不是在任何一个系统中都需要进行数字滤波!
3.2.3 数字滤波程序设计
用复合滤波方法将上节中1号退 火炉的5个温度采样值(起始存放 地址为7000H:0)进行滤波,并存 入SAMP单元。
;设1#炉A/D通道地址 ;共采样8个通道 ;每通道数据起始存放地址 ;每通道数据存放地址 ;开中断 ;启动A/D 转换 ;等待A/D 转换结束
;A/D 转换中断服务程序 ;读A/D 值并存储
八年级信息技术教案第三章 顺藤摸瓜----顺序结构程序设计

八年级信息技术教案第三章顺藤摸瓜----顺序结构程序设计第三章顺藤摸瓜----顺序结构程序设计第一节有备而来---程序设计准备一、学习目标1.掌握进入BASIc环境的方法和输入、编辑、运行程序的方法。
2.初步掌握BASIc 中的基本概念:常量、变量、函数、表达式。
3.初步掌握输出、赋值、输入语句的格式和功能。
4.初步掌握简单顺序结构程序的设计方法。
5.理解程序的顺序结构的概念。
二、教学重点掌握输出、赋值、输入语句的格式和功能。
三、教学难点掌握简单顺序结构程序的设计方法。
四、教学方法1.演示法。
2.实践法。
五、教学手段与教学媒体六、课时安排1课时。
七、教学过程二、学习指导1.BASIc中的科学记数法类似数学中的科学记数法例如:-3.14156E+3——-3.14156×1032.56E-2一2.56×10-2其中E表示幂底数10,E后跟的整数为幂指数。
2.常见标准函数ABS求x的绝对值,即|x|SQR求x的算术平方根,即。
SIN求x的正弦值c角x的单位必须是弧度,l°≈3.14159/180)。
coS求x的余弦值。
INT求不大于x的最大整数。
注意:x为负数时,其值不是去掉小数,例INT≠一5。
INT用处很多:对正数x四舍五入保留N位小数的表达式:INT/1o^N例如:对正数x四舍五入保留两位小数的表达式:INT/100判断整数A能被整数B整除的条件关系式:INT=A/B求整数A除以B的余数的表达式:A—INT*B.RND产生一个o到1之间的随机小数生成内的随机整数的表达式:INT*+A)例如:二位随机整数的表达式:INT*90+10)3.数学式和BASIc表达式的对应表示应根据运算顺序,正确使用圆括号,且将所有符号写在同一行上。
注意乘、除、乘方运算和绝对值、算术平方根等函数在数学上与BASIc上表示的区别。
例如:一)/4.输出语句和输入语句输出语句。
格式:PRINT功能:当输出内容是数时,直接输出该数;当输出内容是数值表达式时,先计算表达式的值,然后输出该数值;当输出内容是字符串时,直接输出该字符串。
高树芳C语言程序设计--第三章

数。
程序代码
10
3.2
格式化输入
相关知识: 1.scanf的基本格式 2.scanf的格式字符串
11
3.2
格式化输入
[课堂训练3-1]
编写程序,把700分钟表示为:HH小时MM分钟。
12
3.3
字符数据的输入输出
案例3-4 putchar()与getchar()函数 案例3-5 连续输入多个字符
[解决方案]一是使用printf 输出固定字符串,二是
使用printf 输出变量、常量或表达式。
程序代码
5
3.1 格式化输出
相关知识:
1.printf的两种用法 2.C语言的语句 3.C语言中语句的分类
6
3.1 格式化输出
案例3-2 [案例任务]
printf函数的语法
运行下列程序,分析运行结果。
案例3-6 计算圆的面积与周长 案例3-7 两个整数的交换
18
3.4
顺序结构程序设计
案例3-6 计算圆的面积与周长 [案例任务] 键盘输入圆的半径,计算并输出圆的面积 与周长。要求结果保留2位小数,输出数据 左对齐。例如输入6,则运行结果如下:
程序代码
19
3.4
顺序结构程序设计
相关知识: 1.三种程序结构 2.顺序结构程序
第3章 顺序结构
知识目标: 1.掌握格式化输出函数printf和格式化输入 函数scanf的用法 2.掌握字符输入函数getchar和字符输出函 数putchar的用法 3.掌握C语言的顺序结构的特点及程序设 计模式
1
第3章 顺序结构 能力目标: 1.会使用printf函数输出各种数据类型的数据 2.会使用scanf函数输入各种数据类型的数据 3.会使用putchar和getchar函数输出或输入字符数 据 4.掌握求余运算和取整运算,掌握数字拆分等算法 5.能看懂简单的算法流程图 6.能编写简单的顺序结构程序 本章内容: 格式化输出,格式化输入,字符数据的输入和输出, 顺序结构程序设计。
第三章 pascal选择结构程序设计

第三章 选择结构程序设计在许多情况下,语句执行的顺序依赖于输入的数据或中间运行结果。
在这种情况下,必须根椐某个变量或表达式的值作出判断,最后决定执行哪些语句或跳过不执行哪些语句。
我们称这种程序结构为选择结构。
PASCAL 中可实现选择功能的语句有if 语句和case 语句。
本章主要介绍这两个语句的应用。
在某种情况下,当满足某个条件时,我们需要连续执行多个语句,在PASCAL 语言中为了让结构清晰,允许我们把多个语句组成一个复合语句,这样一个复合语句的使用就可看作一个语句使用。
在PASCAL 中复合语句组成的一般形式及语法图如下:begin <语句1>; <语句2>; . . . . . . <语句n>; end 1.if 语句的一般形式及语法图如下:if <布尔表达式> then <语句1> else <语句2> ;例3.1 编程实现读入两个数,求第一个数除以第二个数的值。
程序如下: program rzy8; var a ,b ,begin if end .1.if 语句主要用于处理两条分支的情况,有些情况下会遇到多条分支的情况,这时使用if 语句就显得非常不方便,程序结构变得混乱,为此PASCAL 语言提供了case 语句。
case 语句的一般形式及语法图如下:N-S 框图描述case <表达式> of<常量表1> :<语句1>; . . . . . .<常量表n> :<语句n>;else <语句n+1> ; end ;例3.2 某校对学生的学科成绩评定分为A ,B ,C ,D 四个级别,分级方法是:100至90为A 级,89至80为B 级,79至60为C 级,59至0分为D 级,其它分数即显示输入错case 语句误。
试编程序,实现从键盘输入学生成绩,则可输该成绩的评级。
C语言程序设计(第三版)笔记——谭浩强

第一章 概述1. C语言的特点①语言简洁、紧凑,使用方便、灵活。
共有32个关键字,9种控制语句。
②运算符丰富,公有34种运算符。
③数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。
④具有结构化的控制语句(如if…else、while、do…while、switch、for)⑤语法限制不太严格,程序设计自由度大。
⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。
⑦生成目标代码质量高,程序执行效率高。
⑧可移植性好。
2. C语言的用途C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,C有明显的优势。
现在很多大型应用软件也用C编写。
Top of Page第二章 数据类型、运算符与表达式1. C的数据类型C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
2.常量与变量常量其值不可改变,符号常量名通常用大写。
变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。
否则为不合法的变量名。
变量在编译时为其分配相应存储单元。
3.整型数据整型常量的表示方法:十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。
整型变量分为:基本型(int)、短整型(short int)、长整型(long int)和无符号型。
不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。
4.实型数据实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、1230.0等。
指数形式如123e3代表123×10的三次方。
实型变量分为单精度(float)和双精度(double)两类。
在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。
5.字符型数据字符变量用单引号括起来,如'a','b'等。
第三章MCS-51指令系统及汇编语言程序设计

指 令 系 统 的 寻 址 方 式
MCS-51指令系统及一般说明 MCS-51指令系统及一般说明
在介绍指令之前, 在介绍指令之前 , 先对指令中使用的一些符号意义进行简单 的说明。 的说明。 direct---直接地址, ---直接地址 ① direct---直接地址,即8位的内部数据存储器单元或特殊 功能寄存器的地址。 功能寄存器的地址。 #data--包含在指令中的8位常数。 --包含在指令中的 ② #data--包含在指令中的8位常数。 #datal6--包含在指令中的16位常数 包含在指令中的16位常数。 ③ #datal6--包含在指令中的16位常数。 rel-- 位的带符号的偏移量。用于SJMP --8 SJMP及所有的条件转移 ④ rel--8位的带符号的偏移量。用于SJMP及所有的条件转移 指令中。 指令中 。 偏移量按相对于下一条指令的第一个字节地址与跳转 后指令第一个字节地址之差计算, 范围内取值。 后指令第一个字节地址之差计算,在-128~+127范围内取值。 128 +127范围内取值 DPTR--数据指针,可用作16位的地址寄存器。 --数据指针 16位的地址寄存器 ⑤ DPTR--数据指针,可用作16位的地址寄存器。
指 令 系 统 的 寻 址 方 式
寄存器间接寻址
寄存器间接寻址方式可用于访问内部RAM 或外部数据存储器 寄存器间接寻址方式可用于访问内部 RAM或外部数据存储器 。 RAM 或外部数据存储器。 这种寻址方式是由指令指定某一寄存器的内容作为操作数的 地址。 地址。 其中(Ri)=40H (Ri)=40 例如 MOV A,@Ri ;(i=0或1),其中(Ri)=40H 这条指令表示从Ri中找到源操作数所在单元的地址, Ri中找到源操作数所在单元的地址 这条指令表示从Ri中找到源操作数所在单元的地址,把该地 址中的内容传送给A 即把内部RAM 40H单元的内容送到累加器A RAM中 址中的内容传送给A。即把内部RAM中40H单元的内容送到累加器A 中。
第3章_基本程序设计-1(周)

18
25 27
if (t < 18) printf("t=%f\tLower weight!\n", t); else if (t < 25) printf("t=%f\tStandard weight!\n", t); else if (t < 27) printf("t=%f\tHigher weight!\n", t); else printf("t=%f\tToo fat!\n", t); }
23
(4)for 语句的循环体还可为另一个循环语句
例如: for(i=1;i<=2;i++) for(j=1;j<=2;j++) { printf(“%3d”,i+j); printf(“\n”); } output: 2 3 3 4
24
do-while语句
do{
语句; } while(表达式); 功能:先执行循环体,然后计算表达式值, 其值若为真(非0)则继续执行循环体,直 到表达式为假时为止。
循环嵌套结构规划
外循环 入口
内循环
内循环出口
交叉循环
外循环出口
内循环出口
外循环
循环嵌套
1 2 3 4 5 6 7 8 9 -------------------------------------1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81
scanf("%d",&i);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章简单程序设计3.1 流程结构和语句1 . 三种流程结构顺序结构,选择结构,循环结构——程序在逻辑上执行的流程。
●顺序结构:按语句在源程序中出现的次序依次执行;●选择结构:根据一定的条件有选择地执行或不执行某些语句。
●循环结构:在一定条件下重复执行相同的语句。
所有的流程控制都是由语句实现的,且任何一个表达式都可作为一个语句使用,成之为表达式语句2. 表达式语句任何表达式通过在其末尾加一个“;”,可使表达式成为一个语句,形式为:表达式;其中“;”是C语句的组成部分,表示一个语句结束。
表达式语句能够独立出现在程序中,而表达式则不能独立出现。
例如:x=y+1 是表达式x=y+1;是语句习惯上把赋值表达式语句如:x=y+1;新为赋值语句。
函数调用也是表达式,因此:printf(“hellow”)是表达式;printf(“hellow”);是语句,习惯上称为输出语句。
scanf(“%d%d”,&x,&y);函数调用表达式语句(输入语句)3. C的语句概述C的一个“说明”也必须以分号结束,也称为语句,因此C的语句分说明语句和执行语句两类。
说明语句可以出现在程序中任何块(函数或复合语句)的外面——称为外部说明或块内——称为局部说明(在执行语句的前面)。
外部说明必须放在一个源程序文件中所有函数定义的外面;局部说明包括类型定义、变量和函数说明,其作用是描述程序中被处理数据(变量或函数)的名称和类型供解释程序使用。
执行语句只能出现在函数体内且处于局部说明的后面,执行语句完成对数据的处理和对程序流程的控制。
常用的程序结构为:常量说明类型说明变量说明/*外部说明*/返回类型函数名(参数表){ 变量说明/*局部说明*/执行语句}C的执行语句共有六种:●表达式语句●复合语句●标号语句●选择语句(if和switch)●循环语句(while,for,do-while)●转移语句(break,continue,goto,return)3.2标准的文件输入与输出函数一个C的源程序要能够从外部设备(文件)输入数据并将执行(或处理)的结果输出到外部设备上。
C语言的输入和输出操作是通过调用C标准函数库中的函数来实现的,标准函数库是由C编译程序提供的。
以编译后的目标代码形式存储的函数的集合。
用户程序可根据需要按规定的格式调用其中的函数来完成相应的功能。
C语言中从标准输入和输出文件(设备)中进行读(写)的四个标准函数是:格式输出函数printf、格式输入函数scanf、字符输入函数getchar和字符输出函数putchar。
其他函数以后讲。
3.2.1字符输入和输出函数1.字符输入函数getchar函数原型为:int getchar(void)其中int说明函数的返回值的类型,void说明函数没有参数,该函数的调用格式为:getchar()系统将输出设备和输入设备都看成文件,标准输入设备(键盘)和标准输出设备(显示器)是由字符的序列(字符流)组成的文本文件,称为输入流和输出流。
getchar每调用一次则从终端(键盘)读取一个字符。
这个字符的字符码就是getchar 的返回值(即函数值),其类型为由unsigned char 转换的int。
例如:c=getchar();执行时键入字符a赋值后变量c的值为97即字符‘a’的值。
输入文件的结束标志称为文件尾。
DOS系统中键入ctrl+z时产生文件结束标志。
getchar遇到文件结束标志时返回值EOF,EOF是在头文件〈stdio.h〉中定义的符号常量,其值通常为-1。
程序中如果要测试getchar()的值是否文件尾应使用EOF而不用-1,这样做可使程序不依赖于某个特定环境。
2.字符输出函数putchar函数原型为:int putchar(char ch )putchar函数将所要输出的字符码转换为unsigned char送到标准输出设备中去,返回值是被输出的字符,如果出错则返回EOF,调用形式为:putchar(ch)其中ch为实际参数,可以是char、short或int类型的表达式,其值是要被输出字符的字符码。
每调用一次则将字符c输出到标准输出设备上。
例如:int i=7;char ch;说明:(1)下面四个语句是等价的,同为输出一个响铃字符:putchar(i);putchar(7);putchar(…\07‟);putchar(…\a‟);(2)下面三个语句分别输出字符a,3和换行putchar(…a”);putchar(…3‟);putchar(…\n‟);注:putchar(3) 输出是♥而不是整数3。
(3)putchar(((c=getchar())>=‟a‟&&c<=‟z‟)?c-…a‟+‟A‟:c);该语句先输入一个字符存入变量c,如果c是小写字母则将其转换成大写字母后输出,否则直接输出原字符。
注意:凡是程序中调用了输入、输出库函数,必须在函数第一次调用之前写上#include<stdio.h>或#include“stdio.h”,预处理控制(对于DOS上的scanf和printf 可省略)。
3.2.2格式输出函数(printf)getchar和putchar函数用于输入和输出单个字符,输入和输出过程中不进行格式上的任何转换。
printf和scanf函数在数据的输入和输出过程中能够将计算机内部形式的数据和输入输出任务上的数据相互转换,称为格式输出和格式输入。
1.printf函数的原型int printf(char format,args)参数的数目可变,中间用“,”分隔,是要被转换并写到输出设备的数据。
函数的返回值是实际输出字符的数目。
2.调用形式printf(格式字符串,输出参数1,输出参数2,……,);调用printf函数时至少要给出第一个参数,即格式字符串。
格式字符串式是用“”括起来的字符串;输出参数1,…输出参数n是n个表达式,可以为任何基本类型,也可以是指针或枚举类型(较少使用)。
输出数据项的数目任意,末尾加“;”表示printf函数通常作为语句使用。
printf函数将参数的值按格式字符串规定的格式从内部形式转换成外部字符形式并输出设备,返回值是实际输出字符的数目。
例如:printf("%d%8.3f",i,x);参数中的格式为"%d %8.3f"。
i和x是要输出的数据%d表示i要用十进制整数形式输出,宽度为数据实际宽度。
%8.3f表示x要用小数形式浮点数格式输出,输出总宽度为8个字符,其中小数部分保留3位,若i=15,X=-8.2 该语句输出为15 -8.2003. 格式字符串格式字符串包含两种字符:普通字符和用于转换说明的字符,普通字符照原样输出,转换说明用于说明数据输出格式。
其形式为:%[域宽]转换字符一个转换说明以%开头。
域宽部分是可选的,用于指定输出数据的宽度。
每个转换说明对应于一个输出参数,该参数被转换成由转换说明规定的数据格式后输出。
普通字符通常用作输出提示信息,它可以与转换说明交替出现,例如printf("i=%d,x=%8.3f\n",i,x);输出为:i=15,x= -8.200ANSI C的转换字符及其规定的输出格式见教材p44。
注:如果%后面是一个%字符,则标准C无此定义,将它作为普通字符输出。
在%和转换字符之间可以加域宽说明,用于指定输出时的对齐方向、输出数据的域宽度、小数部分的位数等要求。
用于域宽说明的字符列于下表中,域宽说明可以是其中之一或多个字符的组合。
表3.1 printf域宽说明字符换说明对应的参数决定的。
例如:printf("%.*s",max,s);该语句执行时从串s中打印至多max个字符。
域宽说明示例见教材p45注意(1):printf函数根据格式串中的转换说明来决定输出数据的数目和类型,如果转换说明项数多于参数个数,或参数类型不正确,则会输出错误的数据(不报语法错);如果输出参数的数目多于转换说明项数则多余的参数不被输出。
例. Printf(“%d%d,%d”,3,4);结果为:%d,3例:int i=-6;double x=5.7,y=123.4567;printf("%-4d,%g",i,y,x);输出形式为:-6 ,123.457(2)printf中参数右结合,如设int i=1;则 printf("%d,%d,%d",++i,++i,++i);输出结果为4,3,2printf("%d,%d,%d",i++,i++,i++);输出结果为3,2,13.2.2 格式输入函数(scanf)1. scanf函数的原型int scanf(char *format,args)scanf函数是具有int类型返回值(返回读入参数的个数)的函数。
第一个参数format是格式字符串,它指出输入数据的数目、类型和格式,args为指向存放输入数据的变量的指针,输入参数的数目可变。
2. scanf函数的调用格式scanf(格式字符串,输入参数1,…输入参数n);scanf函数是printf函数的逆过程,它从标准输入设备(键盘)读入字符流,并按照格式字符串中转换字符规定的格式转换成相应类型的值后赋予由输入参数所指的变量。
format串可以包含如下字符:(1)空格或制表符,它们被忽略(2)非%普通字符,它需要输入流中有同样的非空白字符与之匹配(3)以%为开头以转换字符为结尾的转换说明符,常见的转换字符与printf类似(4)在%与转换字符之间可以有下列选项·赋值抑制符*·说明最大域宽的整数·指出参数所指变量类型的字母 h,l或L具体形式为:格式字符与printf中使用方式相同,把输入数据分为整型(int *用d、o、x 指定)、字符型(char *,用c指定)、实型(float *,用f,e指定)。
在整型和实型中可再加长度修正说明符:加h(短整型)、加l(长整型)、加L(高精度型)、m(注意没有n)用以指定输入数据的宽度。
输入参数1至输入参数n可以为简单变量的地址或字符串变量的地址,简单变量的地址用变量前面加取地址运算符&表示,字符串变量的地址用字符数组名(或指向字符串变量的指针)表示。
scanf函数被正确执行时返回被转换并赋值的数据项的数目,遇到文件尾或出错时返回EOF。
例如:int i;float x;char name[10];scanf("%d %f %s",&i,&x,name);输入:25 61.37e-1program注意:⏹输入字符串时不加双引号,因双引号也会作为字符号的内容。