版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1程序设计语言初步2提纲标识符 数据类型 变量常量输入和输出表达式语句函数本章向大家介绍结构化程序设计语言的基本概念第1页/共101页3数据总线
控制路线
输入设备输出设备存储器中央处理器(CPU)运算部件控制部件地址总线
实例:编一个程序,从键盘读入两个整数,要求在屏幕上输出相乘运算结果。处理步骤:1.控制部件发命令从键盘读取数据并存储到内存储器中(输入)。2.控制部件发命令从内存储器中取出这两个数置入运算部件的寄存器中,让运算器执行加法运算,运算结果写回存储器中(处理)。3.控制部件发命令将存储在内存储器中的结果输出到显示器上(输出)。需要考虑的问题:1.输入:如何从键盘读取这两个数并将其存放到内存中?程序如何约束输入的必须是整数?2.处理:计算时如何读取内存中的这两个数?如何实现计算?计算结果如何写回内存?3.输出:如何将内存中的计算结果输出到显示器?第2页/共101页4数据总线
控制路线
输入设备输出设备存储器中央处理器(CPU)运算部件控制部件内存中数据的存取:变量数据类型输入:输入语句输出:输出语句地址总线
计算的实现:运算符表达式语句函数程序控制流程第3页/共101页5标识符是由程序员定义的单词,用来给程序中的数据、函数和其他用户自定义对象命名。程序设计语言本身会定义一些专用名称,称之为保留字或关键字,他们具有特定含义,程序员不能另做他用。如:C语言规定了32个关键字。3.1标识符第4页/共101页6#include<stdio.h>main(){
int
number1;/*变量声明*/
intnumber2;
intresult;
printf(“pleaseinputthetwonumbers:\n”);/*显示提示信息*/scanf(“%d%d”,&number1,&number2);/*从键盘读取2个整数*/result=number1*number2;/*赋值运算*/
printf(“theresultis:%d\n”,result);/*输出结果*/
return0;}用户自定义标识符C语言关键字3.1标识符第5页/共101页7不同的程序设计语言标识符格式可能不同。C语言规定:标识符由大写字母A到Z、小写字母a到z、数字0到9和下划线组成,且第一个字符必须是字母或下划线,随后的字符必须是字母、数字或下划线。且大小写敏感,如age和Age是两个不同的标识符。PASCAL语言规定:和C语言类似,只是要求第一个字符只能是字母(比C语言约束更强)。3.1标识符思考:以下哪些是合法标识符age,_class_no,
name1,name1%,2name,#age第6页/共101页8数据是程序处理的对象。数据依据其本身的特点可以归为不同的类:整数、小数、字符、字符串等。(高级程序语言特点:按照人对于数据的表达方式)
数据类型:定义了一系列的值(数据特点、范围)以及能应用于这些值上的一系列操作(数据操作)。3.2数据类型程序设计语言一般包含四种标准数据类型:整型、字符型、浮点型和布尔型。第7页/共101页9整数是由符号和一个或多个数字组成的正数或负数,又称为带符号的自然数
,如+12,-38。在数学中,整数是一个无限集合,但对于计算机来说,只能表示它的一个有限子集(决定于存储空间的大小)。整型3.2数据类型第8页/共101页103.2数据类型-整型整型数据占用的内存单元数:C语言中整型数据细分为三类:shortint、int和longint。C语言标准没有规定每一种整数类型占用的内存空间大小,只是约束到:shortint和int至少要占据16位(2字节),而long数据至少要有32位(4字节);且数据长度上,shortint<=int<=long
int。每一种整数类型占用的字节数取决于所用的机器以及C编译器。第9页/共101页11整型所允许的运算包括:
二目算术运算:+、-、*、/、%(取余); 两个整数进行二目运算后的结果还是整数, 如:125/10=12(余数5被舍弃), 125%10=5
单目算术运算:取负值等;
关系运算:<,<=,>,>=,==(相等), !=(不相等)
3.2数据类型-整型第10页/共101页12字符型字符数据包括26*2个字母(大小写)+10个数字+其它显示符号,总共95种;还有33种控制符号,总共128种符号;字符型数据在内存中的存储:实际存放的是一个整数值。多数计算机系统采用ASCII(AmericanStandardCodeforInformationInterchange)标准编码模式来对字符进行编码。每个字符占用8位内存(1个字节);3.2数据类型第11页/共101页13ASCII表LH000000010010001101000101011001110000NULDLESP0@P‘p
0001SOHDC1!1AQaq
0010STXDC2“2BRbr
0011ETXDC3#3CScs
0100EOTDC4$4DTdt
0101ENQNAK%5EUeu
0110ACKSYN&6FVfv
0111BELETB,7GWgw
1000BSCAN)8HXhx
1001HTEM(9IYiy
1010LFSUB*:JZjz
1011VTESC+;K[k{
1100FFFS’<L\l|
1101CRGS-=M]m}
1110SORS.>N^n~
1111SIUS/?O_oDEL2000H2002H2004H2003H2001H01000001存储空间该存储区存放字符‘A’思考:若从键盘上输入字符存储到内存,字符到二进制数的转换是谁来实现的?第12页/共101页14ASCII(‘A’)=65 ASCII(‘a’)=97大写字母的ASCII编码+32=小写字母的ASCII编码
字符型所允许的运算包括(将字符型数据当作整数对待):
算术运算:ch2=ch1-32(ch1值为‘b’,则ch2=‘B’)
ch2=ch1-1(ch1值为‘b’,则ch2=‘a’)
ch2=ch1+1(ch1值为‘b’,则ch2=‘c’)
3.2数据类型-字符型第13页/共101页153.2数据类型-字符型关系运算(按照ASCII大小): <,<=,>,>=,==,!= 例如:‘A’<‘a’
结果为真(非零),因为‘A’的ASCII是65,‘a’的ASCII是97,65<97第14页/共101页16浮点型浮点型是带小数部分的数字类型,如3.14,1.575E5(科学计数法,即1.575*)。C语言支持三种不同长度的浮点数据类型:float、double和longdouble。其中float一般占32位(4字节);double一般占64位(8字节),longdouble占96位(12字节)。三者区别:越后面的类型运算精度越高,但占用的内存单元越多。3.2数据类型第15页/共101页17浮点型所允许的运算包括:
二目算术运算:+、-、*、/; 浮点型数据进行二目运算结果还是浮点型。如:12.0/5.0=2.4
单目算术运算:取负值
关系运算:<,<=,>,>=,==,!=
3.2数据类型-浮点型第16页/共101页183.2数据类型-布尔型程序中往往需要测试某个条件是否成立。这个条件往往用一个表达式来定义,这个表达式的值要么为真,要么为假。布尔类型数据:取值只有两种,真(True)或者假(False)。允许的运算包括:与、或、非。绝大多数程序设计语言中有布尔类型这种数据类型。如Pascal语言。但是C语言没有定义这种数据类型。第17页/共101页19标准类型是原子的、不可再分的。程序员可以以标准类型为基本构件,构造出复杂的数据类型。如C语言有:结构、数组、联合、文件等这些我们将来会学到的复杂类型,PASCAL语言有:结构、数组、集合、文件等复杂数据类型。3.2数据类型-复杂数据类型第18页/共101页203.3变量数据总线
控制路线
输入设备输出设备存储器中央处理器(CPU)运算部件控制部件输入数据、中间运算结果、最终结果程序需要将输入数据、中间运算结果以及最终结果暂时保存在内存单元中。地址总线
程序如何实现从内存单元存取数据?第19页/共101页213.3变量当程序要读写内存中的数据时,可以直接使用内存地址来读取,但这样太麻烦!如果用名字来代替地址,在程序中出现的是代表内存空间的名字,让编译器来跟踪数据实际存放的物理内存地址,就可以简化编程--变量第20页/共101页22变量是内存中存储空间的名字,该存储空间用来存放被加工的数据或处理的结果。变量用来代表内存存储空间。程序中对变量的操作(读和赋值)实际上是对存储空间的读写操作。2000H2002H2004H2005H2007H2006H2003H2001Hsexagescore内存用sex代表地址为2000H的内存单元,score代表地址为2004H~2007H的一片内存空间。用变量来实现对这些内存空间数据的存取。3.3变量第21页/共101页23一、变量定义
使用变量来对内存数据进行存取前,必须先定义变量,目的是建立变量和存储空间的对应关系。变量定义指明变量的名称和数据类型(变量代表的存储空间存放的数据的类型)。要求变量的名称遵循标识符命名原则。不同语言中变量定义的写法不一样,C语言格式: 数据类型变量名1[,变量名2,…];3.3变量思考:变量定义时要指明哪些内容?charsex;intage1,age2;floatscore;数据类型变量名分号必须多个变量用逗号分割第22页/共101页24注意,变量定义仅引起内存存储空间分配,但此时变量中存储的值是无意义的!变量定义引起存储分配。定义后,变量就用来代表内存中的一片存储单元。3.3变量2000H2002H2004H2005H2007H2006H2003H2001Hsexagescore存储空间charsex;intage;floatscore;第23页/共101页25二、变量赋值3.3变量C语言示例:charsex;intage;floatscore;变量赋值:把一个值写入变量代表存储空间。C语言变量赋值格式:变量名=表达式sex=‘F’;age=18;score=89.5;2000H2002H2004H2005H2007H2006H2003H2001Hsexagescore存储空间ASCII(‘F’)=77)771889.5变量的值第24页/共101页263.3变量变量使用特点先定义,后使用。
intage; 定义一个变量为整数类型。如未定义,则在编译时被查出,认为非法。变量未被赋值前,值是无意义的。对变量赋值过程是“覆盖”过程,用新值去替换旧值。读取变量代表的存储空间数据(又称读取变量的值):age=age+1;读出变量的值,该变量保持不变。
第25页/共101页273.3变量试解释下列操作的含义读取变量内容写入变量给变量赋值修改变量内容第26页/共101页28C语言允许变量在定义时进行初始化。初始化语句用来给变量赋初始值。例如:charsex;intage=16;floatscore;
3.3变量2000H2002H2004H2005H2007H2006H2003H2001H16存储空间sexagescore第27页/共101页29#include<stdio.h>main(){
intnumber1;/*变量声明*/
intnumber2;
intresult;
printf(“pleaseinputthetwonumbers:\n”);/*显示提示信息*/scanf(“%d%d”,&number1,&number2);/*从键盘读取2个整数*/result=number1*number2;/*赋值运算*/
printf(“theresultis:%d\n”,result);/*输出结果*/
return0;}3.3变量第28页/共101页303.3变量找出下述变量定义的错误:
floatfchar‘A’,‘B’;第29页/共101页31charsex;intage;floatscore变量类型变量名总结:变量三要素:变量名(存储空间)、数据类型(存储空间存放的数据的类型)、变量值(存储内容)3.3变量2000H2002H2004H2005H2007H2006H2003H2001H701889.5存储空间变量的值sexagescore第30页/共101页32一、文字常量文字常量是指在程序中未被命名的值。例:circumference=2*length*width;其中2就是一个文字常量,length和width是变量三类常量:文字常量、命名常量、符号常量3.4常量第31页/共101页33二、命名常量 和变量类似,命名常量也是内存存储空间的名字,代表一片内存存储空间,但一般不允许程序去改变该存储空间中的数据。C语言中定义一个命名常量:
main() {
constfloatpi=3.14;
……}3.4常量2000H2002H2004H2005H2007H2006H2003H2001H3.14存储空间pi第32页/共101页34#include<stdio.h>main(){
constfloatpi=3.14;/*常量定义*/
floatradius;/*变量定义*/
floatarea;
printf(“pleaseinputtheradius:\n”);/*显示提示信息*/scanf(“%f”,&radius);/*从键盘读取半径*/
area=pi*radius*radius;/*赋值运算*/
printf(“theareais:%f\n”,area);/*输出结果*/system(“pause”);
return0;}第33页/共101页35符号常量是仅含有符号名称的值,不存储在内存。 C语言中符号常量定义:#defineAVESCORE85
if(score<AVESCORE)……编译时,预处理程序能够将所有出现该符号名称的地方用值替换:if(score<85)……使用符号常量的好处:使程序易读性好、容易维护。三、符号常量3.4常量第34页/共101页363.4常量#include<stdio.h>#definePI3.14//常量定义,注意结束处无分号main(){floatradius;/*变量定义*/
floatarea;
printf(“pleaseinputtheradius:\n”);/*显示提示信息*/scanf(“%f”,&radius);/*从键盘读取半径*/area=PI*radius*radius;/*赋值运算*/
printf(“theareais:%f\n”,area);/*输出结果*/system(“pause”);
return0;}
第35页/共101页37四、常量的类型 和变量一样,常量也有类型。大多数程序设计语言使用整型、浮点型、字符型和字符串型常量。 C语言中四种常量: 15 整型常量 15.4 浮点型常量 ‘A’ 字符型常量 “Hello”字符串型常量文字常量和符号常量的值体现了常量的类型3.4常量第36页/共101页38如果整型常量以0开头,C编译器会认为该常量是八进制数。如040即十进制的32。如果整型常量以0x开头,C编译器会认为该常量是十六进制数。如0xFF即十进制的255。#include<stdio.h>#defineX040#defineY0XFFmain(){printf(“X=%d,Y=%d”,X,Y);
system("pause");return0;}3.4常量X=32,Y=255请按任意键继续...第37页/共101页39常量小测试下述常量定义哪些是错误的?为什么?#defineratio=1/3 #defineratio1/3;#define1st_character'$'#defineif7不能有=号;不能有语句结束符;号标识符只能以字符或者下划线开头If是C语言规定的关键字,有特定含义,用户不能随便使用第38页/共101页40数据总线
控制路线
输入设备输出设备存储器中央处理器(CPU)运算部件控制部件地址总线
3.5输入和输出(I/O)一个真正有用的程序一般会从输入设备接收数据、并将运算结果输出到输出设备中。为了实现和输入输出设备的通信,程序必须要有输入和输出语句。一个既无输入又无输出的程序是没有用的。第39页/共101页41输入和输出语句最基本的功能在于从外界环境将值读入一个变量,或者将一个值写出到外界环境中。
3.5输入和输出(I/O)第40页/共101页42一、输入通过语句或者预先定义的函数可以从外界接收值。C语言输入函数举例:
scanf(格式控制,输入项地址表);如:scanf(“%d”,&number1);用于从键盘读取一个整数并存储在变量number1中。
3.5输入和输出(I/O)第41页/共101页43scanf(“%d”,&number1);当程序遇到该指令时,程序等待用户从键盘输入一个整数,然后将值存储到变量number1中。%d:格式指示符(formatcode),用于告诉程序 键入的将是一个整数;&:取变量地址运算符,&number1表示变量 number1的首地址。注意:书写程序时不要遗漏&.3.5输入和输出(I/O)第42页/共101页44用scanf语句从键盘同时读入年龄和性别:scanf(“%d%c”,&age,&sex);scanf(“%d,%c”,&age,&sex);3.5输入和输出(I/O)10S10,S从键盘输入的内容要和格式控制串匹配。如果在“格式控制”字符串中除了格式指示以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。如:空格scanf(“age=%d,sex=%c”,&age,&sex);age=10,sex=S第43页/共101页45二、输出通过语句或者预先定义的函数可以将值输出到外界。C输出函数举例:printf(格式控制,输出项表);功能:将字符串显示在显示器上。程序员可以将一个或多个变量作为待输出字符串的一部分。输出项表:可以是常量、变量、表达式、函数调用。3.5输入和输出(I/O)第44页/共101页46如: printf(”Yourageis:%d”,age);注意,在输出时%d不输出,而是被变量age的值代替。假设变量age的值是18,则显示器上将输出字符串“Yourageis:18”
注意:此处变量age前面没有&!3.5输入和输出(I/O)上机练习:如果上述语句改写成printf(”Yourageis:”,age);输出将是怎样?第45页/共101页473.5输入和输出(I/O)可以用printf语句输出常量、变量、表达式、函数调用的值:printf(“theageragescoreis%d”,SCORE);//输出常量printf(“yourageis%d”,age);//输出变量printf(“thevalueof(2+3)<10is:%d\n”,(2+3)<10);//输出表达式的值printf(“thesizeofintis:%d”,sizeof(int));//输出函数返回值第46页/共101页48若想同时输出年龄和性别,则语句可写为:printf(
“Yourageis:%d,yoursexis:%c”,age,sex);显示器上将输出字符串“Yourageis:18,yoursexis:F”
3.5输入和输出(I/O)常用的输入输出语句格式控制中的格式指示符:%d:整型;%c:字符型;%f:浮点型输入输出后面会再详细讲解,有兴趣的同学可参见《C程序设计教程》的9.3和9.11。第47页/共101页49找出以下程序的错误main(){ printf(“inputiandj\n”);scanf(“i=%d”,i);scanf(“%d”,j);printf(“i=%d,j=%d”,i);system(“pause”);}变量i和j未定义就使用;scanf(“%d”,&i);或者scanf((“i=%d”,&i)scanf(“%d”,&j);3.printf(“i=%d,j=%d”,i,j);第48页/共101页50#include<stdio.h>main(){
intnumber1;/*存放整数1*/
intnumber2;/*存放整数2*/
intresult;/*存放结果*/
printf(“pleaseinputthetwonumbers:\n”);/*显示提示信息*/
scanf(“%d%d”,&number1,&number2);/*读取整数*/result=number1*number2;/*赋值运算*/
printf(“theresultis:%d\n”,result);/*输出结果*/
return0;}2000H2004Hresult2002H2005H2007H2006H2003H2001H存储空间number1number21020pleaseinputthetwonumbers:theresultis:2001020200任务描述:输入两个整数,求两数之积并输出。/**/:注释main()函数变量定义部分操作部分编译后,源程序中出现number1、number2和result的地方将会用内存相对地址(非真正物理地址)替换,真正的物理地址由操作系统分配。指令执行时用相应的寻址方式去取变量中存储的操作数。编译程序怎么处理变量?操作系统怎么分配内存?指令中有哪几种寻址方式?深入学习:《编译原理》+《操作系统》+《计算机组成原理》假设操作系统已经分配如下内存空间用于存放操作数和结果程序运行过程演示第49页/共101页51输入输出练习:定义三个变量,分别是整型、浮点型、字符型。要求从键盘输入三个值存放到这三个变量里,并且输出这三个变量。main(){inti;floatf;charc;scanf(“%d,%f,%c”,&i,&f,&c);printf(“theresultis:\n”);printf(“i=%d,f=%f,c=%c”,i,f,c);system(“pause”);return0;}第50页/共101页52main(){inti;floatf;charc;printf("inputi,f\n");scanf("%d,%f",&i,&f);printf("inputc\n");scanf("%c",&c);printf("theresultis:结果是\n");printf("i=%d,f=%f,c=%c",i,f,c);system("pause");return0;}请同学们看看本程序的输出是什么?inputi,f10,3.14inputctheresultis:i=10,f=3.140000,c=请按任意键继续...程序并没有给用户输入字符数据的机会。为什么?第51页/共101页53解决方法:用getchar函数来“消耗掉”回车符main(){inti;floatf;charc;printf("inputi,f\n");scanf("%d,%f",&i,&f);printf("inputc\n");getchar();scanf("%c",&c);printf("theresultis:结果是\n");printf("i=%d,f=%f,c=%c",i,f,c);system("pause");}inputi,f10,3.14inputcytheresultis:i=10,f=3.140000,c=r请按任意键继续...结果正确!第52页/共101页54表达式是由运算符、操作数和括号组成的、计算求值的基本单位。 如:3+5就是一个值为8的表达式。典型的几类运算符和表达式: 算术运算符和算术表达式; 关系运算符和关系表达式; 逻辑运算符和逻辑表达式; 赋值运算符和赋值表达式;3.6表达式操作数:可以为常量、变量、函数或表达式第53页/共101页553.6表达式一、算术运算符和算术表达式算术运算符:+、-、×、/、%(取余)等;算术表达式:由算术运算符、操作数和括号构成的表达式。如:(2+8.2/3)*4,10%4(余数为2)+(加)-(减)*(乘)/(除,取商)%(取模)++(自加,加1)--(自减,减1)第54页/共101页563.6表达式-算术表达式(b*b-4*a*c)/(2*a)要注意编程序式,对算术表达式的书写和平时的书写方式可能是不一样的:第55页/共101页57在C语言中,算术运算的操作数可以是整数、字符或者浮点数。如果表达式中的操作数全是整数,则表达式的值为整数;如果操作数至少有一个是浮点数,则表达式的值为浮点数。3.6表达式-算术表达式求以下表达式的值:1)102/202)102%203)1/24)1.0/25)x=‘A’+32(x是整型变量)求以下表达式的值:1)102/20=52)102%20=23)1/2=04)1.0/2=0.55)x=‘A’+32x=97思考:如果表达式的操作数有整数和字符,运算结果是什么类型?第56页/共101页583.6表达式-算术表达式C语言中,整型、字符型、浮点型数据可以进行混合运算.如:5+1.0+'A'=71.000000 混合运算涉及到数据类型的转换,具体将在以后介绍。自加运算符++和自加运算符—是C语言特有的运算符,将在以后介绍。第57页/共101页593.6表达式二、关系运算符和关系表达式关系运算符:用于比较两个数据的大小关系。关系表达式:用关系运算符将两个表达式连接起来构成的表达式,如(2+3)<10;运算结果是逻辑值真或者假。在C语言中,若运算结果是逻辑“真”,则关系表达式的值为1;若为逻辑“假”,则值为0。
<(小于)<=(小于等于)>(大于)>=(大于等于)==(等于)!=(不等于)第58页/共101页603.6表达式-关系表达式思考:以下语句的输出结果是什么?printf("thevalueof(2+3)<10is:%d\n",(2+3)<10);printf("thevalueof(2+3)==10is:%d\n",(2+3)==10);thevalueof(2+3)<10is:1thevalueof(2+3)==10is:0第59页/共101页613.6表达式三、逻辑运算符和逻辑表达式逻辑运算符:与、或、非
&&(与)a&&b:当且仅当两个运算量a和b的值都为“真”时,运算结果为“真”,否则为“假”(如何判断运算量值是否为真?)||(或)a||b:当且仅当两个运算量a和b的值都为“假”时,运算结果为“假”,否则为“真”。!(非)!a:当运算量a的值为“真”时,运算结果为“假”;当运算量a的值为“假”时,运算结果为“真”C语言中,只要运算量值为非零,即为真。值为0,即为假第60页/共101页623.6表达式-逻辑表达式运算量a和b可以是常量、变量、表达式、函数。逻辑表达式:用逻辑运算符将简单的关系表达式 连接起来构成的表达式;运算结果 是逻辑值真或者假;
第61页/共101页633.6表达式-逻辑表达式intmain(){inta=1,b=2,c=4,f;printf(“a=%d,b=%d,c=%d\n",a,b,c);f=(a<b)&&(b<c);
printf("f=(a<b)&&(b<c),f=%d\n",f);f=(a>b)||(b>c);
printf("f=(a>b)||(b>c),f=%d\n",f);printf("!(a>b)is:%d\n",!(a>b));
printf("!ais:%d\n",!a));system("pause");}输出结果?a=1,b=2,c=4f=(a<b)&&(b<c),f=1f=(a>b)||(b>c),f=0!(a>b)is:1!ais:0思考:printf("thevalueofa<b<cis:%d\n",a<b<c);第62页/共101页64四、赋值运算符和赋值表达式
赋值运算符:用于将值存储到变量中;赋值表达式:带有赋值运算符的表达式;3.6表达式第63页/共101页653.6表达式运算符优先级问题: 表达式a>20&&a%5==0的值?优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符
如:i=a>20&&a%5==0相当于: i=((a>20)&&((a%5)==0)) 如何理解:对算术运算结果进行关系运算,关系运算结果进行逻辑运算,以上运算结果赋值给变量(赋值运算)。后续会详细介绍。
第64页/共101页66表达式小测试写出下列表达式:1)i被j整除;2)m是偶数;3)y[-100,-10],且y[10,100];4)判断x年是否是闰年的条件: a)能被4整除但不能被100整除;或b)能被100整除且能被400整除;5)将整型变量i和j相除后的结果赋值给整型变量t;i%j==0m%2==0y<-100||(y>-10&&y<10)||y>100(x%4==0&&x%100!=0)||(x%100==0&&x%400=0)(x%4==0&&x%100!=0)||(x%400=0)5.t=i/j第65页/共101页67字符型数据操作测试#include<stdio.h>main(){charch1=’A’,ch2=’S’;/*‘A’的ASCII是 65,'a'的ASCII是97,'S'的ASCII是83*/printf("\n%c,%d",ch1,ch1);printf("\n%c,%d",ch2,ch2);printf("\n%c,%d",ch1+32,ch1+32);printf("\n%d",ch1<ch2);printf("\n%d%c",ch1-ch2,ch1-ch2); system(“pause”);} 请写出程序运行结果A65S83a971-18由于ch1-ch2得到的结果是负数,所以以字符形式输出时无对应字符!第66页/共101页68请写出判断一个字符c是否是字母的逻辑表达式(c>‘a’&&c<‘z’)||(c>‘A’&&c<‘Z’)字符型数据操作测试第67页/共101页69语句用于向计算机发出操作指令。一条语句经编译后产生一条或多条机器指令。一个实际的程序可能包括若干条语句。C语言规定了6类语句:
表达式语句、复合语句、选择语句、 循环语句、标记语句、跳转语句3.7语句第68页/共101页70一、表达式语句
表达式:算术表达式、关系表达式、逻辑表达式、 赋值表达式。
表达式语句:在一个表达式末尾加上分号“;”(分号是C语言中语句的结束符)。i<j;(无意义)i=i+10*j;(赋值表达式语句)3.7语句第69页/共101页71如果表达式涉及到赋值(存在赋值运算符或运算符++或--,如i=i+10*j;),则将计算得到的值保存到变量中。如果不涉及赋值(如语句i<j;)
,则值将被丢弃3.7语句第70页/共101页72二、复合语句
复合语句是包含零个或多个语句的代码单元,使得一组语句成为一个整体,也被称为块。在C语言中,复合语句由一个左大括号、可选语句段、一个右大括号组成。如:
{
i=1; j=2*i; }3.7语句第71页/共101页73三、选择语句
3.7语句在写程序时,有时往往需要测试某一个条件是否成立,然后根据检测结果来控制程序后续执行路径。此时要用到选择语句。C语言中选择语句有:
1)if-else语句2)switch语句(以后再讲)第72页/共101页741)if-else
实现双路选择if(表达式){语句组1}else{语句组2}b)C语句a)流程图表达式语句组1语句组2真(非0)假(为0)表达式可以是任一种表达式;表达式的值为非零时,表示表达式为真;否则为假。3.7语句第73页/共101页753.7语句(1)if语句中的“表达式”必须用“(”和“)”括起来。(2)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。(3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。第74页/共101页76if(表达式){
语句1;语句2;
…}else{语句n;语句n+1;
…}表达式:一般是关系表达式和逻辑表达式语句:输入输出语句;赋值语句;if语句;第75页/共101页77例3.3输入一个整数,判别它是否能被3整除。若能被3整除,输出YES;若不能被3整除,输出NO。
#include<stdio.h>main(){intn;/*定义变量n*/printf(“inputn:”);/*输入提示*/scanf(“%d”,&n);/*输入整数到变量n中*/
if(n%3==0)printf(“n=%dYES\n”,n);/*若n能被3整除,则输出“YES”*/elseprintf(“n=%dNO\n”,n);/*若n不能被3整除,则输出“NO”*/system(“pause”);return0;}inputn:20n=20NO第76页/共101页78main(){intn;/*定义变量n*/printf("inputn:");/*输入提示*/scanf("%d",&n);/*输入整数到变量n中*/if(n<=0)printf("\nerrorinput!thenumbershouldbepositive");else{if(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,则输出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,则输出“NO”*/}system("pause");}改动:输入一个正整数,判别它是否能被3整除。若输入的不是正整数,则提示出错信息;否则,若能被3整除,输出YES;若不能被3整除,输出NO。
{}内可以有多条语句;如果只有一条语句,则{}可以省略通过缩进来更好地展示代码结构第77页/共101页79main(){intn;/*定义变量n*/printf("inputn:");/*输入提示*/scanf("%d",&n);/*输入整数到变量n中*/if(n<=0)printf("\nerrorinput!thenumbershouldbepositive");elseif(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,则输出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,则输出“NO”*/system("pause");}else和离它最近的if匹配第78页/共101页80main(){intn;/*定义变量n*/printf("inputn:");/*输入提示*/scanf("%d",&n);/*输入整数到变量n中*/if(n<=0)printf("\nerrorinput!thenumbershouldbepositive");elseif(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,则输出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,则输出“NO”*/system("pause");}嵌套的if-else语句的另外一种写法第79页/共101页81练习1:输入一个字符,如果是小写字母,则输出为:thisisalower-caseletter;如果是大写字母,则输出为:thisisaupper-caseletter;如果是数字,则输出为:thisisadigit;若是其他,则输出为:thisisneitheraletternoradigit.第80页/共101页822)switch
实现多路选择常量表达式的值必须是C语言中的整型、字符型或者枚举类型。switch(表达式){case常量表达式1:语句组1;[break;]case常量表达式3:语句组2;[break;]······case常量表达式n:语句组n;[break;]default:语句组n+1;}方括号表示其内的语句可选图3.5switch语句3.7语句第81页/共101页83switch(sex){case0:printf(“hello,boy!");break;case1:printf("hello,girl");break;default:printf(“invalidsex”);}switch语句实例:3.7语句第82页/共101页84四、循环结构语句
3.7语句有时程序中需要多次运行同一段代码。这种控制结构称为循环结构。C语言提供了三类用于实现循环结构的语句:1)while2)do-while3)for(以后再讲)第83页/共101页851)while
语句组表达式真(非0)假(为0)图3.6while语句while(表达式){语句1;语句2·····}a)流程图b)C语句3.7语句此处的表达式可以为任意一种表达式;如果表达式值为真(非0),则执行语句组;执行完后再测试表达式,如果仍为真(非0),则再次执行语句组;直到表达式为假(为0)。第84页/共101页86#include<stdio.h>#defineN10main(){ inti=0;
while(i<=N){ printf("%d",i);i=i+1;}system(“pause”);return0;}while语句实例:输出0~N之间的整数(N>0)程序运行结果是什么?2000H2002H2004H2003H2001H存储空间i注意此处没有分号012…第85页/共101页87练习:输入一个正整数,判别它是否能被3整除。若输入的不是正整数,则提示出错信息,并请用户重新输入,直到输入一个正整数。若该正整数能被3整除,输出YES;若不能被3整除,输出NO。程序主体:
scanf(“%d”,&n); while(n<=0){ printf(“……”); scanf(“%d”,&n); }第86页/共101页88#include<stdio.h>main(){intn;/*定义变量n*/printf("inputn(n>0):");/*输入提示*/scanf("%d",&n);/*输入整数到变量n中*/while(n<=0){printf("\nerrorinput!thenumbershouldbepositive");printf("\ninputn(n>0):");scanf("%d",&n);}if(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,则输出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,则输出“NO”*/system("pause");return0;}练习:输入一个正整数,判别它是否能被3整除。若输入的不是正整数,则提示出错信息,并请用户重新输入;否则,若能被3整除,输出YES;若不能被3整除,输出NO。第87页/共101页89练习2:输入起止年份,输出这两年之间的闰年。用while结构实现。闰年的条件是: a)能被4整除但不能被100整除;或b)能被100整除且能被400整除;第88页/共101页9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025餐饮创新配方商业秘密保护合同范本3篇
- 装修管理商业物业2025年度合同2篇
- 2025年度高端餐饮店长专业聘用合同3篇
- 新时代家庭教育的艺术-探究亲子沟通能力提升途径
- 科技引领下的人才培养体系构建与实践
- 提升学生应对挑战的自我管理能力
- 科技助力学前儿童早期教育创新教学方法与实践
- 2025年度临时仓储租赁及节能环保设施升级合同4篇
- 电子商务专业把握互联网商业机遇
- 2025年版集装箱船船员劳动合同范本3篇
- 2024-2025学年八年级上学期1月期末物理试题(含答案)
- 商场电气设备维护劳务合同
- 2023年国家公务员录用考试《行测》真题(行政执法)及答案解析
- 2024智慧医疗数据字典标准值域代码
- 年产12万吨装配式智能钢结构项目可行性研究报告模板-立项备案
- 医疗器械经销商会议
- 《±1100kV特高压直流换流变压器使用技术条件》
- 《风电场项目经济评价规范》(NB-T 31085-2016)
- 五年级上册脱式计算100题及答案
- 制单员工作总结
- 数据挖掘(第2版)全套教学课件
评论
0/150
提交评论