教学材料《C语言》-第三章_第1页
教学材料《C语言》-第三章_第2页
教学材料《C语言》-第三章_第3页
教学材料《C语言》-第三章_第4页
教学材料《C语言》-第三章_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.1

C语句概述

语句可以用来对数据进行处理,经编译后能产生一组机器指令。本章将介绍控制语句、函数调用语句、表达式语句、复合语句、空语句以及赋值语句等语句的功能和语法。掌握语句是编程的基础。在程序的执行过程中,常常需要由用户输入一些确定的数据,程序依据这些数据进行计算处理,并将处理结果返回用户,由此实现人机交互的功能。因此在程序设计过程中,数据的输入/输出是必不可少的。C语言中没有专门的输入/输出语句,所有的输入/输出操作都是通过调用C的标准库函数中的输入/输出函数实现的。最基本的输入/输出函数有:scanf()/printf()(格式输入/格式输出),getchar()/putchar()(字符输入/字符输出),gets()/puts()(字符串输入/字符串输出)(见6.3节)等。本章除了介绍语句的功能和语法,还将详细讨论格式化输入/输出函数,并开始进行简单的程序设计。下一页返回3.1

C语句概述

语句是C程序中的基本功能单位。C语言的语句用来向计算机系统发出操作指令,完成一定的操作任务。一条语句经编译后产生若干条机器指令。声明部分不是语句,它不产生机器指令,而只是对变量的定义声明。正如第1章中所介绍,一个函数包含声明部分和执行部分,执行部分由语句组成。而一个C程序可以由若干个源程序文件(分别进行编译的文件模块)组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成(关于“全局变量”“预处理命令”将在后续章节介绍),一个函数由数据定义和执行语句组成。C程序结构如图3.1所示。C语句分为控制语句、函数调用语句、表达式语句、空语句和复合语句五类。上一页下一页返回3.1

C语句概述

1.控制语句C语言是一种非常简洁的语言,它共分为以下9个流程控制语句,此处只作简单介绍,将在后续章节详细介绍各语句的功能和用法。(1)if()…else…

(条件语句)(2)for()…(循环语句)(3)while()…(循环语句)(4)do…while(循环语句)(5)switch(多分支选择语句)(6)continue(结束本次循环语句)(7)break(中止执行switch或循环语句)(8)goto(转向语句)(9)return(从函数返回语句)上一页下一页返回3.1

C语句概述

这9种形式中的括号“()”表示括号中是一个“判断条件表达式”,“…”表示此处有内嵌的语句。例如,“while()…”的具体语句可以写为while(x>y)y=2+y;其中,“x>y”是判断条件表达式,“y=2+y;”是内嵌语句。现实世界需要解决的问题往往需要在多个操作中选择一个(或重复执行一系列)操作,可以通过上述控制语句来完成程序中语句的执行次序,从而完成控制功能。上一页下一页返回3.1

C语句概述

2.函数调用语句函数调用语句由函数名、实际参数加上分号“;”组成。函数调用语句的格式:函数名(参数列表);执行函数语句就是调用函数体,并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值(将在第7章详细介绍)。例如:printf("VeryGood!");∥调用库函数,输出字符串printf("Result=%d,%f",123,4.56);∥调用库函数,输出变量的值上一页下一页返回3.1

C语句概述

3.表达式语句表达式语句由任何表达式结尾加上分号“;”构成。分号是表达式语句不可缺少的组成部分,在C语言中,“;”是语句的结束符而不是语句的分隔符。语句格式:表达式;执行表达式语句就是计算表达式的值。例如:a=1,b=a+2;

/∗逗号表达式语句:顺序计算a,b的值∗/x=y+10;/∗赋值语句:计算y+10的值,并赋给x∗/i--;/∗后缀自减表达式语句:i的值减1∗/上一页下一页返回3.1

C语句概述

4.空语句空语句由一个分号“;”组成。空语句是表达式语句的一种特例。空语句的格式:;空语句表示什么操作也不做。从语法上讲,它的确是一条语句。在程序设计中,若某处从语法上需要一条语句,而实际上不需要执行任何操作时就可以使用它。在设计循环结构时,有时用到空语句。例如,语句“whilegetchar='\n'”的功能是:只要从键盘输入的字符不是回车符,就重新输入。这里的循环体为空语句。上一页下一页返回3.1

