版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计主讲:高照艳1第一章C语言概述主要内容:C语言的发展C语言的特点简单C程序介绍算法结构化程序设计C程序的执行过程2C语言出现的历史背景(1)C语言的发展源于人们希望用高级语言编写操作系统。ALGOL60(高级语言)60->CPL(剑桥大学推出接近硬件规模大难实现)63->BCPL(剑桥大学简化CPL)67->B语言(贝尔实验室用B写了UNIX操作系统)70->C语言(用C改写了UNIX90%,即第5版)72-73->标准C(K&R《TheCProgramminglanguage》)78->ANSIC83(ANSI美国国家标准化协会)->87ANSIC->ISOC90(ISO-国际标准化组织)
版本:MicrosoftC、TurboC、BorlandC、QuickC(2)C语言既具有高级语言特性,又具有低级语言特性-中级语言。1.1C语言的发展
31.2
C语言的特点语言简洁,表达能力强,易于理解只有32个关键字,9种控制语句32个关键字:(由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile49种控制语句:if()~else~for()~while()~do~while()continuebreakswitchgotoreturn5运算符丰富34种运算符,运算能力强、效率高。算术运算符:+-*/%++--关系运算符:<<===>>=!=逻辑运算符:!&&||位运算符:<<>>~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:[]其它:()-6数据类型丰富C数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union7具有结构化的控制语句程序书写格式自由能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作语言生成的代码质量高,程序执行效率高可移植性好8例1.1编写程序,在屏幕上打印字符串“ThisisaCprogram.\n”。main(){
printf("ThisisaCprogram.\n");}1.3简单C程序介绍
9例1.2/*求两数之和*/
main() { inta,b,sum;/*定义变量*/
a=123; b=456; sum=a+b; printf(“Sumis%d\n”,sum); }
Sumis579
10例1.3求两数之最大值
main(){ inta,b,c;scanf(”%d,%d”,&a,&b);c=max(a,b);
/*调用自定义函数max*/printf(“max=%d\n”,c); }intmax(intx,inty)
/*自定义函数*/{intz;if(x>y)z=x;elsez=y;return(z); }11C程序结构C程序由函数构成必须有,且只能有一个main(主函数)总是从main函数开始执行函数由函数首部和函数体组成函数首部指定函数名、函数参数、类型函数体从{开始,到}结束函数内有语句12C程序结构(续)语句包括说明性语句、可执行语句以;表示语句结束注释可以出现在程序的任何位置
用/*和*/括起来,必须成对出现书写格式C语言没有行的概念,书写格式自由。习惯小写字母,缩进格式。131.4程序的灵魂-算法程序包括两方面内容:1.对数据的描述。数据元素及各元素之间的关系,即数据结构。2.对操作的描述。即操作步骤,也就是算法。程序=数据结构+算法程序=数据结构+算法+程序设计方法+语言工具环境说明:高级语言的数据结构是以数据类型来体现的。141.4.1算法什么是算法为解决某一应用问题而采用的解题步骤算法的描述方式
用自然语言描述算法
用流程图描述算法
用N-S结构图描述算法用计算机语言表示算法(即实现算法)例如:输出两个数中的最大数15用自然语言描述算法第一步:输入x和y的值第二步:比较x和y的值,如果x大于y,则输出x的值,否则输出y的值。
例如当描述“输出10个数中最大数”的算法时,会冗长、难于理解16图1.5用流程图描述算法用流程图描述算法NYz=yz=xx>y?开始输入x和y结束输出z起止框输入/输出框判断框处理框流程线17用N-S结构图描述算法输入x、y的值x>yTFz=xz=y输出z的值图1.7用N-S结构图描述的算法18第一章1.1引言算法的特性(1)有穷性。
(2)确定性。
(3)有效性。
(4)输入。
(5)输出。
191.4.2结构化程序设计程序的三种基本结构顺序结构程序:按照书写顺序依次执行语句选择结构程序:按照条件判断选择执行语句循环结构程序:通过条件控制循环执行语句三种基本结构的共同点:都是只有一个入口和一个出口;结构内的每一个框都有机会被执行;结构内没有死循环。20结构化程序设计的三种基本结构:1)顺序结构传统流程图N-S流程图
ABAB开始结束其中:A、B为操作框,可由一条或多条语句实现。212)选择结构(分支结构)传统流程图N-S流程图
入口出口ABP
PABTFTF其中:P为分支判断条件;
A、B必有一个且只有一个被执行;
A、B之一可是空操作,用表示。22
3)循环结构当型循环——先判断后循环,有可能一次也不循环。入口
FTPA当P为真
A出口其中:P为循环判断条件;
A为要重复执行的操作,称为循环体;23
直到型循环——先循环后判断,至少循环一次。
入口
FTPA
A直到P为真
出口其中:P为循环判断条件;
A为要重复执行的操作,称为循环体;24算法举例例:计算5!(1×2×3×4×5)
1→t1→i当i≤5t×i→ti+1→i输出t1→t1→i
t×i→ti+1→i直到i>5输出t当型循环直到型循环25结构化程序设计的基本原则:结构化程序设计的基本原则:采用自顶向下、逐步细化的方法进行设计;采用模块化原则和方法进行设计。即将大型任务从上向下划分为多个功能模块,每个模块又可以划分为若干子模块,然后分别进行模块程序的编写;每个模块都是用结构化程序实现,即都只能由三种基本结构组成,并通过计算机语言的结构化语句实现。261.5
C语言的上机操作步骤一.上机过程:编译正确正确正确有错误有错误编辑运行27C程序的执行过程
1.源程序文件的建立和编辑
编写源程序,形成.C文件需用编辑工具:tc.exe、记事本2.编译
编译源程序,形成目标程序.Obj文件需用编译工具:tcc.exe3.连接
连接OBJ文件和调用的库函数,形成运行程序
.exe
文件需用连接工具:tlink.exe4.运行
.exe
文件28装载c程序编辑c程序运行c程序(ctrl+F9)正确?看结果(alt+F5)运行下一程序?是是否退出否2.上机过程流程图:29F3(打开源程序)F2(保存当前源程序)F9(编译当前源程序)CTRL+F9(运行当前源程序)ALT+F5(查看运行结果)3.编写、运行C程序时常用功能键30三、需要记住的TC中一些常用功能键F1:帮助。
F2:将当前文件存盘。 F3:装载原有文件或给新文件命名。 F4:程序运行到光标所在行。 F5:放大或缩小活动窗口切换。F6:开或关活动窗口切换。F7:单步运行程序,跟踪进入函数内部运行。F8:单步运行程序,不跟踪进入函数内部。
第一章1.3C语言集成开发环境31实验报告实验一
[实验目的][实验内容和步骤]1.设计算法,写出程序2.在TurboC下编辑,得到源程序(.c)3.编译,得到目标文件(.obj)4.连接,得到可执行文件(.exe)5.分析结果[实验体会]32C程序设计
数据类型、运算符与表达式332.1数据类型2.2常量与变量2.3整型数据2.4实型数据2.5字符型数据2.6变量赋初值2.7混合运算2.8运算符与表达式
数据类型、运算符与表达式
CHAPTER234数据类型、运算符与表达式
C的数据类型C语言提供的数据结构是以数据类型形式出现的数据在内存中存放的情况有数据类型决定
数据的操作要依靠运算符实现,而数据和运算符共同组成了表达式。35数据类型、运算符与表达式
C的数据类型数组类型数据类型构造类型空类型指针类型双精度单精度实型(浮点型)字符型枚举类型基本类型整型结构体类型共用体类型363.2常量与变量
3.2.1常量和符号常量常量:在运行过程中,其值不能被改变的量称为常量。
分类:整型﹑实型﹑字符﹑字符串符号常量,用一个标识符代表的常量。
习惯上,符号常量名用大写,变量用小写,以示区别。-1,0,123为整型常量
4.6,-1.23为实型常量
‘a’,‘d’
为字符常量#definePRICE255A=PRICE*A+6C=PRICE+C/120PRICE是标识符,符号常量373.2.2变量变量:在程序运行过程中,其值可以改变的量称为变量。标识符:用来标识变量名、符号常量名、函数名、类型名、数组名、文件名的有效字符序列称为标识符。由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。合法的变量名如:average,abd,a,s2,
student_name,_init不合法的变量名:M.D.John,1a,#33,a>b3.C语言要求对变量“先定义,后使用”。383.3整型数据
3.3.1整型常量由一系列数字组成。也可带有减号,但不使用加号。十进制整数:123,-456,0八进制整数:以0开头的数据,如:-011,0123十六进制整数:以0x开头的数据,如:0x123
整型常量的分类根据其值的范围而决定其类型,并可以赋值给类型相匹配的整型变量。393.3.2整型变量1.整数数据在内存中的存放形式
数据在内存中是以二进制形式存放的。例如:3=(0000000000000011)2要区别:+3和-3方法是:将符号也数码化即: 正的符号+用
0表示 负的符号-用
1表示数值是以补码表示的。正数的补码和其原码的形式相同。
负数的补码:将该数的绝对值的二进制形式,按位取反再加1。-3=(11111111111111101)2402.整型变量的分类
整型…
int在内存中以二进制形式存放,每一个整型变量在内存中占2个字节。短整型…
以shortint表示或以short表示,一般与int占有的内存相同。长整形…以longint表示或以long表示,一般占有在内存中字节为int两倍。无符号型…只能存放正整数,它的表示是在上述三种类型之前加上unsigned类型名称类型符bit取值范围整型(短整型)intshort[int]16-215~215-1(-32768~32767)无符号整型unsigned[int]160~216-1(0~65535)长整型long[int]32-231~231-1无符号长整型unsignedlong[int]320~232-1413.整型变量的定义对变量的定义一般放在函数的开头部分。[例2.1]main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}a+u=22,b+u=-14不同类型的数可以直接运算424.整型数据的溢出main(){inta,b;
a=32767;b=a+1;printf(“%d,%d”,a,b);}运行结果为32767,-327683.3.3整型常量的类型①一个整常量,其值在-2^15~2^15-1内可认为是int
型,并可赋值给int
型和longint
型变量;②一个整常量,其值在–2^31~
2^31-1
范围内则认为它是longint
型,可赋值给一个longint
型变量;③常量中无unsigned
型,但一个非负值的整常量可以赋给unsigned
型整变量;433.4实型数据3.4.1实型常量1.十进制小数形式(日常记数形式)1.0+12.0-12.00.02.指数形式(科学记数形式)<尾数>E(e)<整型指数>。例如3.0E+5等。3.4.2实型变量1.类型:单精度:float,分配4Byte双精度:double,分配8Byte2.存储:指数部分小数部分
小数的符号位指数的符号位44实型数据的类型及规定
类型类型符Byte绝对值的范围有效数字单精度型float410-38~10386~7位双精度型double810-308~1030815~16位实型常量不分float和double,根据范围赋值给相应的变量。如:floata;
doubleb;
a=111111.111;b=111111.111
a中实际存储的是111111.1(7位有效)
b中实际存储的是111111.111(全部有效)453.5字符型数据3.5.1字符常量1.定义用一对单引号括起来的单个字符,称为字符常量。例如,‘A’、‘1’、‘+’等。2.转义字符C语言还允许使用一种特殊形式的字符常量,就是以反斜杠“\”开头的字符序列。\0字符串结束标志\n回车换行\t跳到下一个输出位置\"双引号字符\dddddd为1到3位八进制数所代表的字符\xhhhh为1到2位十六进制数所代表的字符463.5.2字符型变量
字符变量的类型关键字为char,一般占用1字节内存单元。
1.变量值的存储
将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。例如:charch1,ch2; /*定义两个字符变量:ch1,ch2*/ch1=’a’;ch2=’b’;/*给字符变量赋值*/’a’、’b’的ASCII码为97、98。
2.特性1)字符数据在内存中存储的是字符的ASCII码;2)C语言允许字符型数据与整型数据之间通用,可以互相赋值。3)字符数据也可以整数形式输出。47
[例1]字符变量的字符形式输出和整数形式输出。
main()
{charc1,c2;
c1='a';c2='b';printf(“c1=%c,c2=%c\n”,c1,c2);
printf(“c1=%d,c2=%d\n”,c1,c2);
}
程序运行结果:
c1=a,c2=b
c1=97,c2=9848
[例2]
大小写字母的转换。
main()
{charc1,c2;
c1='a';c2='b';c1=c1-32;c2=c2-32;printf(“%cc2=%c\n”,c1,c2);
}
程序运行结果:
AB
49数据类型、运算符与表达式
字符型数据3.5.3字符串常量用双引号括起来的字符序列。如:“Howdoyoudo”,“CHINA”,“a”,“$123.34”
等。字符串可以一次输出。如:
printf(“Howdoyoudo”);C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个‘\0’作为字符串的结束标志。在内存中,对字符串常量是采用字符数组表示,即用一个字符型数组来存放一个字符串。注意:‘a’是字符常量,“a”是字符串常量,二者不同。50综上所述,字符常量'A'与字符串常量"A"是两回事:(1)定界符不同:字符常量使用单引号,而字符串常量使用双引号;(2)长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是某个整数;(3)存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志’\0’。513.6变量赋初值在变量定义的同时可以为变量赋初值。如:inta=3;
(相当于inta;a=3;)
floatf=3.56;
charc=‘a’;
inta,b,c=5;表示只给c赋初值。(相当于inta,b,c;c=5;)523.7各类数值型数据间的混合运算
不同类型的数据(整型、实型、字符型)可进行混合运算。
如:10+‘a’+1.5-8765.1234*‘b’
必须首先将它们转换成同一类型的数值。转换原则是由低向高转换,运算结果为最高级别的类型。
doublefloatlongunsignedintchar,short表示必须要转换表示由低向高高低53数据类型、运算符与表达式
混合运算如:10+‘a’+i*f-d/eintdoubledouble–double+double54例2-5:已知:floata=2.0;intb=6,c=3;求解:a*b/c-1.5+’A’+abs(-5)=?12.0/34.0-1.52.5+65(int)67.5572.5第二章2.3运算符和表达式553.8算术运算符和算术表达式
1.基本的算术运算:+、-、*、/、%%是模运算,即求余运算,要求整数。
如:7%4的结果是3。说明:
5/3的结果仍是整数,小数部分被忽略。5.3/3或5/3.0的结果为double型。
C编译系统将实型常量作为双精度来处理。如果参加+、-、*、/运算的两个数中有一个数为实数,则结果是double型。2.算术表达式:用算术运算符将运算对象按C的语法规则连接起的式子。例如:a*b/c-1.5+‘a’优先级(算术运算):
()*/%+-在同一级别中,采取由左至右的结合方向。
如:a-b+c相当于(a-b)+c563.强制类型转换运算符可将一个表达式转换成所需类型。其一般形式为:(类型名)(表达式)例如:(double)a(int)(x+y)(float)(5%3)在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。
57练习main(){inti;floatx;x=3.6;i=(int)x;printf("x=%f,i=%d\n",x,i);}58数据类型、运算符与表达式
运算符和表达式4.自增、自减运算符
使变量的值加1或减1。如:++i,--i在使用i之前,先使i的值加(减)1i++,i--
在使用i之后,再使i的值加(减)1例如:i的值为3,则j=++i;j的值为4,i的值为4j=i++;j的值为3,i的值为4又如:printf(“%d”,++i);输出结果为4printf(“%d”,i++);输出结果为3单独使用时,i++,++i等价59第二章2.3运算符和表达式结合性:自右向左例:i=2;j=-i++;分析:(1)++、--、+、-是同级运算符,结合方向:自右向左。(2)-i++等价于-(i++)(3)对于括号内的自增运算,要先使用i,再使i增加1。运算结果:i的值为3,j的值为-2。60练习a=1,b=2,c=3,d=4下列式子的值分别是多少?a*b/ca*b%c+1++a*b-c--613.9赋值运算符和赋值表达式
1.赋值运算符:“=”。2.复合赋值运算:在赋值符号前加上其它运算符号。
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=例如:a+=3;等价于a=a+3;x*=y+8;等价于x=x*(y+8);x%=3;等价于x=x%3;赋值运算符仅优先于“,”,且具有右结合性例如:
a=b=b*c等价于:a=(b=(b*c)
)赋值号与数学中的等号含义不同例如:数学中a=b等价于b=aC语言中a=b不等价于b=a623.赋值运算中的类型转换
<实型变量>=<整型表达式>小数部分自动补0<整型变量>=<实型表达式>自动舍去实型表达式的小数部分(注意不进行四舍五入)
<字符变量>=<整型表达式><整型变量>=<长整型表达式>自动截取表达式值的低字节赋值,舍去高字节<整型变量>=<字符数据><长整型变量>=<整型表达式>自动给高字节补0或补163数据类型、运算符与表达式
运算符和表达式
4.赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。
一般形式为:<变量><赋值运算符><表达式>例如:inta=12;求下列运算的结果a+=a-=a*aa=a-a*a=12-12*12=-132)a+=-132a=a+(-132)=(-132)+(-132)=-264a=-26464练习inti=1,j=2,k=3,m=4;计算下列式子的值i+=j+kj*=k=m+565数据类型、运算符与表达式
运算符和表达式3.10逗号运算符和逗号表达式
逗号运算符又称为“顺序求值运算符”,是所有运算符中级别最低的,它将两个表达式连接起来。一般形式为:表达式1,表达式2求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。例如:a=3*5,a*4;a的值为15,表达式的值为60(a=3*5,a*4),a+5;a的值为15,表达式的值为20
又如:x=(a=3,6*3);x的值为18x=a=3,6*ax的值为3,表达式的值为1866第4章最简单的C程序设计
-顺序程序设计671C语句概述2赋值语句3数据的输入输出4字符数据输入输出5格式输入输出7程序举例
684.1C语句概述
用C语言编写的程序称为C语言源程序,简称C程序。
C语言一般由一个或若干个函数组成,而这些函数可以保存在一个或几个源程序中,这些文件都以.C作为文件扩展名。[例]求园的面积#DEFINEPI=3.1415926main(){floatr,s;r=20;s=r*r*PI;printf(“area=%f”,s);}area=1256.637C程序源程序文件1源程序文件i源程序文件n……预编译命令函数1函数n…变量申明部分执行部分(语句)语句是计算机执行的最小单位69C语句分类
和其他高级语言一样,C语言的语句也是用来向计算机发出操作命令的。一条语句经过编译后生成若干条机器指令。在C语言中只有可执行语句,没有非执行语句。C语句有以下五类:⑴控制语句,完成一定的控制功能;①if()~else~(条件语句)②for()~(循环语句)③while()~(循环语句)④do~while()(循环语句)⑤continue(结束本次循环语句)⑥break(中止执行switch或循环语句)⑦Switch(多分支选择语句)⑧goto(转向语句)⑨return(从函数返回语句)70⑵函数调用语句,由一次函数调用加一个分号构成一个语句,
如:printf(“ThisisaCstatement.”);⑶表达式语句,由一个表达式构成一个语句,
如:a=3(是表达式,不是语句)
a=3;(是语句)⑷空语句,只有一个分号,什么也不做;⑸复合语句,用{}把一些语句括起来成为复合语句。相当一条语句,哪里有语句,哪里就可用复合语句。
if(a>b){max=a;min=b;}复合语句最后一个语句中最后的分号不能忽略不写。714.2赋值语句赋值表达式后面加上分号,构成赋值语句。功能:将数据赋给变量。
如:x=3.1;a=‘d’+123+b/d;程序中基本的命令行必须是一个语句,表达式不能单独构成语句。例如:‘d’+123+b/d是一个表达式a=‘d’+123+b/d;是一个赋值语句
特点:
①C语言中的赋值号“=”作为赋值运算符;
②作为赋值表达式可以被包括在其他表达式之中;
if((a=b)>0)t=a;
③赋值语句可以连接赋值;
a=b=c=2;724.3数据输入输出的概念
1.所谓输入输出是以计算机主机为主体而言的。主机向外部设备-“输出”,外部设备向主机-“输入”。2.C语言本身不提供输入输出语句,输入和输出操作是由函数实现。C语言通过调用四个系统函数来实现输入输出。
printf(),scanf(),getchar(),
putchar()
3.在使用C语言库函数时,要用到预编译命令“#include”将有关的“头文件包括到用户源文件中。在调用标准输入输出库函数时,文件开头应有以下预编译命令:#include<stdio.h>
或#include”stdio.h”734.4字符数据的输入输出1.字符输出函数putchar()向终端输出一个字符。如:putchar(c);
输出变量c的值,c可以是字符型变量或整型变量。
[例3.1]#include“stdio.h”main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);}BOY74也可以输出控制字符,如putchar(’\n’)输出一个换行符。输出其它转义字符putchar(‘\101’);输出‘A’;
putchar(‘\’’);输出单引号putchar(‘\015’);使输出回车,不换行[例3.2]#include<stdio.h>main(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar('\n');putchar(b);
putchar('\n');putchar(c);putchar('\n');}BOY752.字符输入函数getchar()从终端(或系统隐含指定的输入设备)输入一个字符。一般形式为:getchar();
函数的值就是从输入设备得到的字符[例]#include“stdio.h”main(){charc;c=getchar();putchar(c);}aa↓76[例]从键盘上输入一个大写字母,分别用大小写字母形式输出,同时输出它们的ascii码。#include“stdio.h”main(){charc1,c2;c1=getchar();printf(“%c,%d\n”,c1,c1);c2=c1+32;printf(“%c,%d\n”,c2,c2);}A↓A,65a,97774.5格式输入与输出函数1.格式输出函数printf()按规定格式向终端输出若干个任意类型的数据。一般格式:printf(控制格式,输出列表)被输出的数据,可以是常量、变量、表达式用双引号括起的转换控制字符串,它包括两种信息:格式说明,由%开始。如:%d,%f,%c普通字符,要输出的字符printf(“%d%d”,a,b)格式说明输出列表printf(“a=%db=%d”,a,b);
控制格式输出列表78printf()格式字符格式字符说明d,i以带符号的十进制形式输出整数(正数不输出符号)o以8进制无符号形式输出整数(不输出前导符0)x,X以16进制无符号形式输出整数(不输出前导符0x)
u以无符号10进制形式输出整数c以字符形式输出,只输出一个字符s输出字符串f以小数形式输出单、双精度数,隐含输出6位小数e,E以标准指数形式输出单、双精度数,数字部分小数位数为6位g,G选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的079printf()附加格式说明字符字符说明字母l用于长整型整数,可加在格式符d、o、x、u前面m(代表一个正整数)数据最小宽度.n(代表一个正整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数-输出的数字或字符在域内向左靠例如:%ld——输出十进制长整型数%m.nf——右对齐,m位域宽,n位小数或n个字符
%-m.nf——左对齐80例1.
main()
{intx1=123;
longx2=123456;
printf("x1=%d,x1=%5d,x1=%-5d,x1=%2d\n",x1,x1,x1,x1);
printf("x2=%ld,x2=%8ld,x2=%5ld\n",x2,x2,x2);
}
程序运行结果如下:x1=123,x1=□□123,x1=123□□,x1=123x2=123456,x2=□□123456,x2=12345681例2.main(){intm=-1;longn=123456789;printf(“m=%d,%o,%x,%u\n",m,m,m,m);printf("n=%d\n",n);printf("n=%ld\n",n);}程序输出:1122a=11,b=22m=-1,177777,ffff,65535n=-13035n=12345678982例3.main(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f);printf("d1+d2=%f\n",d1+d2);}
程序运行结果如下:123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46d1+d2=3333333333333.333010 对于实数,也可使用格式符%e,以标准指数形式输出:尾数中的整数部分占一位,小数点占一位,尾数中的小数部分占5位;指数部分占4位(如e-03),共计11位。也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。83最简单的C程序设计
数据输出在使用printf()函数时要注意:有些系统要求格式字符必须用小写字母;2.格式控制符中,可包含转义字符;3.格式说明必须以“%”开头;欲输出字符%则应在“格式控制”字符串中用连续两个%表示。5.
不同的系统在实现格式输出时,输出结果可能会有一些小的差别。842.格式输入函数scanf()把从输入设备输入的数值按先后顺序存入在内存的地址中去。一般格式:
scanf(格式控制,地址列表)[例]main(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d”,a,b,c);}345↓3,4,585最简单的C程序设计
数据输入scanf()格式字符格式字符说明d,i用来输入十进制整数o用来输入8进制整数x,X用来输入16进制整数c用来输入单个字符s用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志‘\0’作为其最后一个字符。f用来输入实数,可以用小数形式或指数形式输入e,E,g,G与f作用相同,e和f、g可以互相替换86最简单的C程序设计
数据输入scanf()附加格式说明字符字符说明字母l用于输入长整型数据(可用%ld、%lo、%lx),以及double型数据(用%lf或%le)字母h用于输入短整型数据(可用%hd、%ho、%hx)域宽(为一正整数)指定输入数据所占宽度(列数)*表示本输入项在读入后不赋给相应的变量87在使用scanf()函数时要注意:Scanf()函数中的“格式控制”后面应当是变量地址;如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符;在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入;
在输入数据时,遇到以下情况时该数据认为结束:①遇空格,或按回车;②遇指定的宽度结束,如“%3d”,只取3列;③遇非法输入88[例]输入三角形的边长,求三角形的面积。
area=√s*(s-a)*(s-b)*(s-c)s=(a+b+c)/2#include"stdio.h"#include"math.h"main(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,c,b,s);printf("area=%7.2f\n",area);}3,4,6
↓a=3.00,b=4.00,c=6.00,s=6.50area=5.334.6顺序结构程序设计举例89第五章
选择结构程序设计关系运算符和关系表达式逻辑运算符和逻辑表达式If语句三种形式条件运算符Switch语句905.1关系运算符和关系表达式1.关系运算符关系运算实际上是两个量的比较,比较的结果只有两种可能:真(1)、假(0)。例如:a>3?当a=5时,比较的结果为真;当a=1时,结果为假。
C语言提供6种关系运算符<(小于)<=(小于或等于)>(大于)>=(大于或等于)==相等!=不等912.关系表达式用关系运算符或者等式运算符将两个表达式连接起来,叫关系表达式。合法的关系表达式:
a>b、a+b>b+c、(a=3)>(b=5)、(a==3)>(b==5)、‘a’<‘b’、(a>b)>(b<c)关系表达式的值是一个逻辑值,非真即假.
关系表达式5==3的值为假(在计算机中记为0);
5>=0的值为真(在计算机中记为1)。
例:a=3,b=2,c=1,
则:(1)a>b的值为1(2)(a>b)==c的值为真(即1)(3)b+c<a的值为0(4)d=a>b中d的值为a>b的值,为1。(5)f=a>b>c中f的值为1>c的值,为0。92关系、等式和逻辑运算符关于优先次序<,<=,>,>=为同一级别,==和!=为同一级别。在同一级别中,采取由左至右的结合方向。
算术运算符关系运算符赋值运算符高低[例]c>a+bc>(a+b)a>b!=c(a>b)!=ca==b<ca==(b<c)a=b>ca=(b>c)
等式运算符935.2逻辑运算符逻辑运算:产生真假值的运算。逻辑运算符:①
&&
逻辑与(AND)②||
逻辑或(OR)③
!逻辑非(NOT)“&&”和“||”是双目运算符。“!”是一元运算符.
如:
a&&ba,b同时为真,则表达式为真a||ba,b只要有一个为真,表达式为真!aa为真,则表达式为假ab!a!ba&&ba||bTTFFTTTFFTFTFTTFFTFFTTFF94关系、等式和逻辑运算符逻辑运算符的优先级!&&||
逻辑运算符“&&”和“||”低于关系运算符,“!”高于算术运算符
a>b&&x>y相当于:(a>b)&&(x>y)a==b||x==y相当于:(a==b)||(x==y)!a||a>b相当于:(!a)||(a>b)!算术关系逻辑赋值95逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。在C语言中,当判断一个量的真假时,一切非0数均被当成‘真’来处理。
例如:若a=4,则!a的值为0若a=4,b=5,则a&&b的值为1
a||b的值为1
!a||b的值为14&&0||2的值为1区分下面的表达式中算术运算量,关系运算量和逻辑运算量:
5>3&&2||8<4-!0结果为1
5>3是两个数值间的比较,结果为11&&2是两个非0值(逻辑量)间的运算,结果为11||8<4-!0,根据优先级,先计算!0,结果为196[例]判断某一年是否是闰年。条件是:能被4整除,但不能被100整除;能被4整除,又能被400整除。
用year表示年份,判断闰年的逻辑表达式为:
(year%4==0&&year%100!=0)||(year%400==0)如果给year输入一个值,使上面的表达式的值为1时,则year所代表的年份就是闰年。变换一下角度,如何判断year不是闰年?
!((year%4==0&&year%100!=0)||(year%400==0))当year的值使表达式的值为1时,则year所代表的就不是闰年。关系、等式和逻辑运算符975.3if语句if语句的三种形式if用来判断给定的条件的真假,并决定执行哪一种操作。1.if<表达式>语句条件满足时执行表达式后面的语句,然后继续执行以下的语句。条件不满足时,越过if表达式后面的语句,往下执行。表达式语句真(非0)假(0)例如:如果输入的是正数,则打印出来。if(x>0)printf("%d",x);98选择结构程序设计
if语句if语句的三种形式2.if<表达式>语句1else语句2条件满足时,执行语句1,然后继续执行if以下的语句。条件不满足时,执行语句2,然后继续执行if以下的语句。表达式语句1语句2真假PYNAB例如:输出两个数中较大的一个。if(x>y)printf("%d",x);elseprintf("%d",y);99选择结构程序设计
if语句if语句的第三种形式if<表达式1>语句1;
elseif<表达式2>语句2;elseif<表达式3>语句3;elseif<表达式4>语句4;else语句5
表达式1表达式2表达式3表达式4语句1语句2语句3语句4语句5假假假假真真真真100选择结构程序设计
if语句例如:商场促销,购物500元以上,8折;购物300元以上,85折;购物100元以上,9折;购物50元以上,95折;购物50元以下,不打折。根据消费量,计算优惠率。
设:消费量为money;折扣为cost;实际花费priceif(money>500)cost=0.2;elseif(money>300)cost=0.15;elseif(money>100)cost=0.1;elseif(money>50)cost=0.05;elsecost=0;price=money-(money*cost);101选择结构程序设计
if语句If语句的嵌套嵌套的定义:在if语句中又包含一个或多个if语句。嵌套的一般形式:If()if()语句1else语句2Elseif()语句3else语句4(注意!!If与else的配对关系。)102[例]比较两个整数的关系。#include<stdio.h>main(){intx,y;printf("EnterintegerXandY:");scanf("%d%d",&x,&y);
if(x!=y)
if(x>y)printf("X>Y\n");
elseprintf("X<Y\n");
elseprintf("X=Y\n");}103[例]输入两个数,按数值大小次序排列输出.main(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}
输入为3.6,-3.2输出为-3.20,3.60104[例]输入三个数,按由小到大次序排列并输出。main(){flaota,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);}输入为:3,7,1输出为:1.00,3.00,7.00105选择结构程序设计
程序举例[例]写一程序判断某一年是否是闰年.main(){intyear,leap;printf("输入年份:");scanf("%d",&year);if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;if(leap)printf("%disleapyear\n",year);elseprintf("%disnotleapyear\n",year);}输入年份:20042004isleapyear
106选择结构程序设计
if语句条件运算符max=(a>b)?a:b;条件表达式当(a>b)为真时,表达式取a的值当(a>b)为假时,表达式取b的值条件运算符是三目运算符
表达式1?表达式2:表达式3条件运算符的结合方向为"从右向左"
例如:a>b?a:c>d?c:d
相当于a>b?a:(c>d?c:d)
如果a=1,b=2,c=3,d=4,则条件表达式的值为4。107选择结构程序设计
if语句main(){intx,y;scarf("%d",&x);if(x==0)y=0;elseif(x>0)y=1;elsey=-1;print("x=%d,y=%d\n",x,y);}[例]
-1(x<0)
y=0(x=0)1(x>0)开始输出Y结束输入XX<0X=0Y=-1Y=0Y=1YNYN输入为:4输出为:x=4,y=1108[例]输入一个字符,判断大小写,如是大写,则转换成小写,输出。main(){charc;scanf("%c",&c);c=(c>='A'&&c<='Z')?(c+32):c;printf("%c",c)}选择结构程序设计
if语句1095.4switch语句Switch语句是多分支选择语句,也叫开关语句或者选择语句。一般形式:
switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;
…………case常量表达式n:语句n;default:语句n+1;}功能:1.计算表达式的值,与常量表达式的值比较,等于第i个值时,顺序执行语句序列i、i+1、…、n+12.若与所有常量表达式值都不相等,执行语句序列n+1。如:switch(a)
{case5:printf("&");break;case2:printf("#");break;default:printf("$");break;}如:switch(a)
{case5:printf("&");case2:printf("#");default:printf("$");}110选择结构程序设计
switch语句[例]根据成绩等级打出成绩范围.main(){chargrade;printf("Enteryourgrade\n");scanf("%c",&grade);switch(grade);{case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':printf("60~69\n");break;case'D':printf("<60\n");break;default:printf("error\n");}}输入为B输出为70
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年交通安全进幼儿园活动方案
- 2026年茶饮业市场调研报告
- 2026年秋游社会实践活动方案
- 数控系统及PROcutter切割头培训考题
- 水浴恒温振荡器的使用说明与维护保养 恒温振荡器维护和修理保养
- 2026工艺开发面试题及答案
- 数显仪表行业相关投资计划提议
- 数据要素产权界定层次论
- 四年级英语阅读理解20篇
- 数据结构课程设计(附代码)-数据结构设计说明
- T/YH 1037-2025商业小卫星产品保证要求
- 中小学正高职称评审答辩高频题及高分答案育人实践与反思
- 无仓储危险品公司安全管理制度、操作规程汇编
- 2025年福州市社区工作者招聘考试笔试试题及答案解析
- 2026年上海市嘉定区社区工作者招聘笔试模拟试题及答案解析
- 九年级上册物理期中必考-根据电路图连接实物图练习题(含答案)
- DB41-T 2379-2022 油茶主要虫害防控技术规程
- 广东省佛山市2026届高三上学期教学质量检测(一)英语试卷(含答案)
- 2025年新凯来硬件笔试题及答案
- TCTESGS-《长江流域和澜沧江以西(含澜沧江)区域河湖管理范围内建设项目防洪影响补救措施专项设计报告编制导则》编制说明
- 2025广州市科学技术局直属事业单位引进急需人才1人参考题库及答案详解参考
评论
0/150
提交评论