C 语 言 教 案2017.ppt_第1页
C 语 言 教 案2017.ppt_第2页
C 语 言 教 案2017.ppt_第3页
C 语 言 教 案2017.ppt_第4页
C 语 言 教 案2017.ppt_第5页
已阅读5页,还剩446页未读 继续免费阅读

下载本文档

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

文档简介

考核方式考核方式: :闭卷笔试+上机,期末笔试成绩 占70%,上机与作业共占30%。 答疑时间:周三下午 16:0017:30 答疑地点:机械学院 508室 本课程教学安排 祝爱萍:办公室:机械学院 508室 电 话 第一章第一章C语言概述 第二章第二章数据类型、运算符与表达式 第三章第三章最简单的C程序设计 第四章第四章逻辑运算和判断选取控制 第五章第五章循环控制 第六章第六章数组 第七章第七章函数 第八章第八章C的指针 第九章第九章C的文件 目 录 C语言程序设计课程简介 C语言是当今使用最广泛的高级语言,是操作 系统、编译系统等大型复杂系统的首选语言。实 践证明,用该语言编写的程序,灵活、方便、简 洁、高效、数据结构丰富、功能齐全。C语言自 问世以来,很快就流行于全世界,并为各种规模 的通用计算机所必备。 同时,C语言以其灵活方便的特点,成为培 养学生计算机语言思维,了解计算机编程思想的 最佳语言,它已被当今国内外众多主要高校列为 各理工科专业必修课程。 第第 一一 章章 C C 语语 言言 概概 述述 【学习目标学习目标】通过本章的学习,学生应该能通过本章的学习,学生应该能 够:掌握够:掌握C C语言的主要特点、语言的主要特点、C C 语言程序的结构以及语言程序的结构以及C C程序的执程序的执 行过程和行过程和C C语言的上机步骤。语言的上机步骤。 本章作业:P15习题5,7 重点和难点是:C语言程序的结构以及C程序 的上机方法。 解决方法:课堂演示教学。 课外指导:指导学生上机练习,熟悉C程序 的使用环境。 教学效果检测方法:观测学生上机操作的 熟练程度。 一、一、C C语言的特点:语言的特点: 二、简单的二、简单的C C程序介绍:程序介绍: 三、三、C C程序的执行过程程序的执行过程 : 四、四、C C语言的上机步骤:语言的上机步骤: 本章主要内容: C语言的特点: 1.语言简洁紧凑,使用方便灵活。C语言一共只 有32个关键字,9种控制语句,且书写形式自 由,编写的源程序短,输入程序时工作量小。 3.数据结构丰富(链表,树,栈等),data类型 也较多,整型,实型,字符型,逻辑型,数组 型,指针型,结构体类型,公用体类型等,有 可实现现代化语言的各种结构。 2.共有34种运算符,具有较强的运算功能。 C语言的特点: 4. C语言编制的程序可以实现程序的模块化, 符合现代编程要求。 6. 既有高级语言的特点(可移植性好),又有 低级语言的许多功能(能对硬件操作)。 5. C语法限制不严,程序设计自由度大。如整 型量,字符量及逻辑型变量等可以通用,但 对程序设计员的要求高些。 简单的C程序介绍 main( ) /*主函数*/ int a,c; /*声明部分,定义变量*/ a=9; c=a*a+6; printf(“%dn”,c); /*输出 c的值*/ 例1: BACK 简单的C程序介绍 main( ) /*主函数*/ int a, b, c; /*声明部分,定义变量*/ scanf (%d,%d, /*输入a和b的值*/ c=max(a, b ); /*调用max函数并将函数值赋给c*/ printf(max=%d,c); /*输出 c的值*/ 例2: int max(int x, int y) /*定义max函数,函数值为整型,形式参数x, y为整型*/ int z; /*max函数中的声明部分,定义本函数中用到的变量z为整型*/ if (xy ) z=x; else z=y; return (z); /*将z的值返回,通过max带回调用处*/ 简单的C程序介绍 1. C程序由函数构成,一个C源程序至少包含 一个main函数,也可以包含一个main函数 和若干个其他函数。 3. C程序书写格式自由,一行内可写几个语句, 一个语句也可分写在多行,且不必写行号。 2. main函数可放在C源程序的任何位置,都表 示该程序从这里开始执行。 简单的C程序介绍 4. 每个C语句最后必须有一个分号(包括最后 一个语句在内)。 7. 在C语言中,大小写字母是不通用的,C语言 的保留字必须要使用小写。 6. 可在语句之后用符号/*/对C程序作注释, 以增加程序的可读性,/与*之间不能有空格。 5. C语言无in/out语句,in/out由scanf、printf 等其它库函数完成。 例1、指出下列程序中的几处错误 main( ) INT sum; /* compute result sum=25+37-19; /* display Result * / printf(“the answer is %dn”,Sum) 简单的C程序介绍 int */ sum ; */ 例2、指出下面程序的输出结果 main( ) int answer, result; answer=100; result=answer-100; printf (“the result is %dn”,result+5); 简单的C程序介绍 输出结果:the result is 5 C程序的执行过程 源程序:用户用C语言编制的原始程序,其后 缀一般定为.C。 编译程序:也是一种程序,用于分析由特定计 算机语言开发的程序,然后把此程序翻译成在 特定计算机中执行的适当形式。 操作系统:是一种程序,它控制计算机系统的 整个操作,所有的I/O通道操作都要通过操作 系统来实现,操作系统还要控制计算机系统的 资源和程序的执行,UNIX操作系统是目前最 常用的操作系统之一,主要用C语言编写,很 容易移植到不同的计算机系统上。 开始 编辑源程序 编译源程序(将.C文件汇编为.OBJ) 出错否? N 链接(与系统库的其它目标程序连接,形成.EXE文件) 运行程序 结果正确否? Y 结束 y N C程序的执行过程 注意:编译只能发现语法错误, 不能发现算法错误。 C语言的上机步骤 例1:编写一个C程序,在屏幕上输出以下信息: * * * * * * * * * * * Very good! * * * * * * * * * * * main( ) printf( “* * * * * * * * * * n”); printf( “* Very good! *n”); printf( “* * * * * * * * * *n”); LI1.C 20 P P 1515: :5 5,7 7 本章上机练习题: 第二章 数据类型、运算符 与表达式 【学习目标】通过本章的学习,学生应该能够: 熟悉C语言的数据类型和常量、变 量的定义方法;掌握C语言的各种 运算符和它们的优先级,以及表 达式的构成规则。 重点和难点是:数据类型、运算符、赋值表 达式、逗号表达式。 解决方法:多结合实例教学。 课外指导:结合学生上机练习,适当多布置 习题。 教学效果检测方法:通过给学生答疑和质 疑,观测学生对本章 重点和难点内容掌握 的程度。 2.1 C2.1 C的数据类型的数据类型 2.2 2.2 常量与变量常量与变量 2.3 2.3 整型数据整型数据 2.4 2.4 实型数据实型数据 2.5 2.5 字符型数据字符型数据 本章主要内容: 2.6 变量的赋值 2.7 各类数值型数据之间的转换 2.8 算术运算符和算术表达式 2.9 赋值运算符和赋值表达式 2.10 逗号运算符与逗号表达式 本章主要内容: 25 数据结构+算法=程序 C语言中以 “数据类型”形式存在 对数据的描述对操作的描述 什么是数据类型? 26 所谓数据类型是按被定义 变量的性质,表示形式,占据 存储空间的多少,构造特点来 划分的。 C的数据类型 整型 字符型 基本类型 实型(浮点型)单精度型 双精度型 数据类型 枚举类型 数组类型 构造类型 结构体类型 共用体类型 指针类型 空类型 C的数据类型 在程序中对用到的 所有数据都必须指 定其数据类型. 常量与变量 常量:在程序运行中,其值不可能被改变的 量称为常量。如任何数字值、单个字 符或字符串及转义符均为常量。 一、 常量与符号常量 直接常量( 字面常量): 12, -44.6, a, “Hello!”, n 符号常量:用一个标识符代表一个常量。 常量与变量 类型:常见的常量类型有: int,char,float(double); 字符常量与转义符要用单引号引起来; 字符串要用双引号括起来。 符号常量:用标识符代表的一个常量,此标识符 必须先定义后使用,定义格式为: #define PRICE 30 (宏定义命令) 常量与变量 宏定义#define的作用域由定义的起始位 置至宏定义解除(#undef 标识符)处 或本程序末尾。 注: #define为宏定义命令,表示用标识符 (又称符号)PRICE来代表常量30。 宏定义命令#define必须写在函数的最 前面,且此句之后不带分号。 常量与变量 习惯上符号常量用大写,变量用小写, 以示区别。 在宏定义的作用域内,该符号(标识符) 不能再被重新赋值。 符号常量的定义 格式:#define 常量名 字面常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a 习惯上常量名用大写, 变量名用小写。 符号常量的定义放在 函数外面。 习惯上常量名用大写, 变量名用小写。 二、变量 常量与变量 定义:程序执行过程中其值可以被改变的量称 为变量。 变量的定义:C语言中所有变量都必须先定义 后使用。 标识符:C 语言中用来标识变量名,函数名, 数组名,类型名,文件名的有效字符 序列称为标识符。 标识符规定:只能由字母,数字,下划线三种 字符组成,且第一个字符必须为 字母或下划线。 常量与变量 变量的基本类型有:int , float , char , enum. 标识符长度:系统不同,允许的长度不同,一般 取长度8即可,标识符大小写不 通用。 关键字:就是具有特定含义的标识符,用户不 能用来作自定义标识符。(类似于自然语言中 的有特定意义的单词、词汇),常用的有: 与数据类型有关的: char,int,float double,signed,unsigned,short,long void,struct,union,typedef,enum,sizeof 与存储类别有关的: auto,extern,register, static 与程序控制结构有关的:do,while,for if,else,switch,case,default goto,continue,break,return 常量与变量 例:指出以下哪些是非法变量名? value$ sum piece flag s5_9 3sp _sy5tem int $为非法变量名字符 变量名中间不允许有空格 不允许数字打头 C语言中的保留名或关键字 例如: 合法标识符: _22A,lea_1,avg3,day,ABCde43xyw8 不合法标识符: M.J.YORK,$_238,#xy,a*b,8Tea 整型数据 一、整型常量: 2.八进制整数:由正负号与07共8个数字组成, 且八进制整常量第一个数字一定为0,例-011, 终端输出时printf中的格式为%o(字母o)。 1. 十进制整数:由正负号与09共10个数字组 成,终端输出时printf中的格式为 %d。 整型常量即整常数(可正可负),C中的int 常量有三种形式:十进制、八进制、十六进制。 整型数据 十六进制整数:由正负号与0F共16个字符组成, 此类常数最前面要由数字0与字 母x引导,如:-0x12, 输出函数 printf 中格式规定为%x。 二、整型变量: 有四类:int, short(int), long(int), unsigned(int) 或:unsigned(short)、 unsigned (long ) 。 各类型整 型变量所 占内存字 节数,在C 语言中没 有统一规 定,看P43 表3.1 。 整型数据 类型比特 数bit 最小取值范围 signed int16-3276832767 即-215(215-1) Unsigned int 16065535 即0(216-1) signed short int16-3276832767 即-215(215-1) Unsigned short int16065535 即0(216-1) long int32-2147483648 2147483647 即-231(231-1) Unsigned longint3204294967295 即0 (232-1) 思考:int a=20000,b=20000,c; c=a+b; c的值为多少? 如果c定义为long型是否能解决问题? 三、整型常量与变量的关系: 整型数据 3若short型长度与int数范围相同,则它们可互 相赋值。 2常量在-231231-1之间可以赋给long int型变 量(32位)。 1常量在-215215-1之间可以赋给int和long int 型变量(16位)。 5在一个整常量后面加字母l或L,则此整常 量被认为是long型常量。 整型数据 4非负的整常量可以赋给相应的unsigned变 量。 实型数据 一、实型常量:有两种表示方法: 1.十进制表示形式:由小数点、正负号和十个 数字表示,必须有小数点,小数点最前面和 最后面的0均可省,但小数点不能单独出现。 2.指数形式:由十进制数,加阶码标志“e”或 “E”以及阶码(只能为整数,可 以带符号)组成,如: a E n 其中:a为十进制数,n为十进制整数, 表示的值为 a*10n 。 实型数据 指数形式(科学计数法):由数字、正负号、 小数点和字母e或E组成。要求字母e或E 的 两边必须有数(1也不可省), e或E后面的数字 必须为整数(可带正负号),最多可以是3位, 此数字代表10的幂次。 例:1.23E+5=123 103 说明: 实型数据 二、实型变量:(浮点数) 有float和double两种。其中: long double有效数字为19位,占16个字节。 double实数提供16位有效数字,在内存中占8 个字节。 float实数一般在内存中占4个字节。(32位) float实数提供7位有效数字,赋值时当多余7位 数字,则7位以上的数字对变量无意义。 实型数据 C规定:如果将一个浮点数赋给整型变量,则 系统自动将该浮点数的小数部分截取。 实型数据存在舍入误差: 如果将一个整数赋给实型变量,则在 数值上不会引起任何变化。 三、 整数与浮点数的转换: main() float a,b; a=1.23456789e10; b=a+20; printf(“%f” ,b); 实型数据 注意:应当避免将一个很大的数和一个很小的 数直接相加减,否则就会“丢失”小数。 输出结果为:123456788848.000000 字符型数据 一、字符常量:有两类: 1单个的ASCII字符:用单引号引起来, 在内存中以ASCII码值的形式存储, 看P374附录。 2以反斜杠“ ”开头的字符系列:他们是 一些特殊字符的转义字符,看P40表3.1。 字符型数据 例 3.5 转义字符的使用。 转义字符是一种特殊的字符常量。转义 字符以反斜线“”开头,后跟一个或几个字符 。用来表示那些用一般字符不便于表示的 控制代码。 将 后面的字符转换 为另外的意义.即是 一种控制符号. 字符形式含义ASCII代码 n 换行,将当前光标位置移到下 一行开头 10 t 横向跳格或水平制表符(跳到下 一个tab位置) 9 b 退格,将当前位置移到前一列8 r 回车,将当前位置移到本行开头13 f 换页,将当前位置移到下页开头12 反斜杠字符“”92 单引号(撇号)字符39 双引号字符34 ddd 1到3位8进制数所代表的字符 xhh 1到2位16进制数所代表的字符 main( ) printf(abctderftgn); printf(htibbjk); 字符型数据 程序运行时在显示屏上得到的结果是: f gde h j k 程序运行时在打印机上得到的结果是: fab c gde h jik 二、字符变量:用char定义 每一个字符变量只能存放一个字符,不能存 放字符串,字符串需用数组来存放。 可以给字符变量赋0255的正整数。因为这 是ASCII码值。看P50例3.6和 例3.7。 字符变量显示时,可用格式%c显示字符本身, 也可用%d显示字符的ASCII码值。(当ASCII 值在0127时显示ASCII码值,若ASCII值在 128255时显示-128-1)。 字符型数据 字符型数据 例 3.6 向字符变量赋以整数。 main( ) char cl,c2; cl=97; c2=98; printf(%c %cn,cl, c2); printf(%d %dn,cl, c2); 程序运行时输出结果是: a b 97 98 例 3.7 大小写字母的转换。 main( ) char cl,c2; cl=a; c2=b; cl=cl-32; c2=c2-32; printf(%c %c,cl, c2); 字符型数据 程序运行时输出结果是: A B 字符型数据 三、字符串常量与变量: 字符串常量:用双引号引起来的字符序列。 字符串在内存中存放时,系统会自动为字符 串末尾加上结束符O,但书写时不加O,显 示也不会出现任何操作。例:a与“a”不同。 其中:a在内存中以一个字节61H(97)存储, “a”用2个字节61H和00H存储。 字符串常量值若要存放在变量中,必须用字符 数组来存放。做P65题3.63.8。 main( ) char cl=a,c2=b, c3=c; char c4=101, c5=116; printf(a%cb%ctc%ctabcn,cl,c2,c3); printf(tb%c %c,c4,c5); 3.6 写出以下程序运行的结果。 aabbccabc AN 程序的运行结果为: 3.7 要将“China”译成密码,密码规律是:用原 来的字母后面第个字母代替原来的字母。 例如,字母“”后面第个字母是“”, 用“”代替“”。因此,“China”应译为 “Glmre”。请编一程序,用赋初值的方法使 c1、c2、c3、c4、c5五个变量的值分别为 、h、i、n、a,经过运算, 使c1、c2、c3、c4、c5分别变为G、l、 m、r、e,并输出。 main( ) char c1=C, c2=h, c3=i; char c4=n, c5=a; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(密码是 %c%c%c%c%cn,c1, c2, c3,c4, c5); 程序的运行结果为: 密码是 Glmre 3.8 例3.6能否改成如下:运行时显示什么内容? 为什么? main( ) int cl,c2; (原为char cl, c2) cl=97; c2=98; printf(%c %cn,cl,c2); printf(%d %dn, cl,c2); 解:可以。因为在可输出的字符范围内,使 用整型和使用字符型作用相同。 输出结果是: a b 97 98 变量的赋值 程序中常需要对变量赋予初值,C中赋初值 的方法有以下几种: 在定义变量的同时赋值。 例:float b=3.14; int a,b,c=5; 在变量定义之后再为变量赋值。 例:int a,b,c; a=b=c=1; 不可以在定义变量时,同时给多个变量赋值. 例:int a=b=c=1; (Turbo C不认可) 62 转换规则 doublefloat long unsigned intchar,short 高 低 1、纵向向上的箭头表示不同类型的 转换方向(由低类型转化为高类 型),不表示转换所经的步骤。 2、横向向左的箭头表示必定的转换。 说明: 必定的转换 运算对象类型 不同时转换 各类数值型数据之间的转换 C中允许int,float,double和 char型数据混合运算,运算时 首先必须将不同类型转化为同 一类型方可进行运算,转化的 规则见右图,转化过程由系统 自动进行。 doublefloat long unsigned int char,short 高 低 图中横向向左的箭头是运算 过程中必定要进行的转化过 程。 图中纵向箭头表示当运算对 象为不同类型时的转化方向。 1、算术运算符 + - * / % 2、关系运算符 = | -i; 功能为在使用i值之前先使i的 值加1(或减1)-前置 例:i=3; j=+i;则有: j=4; i=4 i+; i-;功能为先使用i的值,之后再 使i的值加1(或减1)-后置 例:i=3 ;j=i+;则有: j=3; i=4 算术运算符和算术表达式 一个变量进行自增或自减运算时,当单独构 成语句而不是作为一个表达式时,运算符前 置或后置不影响变量本身的值,即 +i与i+ 都等价于i=i+1,-i与i-都等价于i=i-1。 算术运算符和算术表达式 无论前置或后置,是单独构成语句或作为一 个表达式时运算后,变量本身的值都是相同 的,但会影响表达式的值。 说明: 使用时需要注意: +或-是单个运算符,所以他们之中不能有空 格,否则会被看成两个+或两个-对待。 +或-运算符只能用于变量,而不能用于常量 和表达式,如5+或(a+b)均违法。 自增自减运算符有副作用,因为此类运算符在 运算时不仅可以向外提供一个值,而且同时还 改变了运算分量自身的值,正确使用可使程序 简练,使用不当会出现意想的结果。 算术运算符和算术表达式 例1:x=+i+i ; 对于第一个i,其值先加1,对于第二个i值, 是使用自加前的i值还是使用自加后的i值, 与具体实现有关,结果不确定。所以编程 时尽可能将此副作用隔离,使之仅在一个 小范围内起作用。 如上面语句可改为:+i; x=i+i;或x=2*(+i) 算术运算符和算术表达式 例2:k=(i+)+(i+)+(i+) , 设i=3 (ZJ.c) 在Turbo C 和 ms C上: k=9, i=6 k=18, i=6 当表达式中连续出现多个+或-时,C编译在处 理时尽可能多的自左而右将若干个字符组成 一个运算符。 算术运算符和算术表达式 k=(+i)+(+i)+(+i) , 设i=3 (ZJI.c) 在Turbo C 和 ms C上 : 设a=3,b=(+a)+(a+),则有:b=8,a=5 例:x=i+j; 理解为:x=(i+)+j; 最好写成 :x=(i+)+j;或:x=i+ +j; 函数调用时,实参数的求值顺序因不同的系 统而不同,要注意上机试试。 例:printf(“%d,%d” ,i,i+) ;设i=3 (ZJ2.c) 自左至右求值顺序的系统输出结果为:3,3 自右至左求值顺序的系统输出结果为:4,3 , TC为此结果.(求值顺序与输出顺序概念不同) 算术运算符和算术表达式 +和-为右结合性。 例:printf(“%d”,-i+) ; (ZJ3.c) 当i=3时问上述语句执行后的结果及i的值。 输出结果:-3,但i变为+4,先使用i值后 自加 右结合时,-i+相当于:-(i+) 而左结合时,-i+相当于:(-i)+ 算术运算符和算术表达式 赋值运算符和赋值表达式 一、简单赋值运算符“=”及其表达式: int型数据赋给float型变量,数值不变,以浮 点形式存到变量中。 float型数据赋给int型变量,则小数自动舍弃。 赋值时注意类型转换: 此运算符功能为:将赋值号右边的常量或变量或 表达式的值赋给左边的变量。 char型数据赋给int型变量:一般将符号位扩 展到高8位,但对于unsigned int最高位补0。 赋值运算符和赋值表达式 将符号数赋给长度相同的无符号变量时,数值 (连同符号)原样照赋,只是赋值后,原来数值 中的符号(例负号),现在变为数值的最高位了。 无符号数unsigned int赋给long int 型变量,最 高位补0即可。 带符号的int型数据赋给long int型变量:,对 long int型的高16位进行扩展。 二、复合赋值运算符:有十类 它们的格式为:算术运算符或位运算符再加上 “=” ,共有以下10种: += ,-= ,*= ,/= ,%= , =,=, x*=y+8 a=a+3; x=x*(y+8) 赋值运算符和赋值表达式 例:设a=12,计算赋值运算a+=a-=a*a后a的值=? 解:上面表达式要经过两步计算,如下计算过程: 先计算a-a*aa:所以a=a-a*a=12-12*12=-132 再计算a+aa:此时 a=-132 所以 a=a+a=-132+(-132)=-264 赋值运算符和赋值表达式 . 写出下面表达式运算后a的值,设原来 a。设a和n已定义为整型变量。 (1) a+=a (2) a-=2 (3) a*=2+3 (4) a/=a+a (5) a%=(n%=2), n的值等于5 (6) a+=a-=a*=a 24 10 0 0 0 60 逗号运算符与逗号表达式 逗号表达式:由逗号运算符连接起来的表达式 称为逗号表达式。 功能:连接两个或两个以上的表达式。 格式为:表达式1,表达式2,表达式n。 注:整个逗号表达式的值是所有表达式中最 后一个表达式n的值,如下例; a=3 x=(3*5,a*4) ? a,x a=3,x=12 a=3 x=(a=3*5,a*4) ? a,x a=15,x=60 表达式的值为60 x=(a=3*5,a*4),a+5); ? a ,x a=15,x=20 表达式的值为20 a值未变,a=15 x=a=3,6*a;? a,x a=3,x=3 表达式的值为18 逗号运算符与逗号表达式 printf(“%d, %d, %d” ,a,b,c); printf(“%d, %d, %d” ,(a,b,c),b,c); 并非所有地方的逗号均为运算符,要会分辨。 看下面两个printf中(a,b,c)的区别: 所学运算符的优先级 括号 单目运算符(+、):右结合 双目运算符( *、/ 、%、+、):左结合 条件运算符(三目运算符 ? :):右结合 赋值运算符(=):右结合 豆号运算符(,):左结合 高 低 写出下面程序的运行结果。 #include void main( ) int i,j,m,n; i=8; j=10; m=+i; n=j+; printf(%d,%d ,%d ,%d n,i,j,m,n); 本周上机练习题: 【学习目标学习目标】通过本章的学习,学生应 该能够:熟练掌握输入输 出语句的功能和格式,了 解顺序结构的C程序。 第三章 最简单的C程序设计 本章对C程序作一个概括的简介 重点和难点是:输入输出函数的功能和格式。 解决方法:告诉学生这部分内容应当熟记。 课外指导:布置上机练习题,要求学生自我 检查内容掌握的程度。 教学效果检测方法:结合课堂提问,观测学 生对本章重点和难点内 容掌握的程度。 本章作业:P83习题 38 3.1 C3.1 C语言语句概述语言语句概述 3.2 C3.2 C程序的三种基本结构程序的三种基本结构 3.3 3.3 赋值语句赋值语句 3.4 3.4 数据输出数据输出 3.5 3.5 数据输入数据输入 3.6 3.6 简单的简单的C C程序举例程序举例 本章主要内容: 函数调用语句:由一个函数名加一个分号构成。 表达式语句:由一个表达式加一个分号构成。 C语言语句概述 C语言的语句用来向计算机系统发出操作命 令。在C中,语句可分为5大类: 控制语句:完成一定控制功能,有9种语句:if else,for,while,do while,goto, continue,break,switch,return。 空语句:只有一个分号,什么操作也不进行,可 用作程序的转向点,也可用在循环中。 C语言概述 复合语句:由一个花括号和上面四种语句组成。 常用于选择和循环中。 C程序的三种基本结构 目前广泛流行结构化程序设计方法,以使程 序结构清晰、易懂,且可提高程序设计的质量和 效率。结构化程序设计由若干个基本结构组成, 最常见的有三种基本结构: 顺序结构:程序按编写的先后顺序执行。 循环结构:据条件决定执行或重复执行某一段程 序,常用的有当型循环和直到型循环。 选择结构:程序的走向由条件的真假来选择。又 称多分支结构。 如图 赋值语句 由赋值表达式加分号构成。 例:x=9; y=(sqrt(x)+x*3/2)/5; 数据输出 C本身无输入输出语句,输入输出操作是调 用标准函数库中的输入输出函数来实现的。本章 详细介绍四个标准库函数: 一、putchar函数(字符输出函数): 功能:用于向终端输出一个字符。 格式:putchar(变量) 例:putchar(a) putchar() ,printf() ,getchar()和scanf()。 数据输出 变量必须是int型或char型。int型变量其值必 须在ASCII码范围内 (0255)。 putchar还可以一一个输出常量或转义字符, 只要在括号中将需输出的内容用单引号括起 即可。但ASCII码必须以转义字符形式出现。 使用标准库函数时,要使用“#include”预编 辑命令将“stdio.h”文件包括到用户源文件中。 例.1 输出单个字符。(ZJ8) include main( ) char a, c; a=B; c=Y; putchar(a); putchar(n); putchar(O); putchar(c) ; 数据输出 B OY 运行结果为: 数据输出 二、printf函数(格式输出函数) 功能:可以输出若干个任意类型的数据。 格式:printf(格式控制符,输出表列) 输出表列:里面列出了所有用户希望输出的变 量名或表达式,它们之间可以用逗 号相隔。 格式控制符:由双引号括起来的字符,有两种 普通字符: 原样照印的内容; 格式说明符:以%开始,共有九种。 数据输出 格式控制符 d格式符:用于输出十进制整数。有4种形式: %d:按整型的实际长度输出。 %md: 按指定宽度m输出整型数。若数据长 度小于m,则左端补空格,若大于m, 则按实际位数输出。 %ld:输出长整型数据,长整型数据只能用 此格式输出。 数据输出 “o” 格式符:用于输出无符号八进制整数。 对此格式符也可指定宽度m和长 整形l,规定同上。 %mld: 按指定宽度m输出长整型数。若数 据长度小于m,则左端补空格,若大 于m,则按实际位数输出。 数据输出 3. x格式符:用于输出无符号十六进制整数。 规定同o格式符。 5. c格式符:用于输出一一个字符。0255之间的 整数均可用字符形式输出。 4.u格式符:用于输出无符号十进制(unsigend) 整数。此类型的数据也可用d,o,x格 式输出。如下例: 数据输出 例4.3 无符号数据的输出。 main( ) unsigned int a=65535; int b=-2; printf(a=%d, %o, %x, %un,a, a, a, a); printf(b=%d, %o, %x, %un,b, b, b, b); a=-1,177777,ffff,65535 b=-2,177776,fffe,65534 运行结果为: BACK (L41) 数据输出 %s:按字符串的实际长度输出。如: printf(“%s”, “CHINA”); 输出结果里CHINA不包括双引号。 6. s格式符:用于输出一个字符串。字符串必须 用双引号括起来,有以下5种用法: %ms:按指定宽度m输出字符串。若数据长 度小于m,则左端补空格,若大于m, 则按实际位数输出。 数据输出 -m.ns:字符输出宽度为m列,但只取字符中前 m.ns:字符输出宽度为m列,但只取字符中前 n个字符。 nm自动输出n个字符。 %-ms:按指定宽度m输出字符串。若数据长 度小于m,则右端补空格,若大于m, 则按实际位数输出。 n个字符, nm自动输出n个字符。 数据输出 例4.5 字符串的输出。 main( ) printf(%3s,%7.2s,%.4s,%-5.3sn, “CHINA”, “CHINA”,” “CHINA”, “CHINA”); 注:在s格式中,如果只指定n而不指定m,则系 统自动认为m=n 。 %f:对单精度数而言:整数部分全部输出, 小数部分输出6位,但数值的前7位有效。对 双精度数而言:整数部分全部输出,小数部 分输出6位,但数值的前16位有效。 数据输出 运行结果为:CHINA, CH,CHIN,CHI f格式符:以实数形式输出单、双精度实数。 数据输出 例4.6 输出实数时的有效位数。 main( ) float x,y; x=111111.111 ; y=222222.222; printf(%f,x+y); 运行结果为:333333.328125 数据输出 例4.7 输出双精度数时的有效位数。 main( ) double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(%f,x+y); 运行结果为: 3333333333333.333001 %m.nf:指定输出数据共占m列,其中小数 占n列(小数点占一位,不包括在n列 内),数据长度小于m,则左端补空格。 数据输出 例4.8 输出实数时指定小数位数。 main( ) %-m.nf: 指定输出数据共占m列,其中小数 占n列(小数点占一位,不包括在列n 内),数据值小于m,则右端补空格。 数据输出 float f=123.456; printf(%f%10f%10.2f%.2f %-10.2fn, f, f, f, f, f); 运行结果为: 123.456001123.456001123.46123.46123.46 8. e格式符:以指数形式输出数值,有两种形式: %e:什么也不指定,系统输出5位尾数(e三 位整数),1位非零整数,自动取6位小数。 例:printf(“%e”,123456); 运行结果为: 1.234560e+005 数据输出 %m.ne和%-m.ne: “m,n,-”含义均同前。即n 指小数位数,m指全部数据长度(包括5位尾 数),当不指定n时,系统自动使n=6;不指 定m时,系统自动使m等于数据应占的长度; 如果nm值,则系统自动突破m,按数据实际 宽度输出。“-”表示右补空格。 数据输出 10. 在使用printf函数时,还有几点要说明: 除了,L外,其他格式说明符必须 用小写字母,如d不能写成。 可以在printf函数中的“格式控制”字符串内 9g格式符:用来输出实数,自动按f或e格式输 出(选择输出占宽度较小的一种),且不输 出无意义的零。 包含第章.5节3.5.1段中的“转义字符”,如 “n”、“t” 、“b” 、“r” 、“f” 、“377” 等。 数据输出 上面介绍的d、o、x、u、c、s、f、e、g 等 字符,如用在“”后面就作为格式符号。一 个格式说明以“”开头,以上述个格式说 明符之一为结束,中间可以插入附加格式字 符(也称修饰符)。 第一个格式说明为“c” ,而不包括其后的f, 第二个格式说明为“f”,不包括其后的s, 第三个格式说明为“s” , 其它的字符为原样输出的普通字符。 数据输出 例如: printf(c=%cf=%fs=%s,c,f,s); 格式说明 如果想输出字符“”,则应该在“格式控制” 字符串中用连续两个表示。 如:printf(%f %,1.0/3*100); (ZJ4.c) 输出:33.333333% 数据输出 例4.5 请写出下面程序的输出结果: main( ) int a=5,b=7; long n=1234567; float x=67.8564, y=-789.124; char c=A; unsigned u=65535; printf(%d%dn,a,b); printf(%3d%3dn,a,b); printf(%f,%fn,x,y); printf(%-10f,%-10fn,x,y); printf(%8.2f,%8.2f,%.4f,%3fn,x,y,x,y); printf(%e,%10.2en,x,y); printf(%c,%d,%o,%xn,c,c,c,c); 57 57 67.856400, -789. 124023 67.856400 , -789.124023 67.86, -789.12,67.8564,-789.124023 6.785640e+001,-7.89e+002 A,65,101,41 数据输出 printf(%ld,%lo,%xn,n,n,n); printf(%u,%o,%X,%dn,u,u,u,u); printf(%s,%5.3sn,COMPUTER, COMPUTER); COMPUTER, COM 1234567,4553207,d687(n=ox12d687) 65535,177777,FFFF,-1 数据输出 数据输入 一、getchar( )函数(字符输入函数) 功能:由终端接收一个输入字符。 形式:getchar( ) ,无参数函数。 getchar( )函数得到输入字符可以赋给int型 或char型变量,也可以不赋给任何变量,值 使用getchar( )函数,在程序的最前面要用预 编译命令# include将头文件中信息 息包含进来。 作为表达式中的一部分,函数的值就是由终 端输入的字符。 数据输入 include“stdio.h” main( ) char c; c=getchar( ); putchar(c); 设由键盘键入字母“N” 则运行结果为: N 例4.2 输入单个字符。 getchar( )只能接收一个字符。 二、格式输入函数scanf: 功能:可以输入任何类型的多个数据。 格式:scanf (格式控制符,地址表列) 数据输入 其中:格式控制含义同printf中的格式控制,地 址表列是由若干个地址组成的表列,可 由终端输入字符必须按回车键,字符才会送 到内存中。 以是变量的地址,或字符串的首地址,不 能是变量名。 数据输入 例4.9 用scanf函数输入数据。 main( ) int a, b, c; scanf(%d %d %d, printf(%d,%d,%dn,a, b, c); 例4.10 输入三角形的三边长,求三角形面积。 为简单起见,设输入的三边长a、b、c 能构成三角形。从数学知识已知求三 角形面积的公式为: area= 其中:s=(a+b+c)/2 据此编写程序如下: 数据输入 include “math.h” main( ) float a,b,c,s,area; scanf(%f,%f,%f, 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.2fn,a,b,c,s); printf(area=%7.2fn,area); 数据输入 数据输入 4.6 用下面的scanf函数输入数据,使a=3,b=7, x=8.5 , y=71.82 , cl=A ,c2=a。问在键 盘上如何输入? float x , y ; char cl , c2 ; scanf(a=%db=%d, scanf(%f%e, scanf(%c,%c, 数据输入 解:可按如下方式在键盘上输入a=3 b=7 8.5 71.82 A , a (L47)(L46) 数据输入 对unsigned整型变量所需的数据,可以用 %d或%o、%x格式输入。 例:scanf(“%3d%3d%c” , 是不合法的, 不能输入1234567以期望使a=12345.67 数据输入 若输入: 12 345 67 则有结果:a=12, b=67,其中%*3d 表示要求 读入一个3位数,但不赋给任何变量。 #include main( ) char cl,c2; cl=getchar( ); printf(%c,%d n,cl,cl); c2=cl+32; printf(%c,%d n,c

温馨提示

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

评论

0/150

提交评论