C语句概述

5.复合语句用一对大括号括起一条或多条语句,无论有多少条语句,都只被看成一条语句。执行复合语句实际是执行该复合语句一对大括号中的所有语句。复合语句的“}”后面不能出现分号,而“}”前的复合语句中最后一条语句的分号不能省略,即复合语句不需要以“;”结束。例如:{t=a;a=b;b=t;}{a=50;printf("%d",a);}上一页返回3.2赋值语句

赋值语句是在赋值表达式后加一个分号而构成的。赋值语句的格式:<变量>=表达式;赋值语句的处理过程是先计算“=”右边表达式的值,将值类型转换成“=”左边变量的数据类型后,赋值给该变量。赋值语句完成C语言的计算功能,并将计算结果赋值给变量,必要时自动进行数据类型的转换,赋值后,无论原来变量值为多少,都将以新值取代。例如:a=300;y=(-b+sqrt(b∗b-4∗a∗c))/(2∗a);在C语言中,赋值语句的使用应注意以下两点:(1)赋值号“=”是一个运算符。(2)区分赋值表达式与赋值语句。赋值表达式的末尾没有分号,而赋值语句的末尾必须有分号。赋值表达式可以包括在其他表达式之中,而赋值语句不行。例如,“if((a=c)<0)b=a;”是合法的,而“if((a=c;)<0)b=a;”是错误的。返回3.3字符数据的输入/输出

字符输出函数putchar()和字符输入函数getchar(),以一个字符的字符代码为单位来完成字符数据的输入/输出过程。字符输入/输出函数定义在头文件stdio.h中,所以当程序使用这些函数时,必须在main()之前或本文件之前使用“包含文件”:#include<stdio.h>或#include"stdio.h"。下一页返回3.3字符数据的输入/输出

3.3.1字符输出函数putchar函数是对单个字符进行输出的函数。它的作用是将指定的表达式所对应的字符输出到终端(一般为显示器),常见的格式:putchar(c);其中,putchar()必须带有输出项c;c为字符型或整型常量或变量以及表达式。当c为字符型常量或变量时,输出的是参数c的值;当c为整型常量或变量以及表达式时,输出的是ASCII码值等于c的字符。上一页下一页返回3.3字符数据的输入/输出

【例3-1】输出单个字符。上一页下一页返回3.3字符数据的输入/输出

程序说明:语句“putchar('\n');”的作用是输出一个换行符,使输出的当前位置移到下一行的开头。语句“putchar('\101');”的作用是输出转义字符'\101'所对应的字符A。【注意】(1)putchar函数输出的数据只能是单个字符,不能是字符串。(2)被输出的字符常量必须用单引号括起来。(3)当输出项是表达式的时候,可以写成a+'32'等形式。(4)putchar函数可以输出能在屏幕上显示的字符,也可以输出控制字符和转义字符。上一页下一页返回3.3字符数据的输入/输出

3.3.2字符输入函数getchar函数是对单个函数字符进行输入的函数。它的作用是从终端(键盘)输入一个且只能是一个字符,getchar函数没有参数,函数的值就是从输入设备得到的字符。常见的格式:getchar();函数值可以赋给一个字符变量,也可以赋给一个整型变量。上一页下一页返回3.3字符数据的输入/输出

【例3-2】用函数getchar输入单个字符赋给变量ch。上一页下一页返回3.3字符数据的输入/输出

程序说明:程序运行时,如果从键盘上输入B,则按〈Enter〉键后,字符'B'将送入内存,并在屏幕上显示字符B。【注意】(1)getchar函数只能接收单个字符,不是一串字符,输入一串字符时,只接收第一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式使用。例如,语句“putchar(getchar());”。(2)getchar()函数是没有参数的库函数,但是()不能省略。(3)用户输入的字符只有在按〈Enter〉键后,输入的字符才有效。(4)从键盘上输入数据给字符型变量时,不能输入单引号,否则变量将接收单引号。上一页返回3.4格式的输入/输出

字符输入/输出函数只能对单个字符进行操作,若对其他数据类型的数据进行输入/输出,则需要使用格式化的输入/输出函数,这两种函数不仅可以输入/输出各种类型的数据,还可以控制数据的输入/输出格式。下一页返回3.4格式的输入/输出

3.4.1格式输出函数1.格式输出函数的一般形式printf函数是格式化输出函数,其功能是按用户的要求格式输出指定的数据项,按从右至左输出。printf函数的函数原型在头文件“stdio.h”中,在使用printf函数之前必须包含stdio.h文件。printf函数调用的一般形式:printf("格式控制字符串",输出表列);其中,格式控制字符串是用双引号括起来的字符串,用于指定输出格式。格式控制字符串由格式控制字符和普通字符组成。格式控制字符是以%开始的字符串,在%后面接各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。上一页下一页返回3.4格式的输入/输出

例如,%d表示按十进制整数形式输出;%f表示按小数形式输出单、双精度实数;%c表示按字符形式输出;等等。普通字符将原样输出到显示器,在显示中起提示作用。在输出表列中,给出各个输出项,每个输出项之间用逗号隔开,要求格式字符串和各输出项在个数和类型上一一对应。上一页下一页返回3.4格式的输入/输出

2.格式输出函数的格式字符printf函数中的格式控制字符总是由“%”字符开始,并以一个类型描述符结束,中间是一些可选的附加说明项。其完整格式:%[-][0][m.n][l/h]格式字符上一页下一页返回3.4格式的输入/输出

在C语言中,对不同类型的数据使用不同的格式控制字符。常用的有以下几种格式字符:1)d格式符d格式符是指以十进制形式输出整数数据,有以下几种形式:(1)%d。按十进制整数数据的实际长度输出。(2)%md。m表示输出字段宽度。若实际位数小于m,则左边补空格;若大于m,则按实际位数输出。例如:printf("%3d,%3d",a,b);当a=34,b=1234时,输出结果为<空格>34,1234上一页下一页返回3.4格式的输入/输出

(3)%-md。m表示输出字段宽度。若实际位数小于m,则右边补空格;若大于m,则按实际位数输出。例如:printf("%-3d,%-3d",a,b);当a=34,b=1234时,输出结果为34<空格>,1234(4)%ld。输出长整型数据。长整型数据如果用%d输出,就会发生错误,因为整型数据的范围为-32768~32767。而长整型数据的范围为-2147483648~2147483647,所以长整型数据应当用%ld格式输出。对于长整型数据,也可以指定字段的宽度。例如:上一页下一页返回3.4格式的输入/输出

2)u格式符u格式符是指输出unsigned型数据(即无符号数),以十进制整数形式输出。3)x格式符x格式符是指以十六进制整数形式输出,同样可以有“%x”“%lx”等形式,不会输出带负号的十六进制数。4)o格式符o格式符是指以八进制形式输出,数值在内存单元中以补码形式存放,不会输出带负号的八进制整数。上一页下一页返回3.4格式的输入/输出

【例3-3】整型数据格式符的用法。上一页下一页返回3.4格式的输入/输出

运行结果:【注意】以八进制、十六进制格式输出结果时,并不在数据结果前面加0和0x。如果想在结果中输出前导0和0x,则可以通过添加附加格式符“#”实现。上一页下一页返回3.4格式的输入/输出

5)f格式符f格式符是指以小数形式输出单、双精度实数。有以下几种形式:(1)%f。不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。(2)%m.nf。指定输出的数据共占m列,其中有n位小数。如果值长度小于m,则左端补空格。(3)%-m.nf。与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。(4)%lf。按双精度输出。上一页下一页返回3.4格式的输入/输出

6)e(或E)格式符e(或E)格式符是指以指数形式输出单、双精度实数,基本形式为%e、%m.ne。7)g(或G)格式符g(或G)格式符是指根据实数大小自动选择f格式或e格式输出单、双精度实数。上一页下一页返回3.4格式的输入/输出

【例3-4】浮点型数据格式符的用法。上一页下一页返回3.4格式的输入/输出

8)c格式符c格式符是指输出一个字符,形式有、%c、%mc。9)s格式符s格式符是指输出一个字符串。有以下几种形式:(1)%s。(2)%ms。输出的字符串占m列。若字符串本身长度大于m,则突破m的限制,将字符串全部输出;若字符串长小于m,则左端补空格。(3)%-ms。如果字符串长小于m,则在m列范围内,字符串向左端靠,右端补空格。(4)%m.ns。输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左端补空格。(5)%-m.ns。其中m、n含义同上,n个字符输出在m列范围的左侧,右端补空格。如果n大于m,则m自动取n值,即保证n个字符正常输出。上一页下一页返回3.4格式的输入/输出

printf函数的格式符号及其作用归纳如表3.1所示。在printf函数的格式说明中,“%”与格式说明字符之间可以插入长度格式说明字符,归纳如表3.2所示。printf函数的格式说明中,“%”与格式说明字符之间可以插入宽度和精度格式说明字符,归纳如表3.3所示。printf函数的格式说明中,“%”与格式说明字符之间可插入的标志符及其作用如表3.4所示。【注意】(1)对于printf函数,除了X、E、G外,其他格式字符必须用小写字母。例如,%f不能用%F。(2)可以在printf函数中的“格式控制”字符串内包含转移字符。(3)如果想输出“%”,则应该在“格式控制”字符串中用连接两个%表示。例如,执行语句“printf("a=%f%%",1.0/3);”后,输出“0.333333%”。上一页下一页返回3.4格式的输入/输出

3.4.2格式输入函数scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言在使用scanf函数之前需要包含stdio.h文件。scanf函数的一般形式:scanf("格式控制字符串",输入项地址表列);其中,格式控制字符串的作用与printf函数相同,用于规定数据输入的格式,由转换说明符和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输入数据的数据类型(格式字符)。输入项地址表列给出各变量的地址或字符串首地址。这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址之间用逗号分隔,输入格式和变量类型要保持一致。地址是由地址运算符“&”后接变量名组成的。例如,&x、&y分别表示变量x和变量y的地址。这个地址就是编译系统在内存中给x、y变量分配的地址。上一页下一页返回3.4格式的输入/输出

在C语言中,应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。在赋值表达式中给变量赋值,在赋值号左边是变量名,不能写地址,如a=567;scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。【注意】(1)scanf函数使用地址量接收数据。(2)输入数据的间隔为回车符、Tab、空格,不能为“,”。(3)允许在格式符中插入附加字符。(4)对于输入unsigned型数据,不用%u,而用%d、%o、%x。指定数据长度时,系统自动截取。(5)在%后加“∗”,表示跳过相应的数据。(6)输入数据不能规定精度。上一页下一页返回3.4格式的输入/输出

【例3-5】格式输入函数的用法。上一页下一页返回3.4格式的输入/输出

scanf函数的格式字符归纳如表3.5所示。scanf函数的附加格式说明字符归纳如表3.6所示。上一页返回3.5顺序结构程序设计举例

下面介绍几个顺序结构程序设计的例子。【例3-6】输入两个整数a和b(设a=100,b=17),求a除以b的商和余数。下一页返回3.5顺序结构程序设计举例

【例3-7】从键盘上输入一个大写字母,将其小写字母输出。分析:程序的作用是将一个大写字母转换为小写字母。从ASCII码表中可以看到每一个小写字母比它相应的大写字母的ASCII码值大32。C语言允许字符数据与整数直接进行算术运算。即′A′+32会得到整数97,′a′-32会得到整数65。上一页下一页返回3.5顺序结构程序设计举例

上一页下一页返回3.5顺序结构程序设计举例

【例3-8】以下程序由终端输入两个整数给变量x和y,并输出x和y,在交换变量x和y的值后输出x和y,验证两个变量中的数是否正确地进行了交换。上一页下一页返回3.5顺序结构程序设计举例

上一页下一页返回3.5顺序结构程序设计举例

程序说明:在程序中交换x和y两个变量中数,不可以简单地用“x=y;y=x;”两条语句来实现,语句“x=y;”执行的结果是将把y中的值复制到x中,使y和x变量中具有相同的值,x中原有的值丢失,因此无法实现两个数的交换。为了不丢失x中原有的值,必须在执行语句“x=y;”前把

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论