版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C languageC language 你们的努力程度,还不用到跟别你们的努力程度,还不用到跟别人拼天赋人拼天赋何为何为“程序设计语言程序设计语言”?程序设计语言程序设计语言用于书写计算机程序的语言可分:1.机器语言机器语言(0、1)2.汇编语言汇编语言(把机器语言符号化把机器语言符号化)3.高级语言高级语言(人性化人性化)我们与计算机交流的一种工具(手段)我们与计算机交流的一种工具(手段)计算机结构计算机结构计算机怎么运行程序的?计算机怎么运行程序的?1.取指取指2.译指译指3.运行运行C语言程序的构成语言程序的构成#include”stdio.h”int main()double a ,
2、 b ,area;a = 1.2;b = 3.6;area = a * b;printf(“a = %f , b = %f , area = %f n”,a , b , area);return 0;执行以上程序可输出 a = 1.200000 , b =3.600000 , area = 4.320000int main () .函数体函数类型函数名参数列表1.上面标红的部分,都是不能省略的,唯一一处可以省略的是函数类型,但仅当在上面标红的部分,都是不能省略的,唯一一处可以省略的是函数类型,但仅当在函数类型是函数类型是int类型时可以省略,系统在你省略时,默认你要返回类型时可以省略,系统在你
3、省略时,默认你要返回int类型数据类型数据2.一个可执行程序,有且只有一个主函数一个可执行程序,有且只有一个主函数main(),注意是一个可执行程序注意是一个可执行程序3.一个一个C程序总是从主函数开始运行程序总是从主函数开始运行 #include”stdio.h”int main()double a , b ,area;a = 1.2; /*讲矩形的两条边长分别赋给a和b*/b = 3.6;area = a * b;printf(“a = %f , b = %f , area = %f n”,a , b ,area);return 0;* #include”stdio.h”int main(
4、)double a;double b;double area;编程模式当今计算机语言按照它们使用的解决问题的方法来分类。因此,模式是一种计算机语言看待要决解计算机的方式。计算机语言可分成4种模式:过程式(强制式)、面向对象、函数式和说明式子。过程式模式(面向过程的程序设计语言)在过程模式(强制模式)中,我们把程序看成是操纵被动对象的活动主体。我们在日常生活中遇到许多被动对象:石头,书,笔,灯等等。一个被动对象本身不能开始一个对象,但它能从活动主体接受动作。过程式模式下的程序就是活动主体,该主体使用称为数据或者数据项的被动对象。作为被动对象的数据项(数据)存储在计算机的内存中,程序操纵它们。为了
5、操纵数据,活动主体(程序)发布动作,称之为过程。程序程序 = 活动主体(计算机的灵魂)活动主体(计算机的灵魂)数据数据 = 被动主体被动主体过程过程 = 小程序(例如小程序(例如printf()函数,其实是个小程序,在头文件函数,其实是个小程序,在头文件stdio.h中说明)中说明)程序只是调用过程(或者说函数),来作用于数据,产生输出,使问题得到解决程序只是调用过程(或者说函数),来作用于数据,产生输出,使问题得到解决,这便是面向过程的程序设计语言的核心。,这便是面向过程的程序设计语言的核心。标识符(名字)标识符(名字)在C语言中,有许多要标记的地方,以便计算机识别,如变量名,函数名,数组名
6、,都必须遵循一定的规则,按此规则命名的符号成为标识符规则:规则:3不能不能1只能只能(选择题选择题)1.不能有特殊字符(除了不能有特殊字符(除了09,a z , AZ, _。 其他都其他都是特殊字符或叫非法字符)是特殊字符或叫非法字符)2.不能用关键字当标识符(不能用关键字当标识符(P251)3.不能以数字做开头不能以数字做开头4.只能以下划线或者字母开头只能以下划线或者字母开头注意:注意:C语言中,对大小写是及其敏感的!语言中,对大小写是及其敏感的!下列哪些是合法的标识符?1.%num2.if3.If4.num group5.1nrce6._9._int
7、10.Int11.Count12.count再次强调,再次强调,C语言对大小写及其敏感语言对大小写及其敏感Eg:Count和count是两个完全不一样的变量,是独立的变量数据类型与变量数据类型与变量数据类型数据类型对数据的分类,就是程序给其使用的数据按某种形式组织对数据的分类,就是程序给其使用的数据按某种形式组织数据类型基本类型整型(整型( short 、int 、long、long long)字符型(字符型(char)1B浮点型浮点型枚举型单精度(单精度(float) 4B双精度(双精度(double)8B构造类型指针类型空类型对数据类型的指定,就确定了存储数据的空对数据类型的指定,就确定了
8、存储数据的空间,也确定了计算机怎么解释存储在内存中间,也确定了计算机怎么解释存储在内存中的数据(或者怎么存储接收来的数据)的数据(或者怎么存储接收来的数据) 2B 4B 4B 8B变量变量概念:概念:程序运行过程中其值可以改变的量。本质上讲,变量就是内存中的一个存程序运行过程中其值可以改变的量。本质上讲,变量就是内存中的一个存储空间储空间定义(创建)方法定义(创建)方法数据类型数据类型 变量名;变量名; short a ; int a,b,g; float a = 1.0; float a = 1.0 ,b = 2.0;15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
9、a变量变量(short类型类型)内存地址:内存地址:00100010内存结构及数据在内存中的表示内存结构及数据在内存中的表示0 1 2 3 4 5 6 7 1021 1022 1023101100001B( 字节字节 ) = 8 bit(位)(位)1024B = 1KB176-16每个字节都是有地址,也就是我们讲的内存地址。每个字节都是有地址,也就是我们讲的内存地址。整数在内存中的存储形式整数在内存中的存储形式内存储器最小存储单位是内存储器最小存储单位是“bit(位位)”最低位最高位(符号位)例:计算机是如何存储一个short类型的数据5的?十进制5转二进制(用16位表示)为:00000000
10、00000101那么在内存中的存储形式就是:0000010100000000那么如何在内存中存储-5呢?计算在存储负数的时候,采用计算在存储负数的时候,采用“补码补码”形式进行存储形式进行存储补码的计算方法补码的计算方法1.先求负数绝对值的二进制表示先求负数绝对值的二进制表示2.求反求反3.加一加一Eg:-5的补码(八位)的补码(八位)1.|-5|的二进制表示是:的二进制表示是:000001012.求反:求反:111110103.加一:加一:11111011那么内存中存储那么内存中存储-5就如下:就如下:11111011常量常量p11 程序运行过程中,其值不变的量程序运行过程中,其值不变的量
11、,从形式上就可以分辨出类型,从形式上就可以分辨出类型如:12、-1、0、56(数值型常量)0.0、-3.1415、-2.0(实型常量)“NCRE”、”LOVE”(字符串常量)符号常量符号常量将一个常量符号化,即用一个符号来表示常量,这个符号通常是将一个常量符号化,即用一个符号来表示常量,这个符号通常是大写字母组合(习惯),必须符合标识符大写字母组合(习惯),必须符合标识符 命名规则命名规则指定规则,见下面程序#include”stdio.h”#define PI 3.14159int main()float s=0.0f , r = 5.0f;s = PI*r*r;printf(“一个半径为5
12、圆的面积是%fn”,s);return 0; /可复制粘贴到IDE编译运行这两行都是预处理命令,不这两行都是预处理命令,不是语句,切记是语句,切记(选择题选择题)当我们用预处理命令define定义了PI为3.14159,那么在程序编译时,凡是在程序中出现PI的地方,都会被3.14159替代,这样就有一个好处,即在程序更改时,只需更改一处,方便快捷整型常量整型常量p12 整型常量可以用十进制、八进制、十六进制,但是需要注意的是,只有十进制能整型常量可以用十进制、八进制、十六进制,但是需要注意的是,只有十进制能是负数,八进制和十六进制只能是正数是负数,八进制和十六进制只能是正数十进制表示:十进制表
13、示:32767、0、20、110八进制表示:八进制表示:014、0125、067十六进制表示:十六进制表示:0 xaffff、0Xaffff、0X65a在用八进制,十六进在用八进制,十六进制表示时,皆要合法制表示时,皆要合法以下列出几种不合法的表示方式068、0Xga65、078实型常量实型常量实型常量称实数或者浮点数(注意,这里面也包括整数,比如整数实型常量称实数或者浮点数(注意,这里面也包括整数,比如整数5,它也可以,它也可以说成实型常量,但在程序书写方式上要写成说成实型常量,但在程序书写方式上要写成5.0,不是,不是5,否者就被计算机认为是整型常量,否者就被计算机认为是整型常量5)实型常
14、量的两种表示方式和注意事项实型常量的两种表示方式和注意事项(选择题选择题)小数形式小数形式Eg:0.123、.126、65.、0.0小数形式表示的实型常量必须要有小数点小数形式表示的实型常量必须要有小数点指数形式指数形式类似数学中的指数形式,但不完全一样类似数学中的指数形式,但不完全一样Eg:2.3026用指数形式表示为用指数形式表示为0.23026E1、2.3026e0、23.026e-1字母字母E(e)之前必须要有数字,且指数必须是整数之前必须要有数字,且指数必须是整数指数形式表示中,不能有空格指数形式表示中,不能有空格算术表达式算术表达式 与与 赋值表达式赋值表达式一个算术表达式由一个算
15、术表达式由操作数(变量或者常量)操作数(变量或者常量)和和运算符运算符组成的组成的将算术表达式的值再用赋值号将算术表达式的值再用赋值号(=)赋值给某变量,整个表达式就叫赋值给某变量,整个表达式就叫赋值表达式赋值表达式了了基本算术运算符基本算术运算符双目意思就是,它们参加运算时,左右各需要一个运算数;单目只需一个双目意思就是,它们参加运算时,左右各需要一个运算数;单目只需一个操作数跟在其后即可。表中前五个可称为双目运算符操作数跟在其后即可。表中前五个可称为双目运算符注意注意符号符号“/”表示除法,需要说明的是,如果此符号两个操作数都是整数话,那么表示除法,需要说明的是,如果此符号两个操作数都是整
16、数话,那么结果也一定是整数,如结果也一定是整数,如5/2,其结果为,其结果为2,小数部分被舍弃了(不是四舍五入,小数部分被舍弃了(不是四舍五入,是舍弃),但是如果操作数中有一个是负值,则采用是舍弃),但是如果操作数中有一个是负值,则采用“向零取整向零取整”。符号符号“%”,表示求模运算,要求两个操作数必须都是整数。,表示求模运算,要求两个操作数必须都是整数。【例1】#include”stdio.h”int main()int a=5,b=2,c=0;int m = 2 ;c = a/b;printf(“整数5除以整数2所得结果为:%d”,c);c = a%m;printf(“整数5除以整数2的
17、余数结果为:%d”,c);return 0;优先级和结合性优先级和结合性1.优先级确定了哪个运算符先执行优先级确定了哪个运算符先执行2.结合性指当一个操作数对象两侧的运算符具有相同的优先级时,确定结合性指当一个操作数对象两侧的运算符具有相同的优先级时,确定该操作数是先与左边的运算符结合,还是先与右边的运算符结合该操作数是先与左边的运算符结合,还是先与右边的运算符结合E g:表达式x - y + z的计算顺序是?E g:x=y=z;y先与” - ”结合,执行“x-y”运算,然后在执行“+z”运算。因为”-”和”+”优先级相同,而两个运算符的结合性都是左结合性先执行y=z,在执行x=(y=z)因为
18、赋值运算符“=”的结合性是右结合性3.结合性分右结合性和左结合性。左结合性指某个运算对象先与左结合性分右结合性和左结合性。左结合性指某个运算对象先与左边的运算符相结合,再将运算结果与右边的运算符相结合边的运算符相结合,再将运算结果与右边的运算符相结合总结:除总结:除单目运算符,赋值运算符和条件运算符单目运算符,赋值运算符和条件运算符是右结合性外,其他运算符都是左结是右结合性外,其他运算符都是左结合性合性赋值表达式赋值表达式形式形式:变量名变量名 = 表达式表达式在其后加上分号就成了赋值语句,即在其后加上分号就成了赋值语句,即变量名变量名 = 表达式表达式;注意:赋值号左边必须是变量名,右边必须
19、是注意:赋值号左边必须是变量名,右边必须是C语言中合法的表达式。语言中合法的表达式。 赋值运算符的优先级只比逗号运算符高赋值运算符的优先级只比逗号运算符高复合赋值表达式复合赋值表达式形式:形式:变量变量 operater = 表达式表达式 变量变量 = 变量变量 operater (表达式表达式) 【例】a = 2;a *= 5+6;等价于a = a * (5+6);注意:这边转化等价过来不要忘了注意:这边转化等价过来不要忘了括号,计算机是做如上等价转换的括号,计算机是做如上等价转换的不是做不是做a = a * 5 + 6转化。这两种得转化。这两种得到的结果是不同的到的结果是不同的赋值运算中的
20、类型转换赋值运算中的类型转换计算机在计算表达式的值时,如果计算机发现运算符左右两边的操作数数据类计算机在计算表达式的值时,如果计算机发现运算符左右两边的操作数数据类型不同,则自行进行隐式转换型不同,则自行进行隐式转换【例】#include”stdio.h”int main()int a =0 ,a2 = 6;float b = 2.0f, c = 3.5;short d = 4;a = a2 + d + b + c ;printf(“变量a的值为:%dn”,a);return 0;程序输出如下变量a的值为:15根据结合性,我们知道表达式先计算a2+d的值,那么这边a2与d数据类型不同,将d变量
21、中的值4转化成int类型,之后与a2变量相加得到int类型数据10经过a2+d运算得到int类型数据10,10再与单精度浮点型b变量相加,那么这边将int数据10转成float类型,再与b相加,得到float数据12.0fa2 + d + b得到float数据12.0f再与float数据c相加,得到float数据15.5f,但是要赋值到int变量a中,所以将15.5f转化成int类型,舍弃小数部分,并存进变量a中总结总结赋值表达式中的数据类型转化可分为以下两部分:赋值表达式中的数据类型转化可分为以下两部分:表达式中,各操作数之间的类型转换表达式中,各操作数之间的类型转换如果类型相同,则不进行类
22、型转化,否则,遵循以下转化如果类型相同,则不进行类型转化,否则,遵循以下转化规则规则:float double:shortintlong只要记住都向空间大的转化就可以了只要记住都向空间大的转化就可以了赋值时的类型转换赋值时的类型转换:转换成与左边变量的数据类型一致转换成与左边变量的数据类型一致:这边需要注意的是,如果浮点型转成整型的,小数部:这边需要注意的是,如果浮点型转成整型的,小数部 分会被舍弃,而不是四舍五入;双精度浮点型转单精分会被舍弃,而不是四舍五入;双精度浮点型转单精 度浮点型可能会造成精度的损失,也就是转过去以后,度浮点型可能会造成精度的损失,也就是转过去以后, 少了几位小数少了
23、几位小数强制类型转换强制类型转换表达式都有一个操作结果,即得出一个数据,那么这个数据有其类型,若我表达式都有一个操作结果,即得出一个数据,那么这个数据有其类型,若我们想改变其类型,则采用强制类型转换,即可们想改变其类型,则采用强制类型转换,即可人为人为的改变的其数据类型的改变的其数据类型强制类型转化表达式形式强制类型转化表达式形式 : (类型名类型名)(表达式表达式) 强制类型转化符强制类型转化符【例】 #include”stdio.h” int main()int a = 6;float c = 5.6,b = 2.0f;a = a + (int)(c/b); 思考这边(int)(c/b)的
24、结果是3还是2? printf(“a的值是%dn”,a);return 0;自加运算符与自减运算符自加运算符与自减运算符两种用法两种用法前置运算前置运算(将运算符置于变量左边将运算符置于变量左边) 先使变量的值增先使变量的值增(减减)1,然后再以变化后表达式的值参与运算然后再以变化后表达式的值参与运算 +a后置运算后置运算(将运算符置于变量右边将运算符置于变量右边)变量先参与其他运算,在将变量自增变量先参与其他运算,在将变量自增(减减)1 a+#include”stdio.h”Int main()int a = 5;printf(“a = %dn”,+a);printf(“a = %dn”,a
25、+);printf(“a = %dn”,a);return 0; 执行结果:a = 6a = 6 ?a = 7第三章第三章printf与与scanf函数函数printf函数函数C语言中本身并没有提供输入输出语句,而是通过调用标准库函数中提供的输入和输出语言中本身并没有提供输入输出语句,而是通过调用标准库函数中提供的输入和输出函数来实现输入和输出,函数来实现输入和输出,printf函数与函数与sanf函数分别就是输出和输入函数函数分别就是输出和输入函数调用格式:调用格式:printf(格式控制串,输出表列格式控制串,输出表列);【例例】printf(“a与与b的值分别是的值分别是%d和和%d。n
26、 ” ,a , b);格式控制串格式控制串是一个字符串参数,也就是所有字符全部包含在一对双引号内。是一个字符串参数,也就是所有字符全部包含在一对双引号内。由三部分组成:由三部分组成:格式说明符格式说明符、转义字符转义字符、按原样输出按原样输出输出表列输出表列输出表列是要输出的各项数据,这些数据可以是常量、变量、函输出表列是要输出的各项数据,这些数据可以是常量、变量、函数或表达式,其具体类型由格式控制串中的格式说明符决定数或表达式,其具体类型由格式控制串中的格式说明符决定scanf函数函数scnaf函数是格式化输入函数,它从标准输入设备函数是格式化输入函数,它从标准输入设备(键盘键盘)读取输入信
27、息读取输入信息调用格式调用格式scanf(格式控制串格式控制串,地址列表地址列表)【例例】scanf(“%d %d %d ”,&a ,&b ,&c );格式化字符串包括以下三类不同的字符格式化字符串包括以下三类不同的字符格式化说明符格式化说明符空白字符空白字符: 空白字符会使空白字符会使scanf()函数在读操作中略去输入函数在读操作中略去输入 中的一个或多个空白字符。中的一个或多个空白字符。非空白字符非空白字符: 一个非空白字符会使一个非空白字符会使scanf()函数在读入时剔函数在读入时剔 除掉与这个非空白字符相同的字符。除掉与这个非空白字符相同的字符。地址列表是需要读入的所有变量的地址,
28、而不是变量本身地址列表是需要读入的所有变量的地址,而不是变量本身【例1】1.#include stdio.h int main() int a,b,c; scanf(%d%d%d,&a,&b,&c); printf(%d,%d,%dn,a,b,c);return 0; 【例2】#include stdio.h int main() int a,b,c;scanf(%d,%d,%d,&a,&b,&c);printf(%d,%d,%dn,a,b,c);return 0; 运行时按如下方式输入三个值:运行时按如下方式输入三个值:345 (输入(输入a,b,c的值)的值)3,4,5 (printf输出
29、的输出的a,b,c的值)的值) %d%d%d是按十进值格式输入三个数值。输是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。键、回车键分隔。 以下是合法输入方式:以下是合法输入方式: 345 3 45 3(tab键)键)4 5 运行时按如下方式键盘输入三个值:运行时按如下方式键盘输入三个值:3,4,5 (输入(输入a,b,c的值)的值)或者或者3,4,5 (输入(输入a,b,c的值)的值)3,4,5 (输入(输入a,b,c的值)的值) . 都是合法的,但是都是合法的,但是,一定要跟在数字后面,如:一定要跟在数
30、字后面,如: 3,4,5 就非法了,程序出错就非法了,程序出错。#include stdio.hint main() int a,b,c;scanf(%d%d%d,&a,&b,&c);printf(%d,%d,%dn,a,b,c);return 0; 假如a=3,b=4,c=5键盘输入a一个或者多个空格(tab或者回车)b一个或者多个空格(tab或者回车)c一个或者多个空格tab最后必须按回车 得到3,4,5键盘输入a,b,c回车 得到3,乱码,乱码。#include stdio.h int main() int a,b,c; scanf(%d,%d,%d,&a,&b,&c);printf(%
31、d,%d,%dn,a,b,c);return 0; scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。函数仅在每一个数据域均有数据,并按回车后结束)。 遇空格、遇空格、“回车回车”、“跳格跳格”键。键。 遇宽度结束。遇宽度结束。 遇非法输入。遇非法输入。【例】#includestdio.hint main()int i=0,j=0,k=0;short a=-1,b=-1;scanf(%d,&i);a=scanf(%d,&j);b
32、=scanf(%d,&k);printf(i,j,k的值分别是:%d,%d,%dn%d,%dn,i,j,k,a,b);return 0;第四章第四章选择结构是一种常见的基本控制结构,是计算机科学用来描述自然界和社会生活中分支是一种常见的基本控制结构,是计算机科学用来描述自然界和社会生活中分支现象的手段现象的手段关系运算符与关系表达式关系运算实际上就是比较运算,就是将两个值进行比较,判断是否符合给定的条件,关系运算实际上就是比较运算,就是将两个值进行比较,判断是否符合给定的条件,其比较两个量的运算符就称关系运算符,构成的表达式称关系表达式其比较两个量的运算符就称关系运算符,构成的表达式称关系表达
33、式算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符关系表达式基本形式:基本形式:表达式表达式1 关系运算符关系运算符 表达式表达式2注意:注意:“表达式表达式1”和和“表达式表达式2”可以是任意合法的表达式可以是任意合法的表达式如如ab、3+7!=10、a+(b=a+)都是合法的关系表达式都是合法的关系表达式关系表达式只有两种结果,要么关系成立,为关系表达式只有两种结果,要么关系成立,为“真真”,要么关系,要么关系不成立,为不成立,为“假假”。分别用。分别用1和和0代表真假,也就是表达式只有两代表真假,也就是表达式只有两种结果种结果1和和0可以将关系表达式赋予一个整型变量或字符型变
34、量,实际上是将可以将关系表达式赋予一个整型变量或字符型变量,实际上是将关系表达式的值关系表达式的值(1或或0)赋值于变量赋值于变量逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式C语言中提供三种逻辑运算符,分别是逻辑与语言中提供三种逻辑运算符,分别是逻辑与(&)、逻辑或、逻辑或(|)、逻辑非、逻辑非(!) !(非非) 高高 算术运算符算术运算符关系运算符关系运算符&(与与)和和|(或或) 赋值运算符赋值运算符 低低不同运算符优先级的比较不同运算符优先级的比较【例】51&2154!(5y) printf(“x= %dn”,x);if(yx) printf(“y = %dn”,y);if(x=y) p
35、rintf(“x=y %dn”,x);return 0;此程序作用:提示用户输入x,y;计算机在获得x,y的值后,进行判断比较x,y的大小,将最大值输出,如果x,y相等,则输出其中一个值(x)。【例4.2】#include”stdio.h”int main()int a,b,c,t;printf(“input a,b,c:”);scanf(“%d%d%d”,&a,&b,&c);printf(“a = %d,b = %d,c = %dn”,a,b,c);if(ab) t = a;a = b;b = t;if(ac) t = a; a = c; c = t;if(bc) t = b; b = c;
36、 c = t;printf(“%d,%d,%dn”,a,b,c);return 0;程序作用:将用户输入a,b,c进行大小比较,并将最大值放到c中 ,最小值放在a中。相当于给a,b,c排序。第一种书写风格第二种书写风格第三种书写风格if.else语句语句格式如下:格式如下: if(表达式表达式) 语句体语句体1 else 语句体语句体2“if”是是C语言的关键字,表达式可以是任意合法的表达式,表达式两侧的括语言的关键字,表达式可以是任意合法的表达式,表达式两侧的括号不可以省略号不可以省略“else”也是也是C语言的关键字,表示如果条件不成立语言的关键字,表示如果条件不成立(表达式的逻辑值为表达
37、式的逻辑值为0),就,就执行语句体执行语句体2语句体可以是一条语句,也可以是语句体可以是一条语句,也可以是C语言中任意合法的复合语句,其位置比较语言中任意合法的复合语句,其位置比较灵活,可以直接出现在灵活,可以直接出现在if同一行的后面,也可以出现在同一行的后面,也可以出现在if的下一行的下一行【例4.3】#include”stdio.h”int main()int x,y;printf(“Enter x&y:”);scanf(“%d%d”,&x,&y);printf(“x,y:%d %dn”,x,y);if(xy) printf(“max = x = %dn”,x);else printf(
38、“max = y = %dn”,y); printf(“* * end * *n”);return 0;程序作用:请求用户输入x,y,然后判断x,y的大小,并把最大值输出到屏幕上。【例4.4】#include”stdio.h”int main()int n;printf(“input n: ”); scanf(“ %d”,&n);if(n%3=0) printf(“n = %d YESn”,n);else printf(“n = %d NOn”,n);return 0;嵌套的嵌套的if语句语句If(表达式1) 语句体1else if(表达式2) 语句体2 else if(表达式3)语句体3 e
39、lse 换种书写方式If(表达式1) 语句体1else if(表达式2) 语句体2else if(表达式3) 语句体3 else判断一个数在哪个区间?【例】#include”stdio.h”int main()int count = 29; else if(count30)if(count10) printf(“count在区间20到30”); printf(“count在区间0到10”); elseelse if(count10 ? 100 : 200;100y =说明:说明: “表达式表达式1”,“表达式表达式2”和和“表达式表达式3”可以是任意合法的表达式。可以是任意合法的表达式。 条件
40、运算符是条件运算符是C语言中唯一的一个三目运算符。语言中唯一的一个三目运算符。 我们可以把一个条件表达式赋予一个变量,实际上是把条件表达式的我们可以把一个条件表达式赋予一个变量,实际上是把条件表达式的 值赋予该变量。值赋予该变量。 在某些情况下,条件表达式的效果可以用在某些情况下,条件表达式的效果可以用if语句语句 上面的例题即可等同,即等价于:上面的例题即可等同,即等价于:if(x10) y = 100;else y = 200; switch语句语句形式如下:switch(表达式表达式)case 常量表达式常量表达式1: 语句语句1;case 常量表达式常量表达式2: 语句语句2;case
41、 常量表达式常量表达式3: 语句语句3;case 常量表达式常量表达式n: 语句语句n;default : 语句语句n+1;default : 语句语句n+1;说明:说明: switch后面的表达式必须用圆括号括起来,其结果必须是整型或字符型。后面的表达式必须用圆括号括起来,其结果必须是整型或字符型。 switch语句后面用花括号语句后面用花括号”括起来,不能省略括起来,不能省略 case后面必须是常量或常量表达式,不是变量。后面必须是常量或常量表达式,不是变量。Case和其后的常量表达和其后的常量表达 式中间应有空格式中间应有空格 各各case语句标号值应该互不相同。语句标号值应该互不相同。
42、case语句标号的语句可以是一条语句语句标号的语句可以是一条语句也可以是若干语句也可以是若干语句#include”stdio.h”int main()int g;printf(“Enter a mark:”); scanf(“%d”,&g);printf(“g = %d:n”,g);switch(g/10) case 10: case 9: printf(“An”); case 8: printf(“Bn”); case 7: printf(“Cn”); case 6: printf(“Dn”); default : printf(“En”);return 0;结果Enter a mark:1
43、00g=100:ABCD90跟100一样80无A70无ABswitch语句的执行过程语句的执行过程1.计算计算switch圆括号内的表达式的值,然后用该值圆括号内的表达式的值,然后用该值逐个去与逐个去与case后的常量表达式值进行比较,当找后的常量表达式值进行比较,当找到相互匹配的值时,就执行该到相互匹配的值时,就执行该case后面的语句。后面的语句。若没有一个值与表达式的值匹配,若没有一个值与表达式的值匹配,则执行则执行default后面的语句后面的语句(如果有如果有default的话的话)。2.执行完一个执行完一个case后面的语句后,程序就转移到后面的语句后,程序就转移到下一个下一个ca
44、se出继续运行,并不再进行判断,但这出继续运行,并不再进行判断,但这并不是我们所希望的,因此通常在每一条语句后并不是我们所希望的,因此通常在每一条语句后面填加面填加break语句,以跳出语句,以跳出switch语句语句#includestdio.hint main()int g;printf(Enter a mark:); scanf(%d,&g);printf(g = %d:n,g);switch(g/10) case 10: case 9: printf(An);break; default : printf(En); case 8: printf(Bn);break; case 7: p
45、rintf(Cn);break; case 6: printf(Dn);break; return 0;Enter a mark:100g=50:EB#include”stdio.h”int main()int g;printf(“Enter a mark:”); scanf(“%d”,&g);printf(“g = %d:”,g);switch(g/10) case 10: case 9: printf(“An”); break; case 8: printf(“Bn”); break; case 7: printf(“Cn”); break; case 6: printf(“Dn”); b
46、reak; default : printf(“En”);return 0;第五章第五章所谓循环结构就是当给定条件成立时,反复执行所谓循环结构就是当给定条件成立时,反复执行某段程序段,直到条件不成立为止某段程序段,直到条件不成立为止for循环语句循环语句一般形式如下:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体;说明说明:“表达式表达式1”通常用来循环变量通常用来循环变量赋初值赋初值。当然,也允许在。当然,也允许在for语句外给语句外给 循环变量赋初值,此时可以省略该表达式循环变量赋初值,此时可以省略该表达式“表达式表达式2”通常是通常是循环条件循环条件,以便决定是否继
47、续执行循环体。一般,以便决定是否继续执行循环体。一般 为关系表达式或逻辑表达式为关系表达式或逻辑表达式“表达式表达式3”通常可用来通常可用来修改循环变量的值修改循环变量的值,一般是赋值语句。,一般是赋值语句。 循环体可以是一条语句,也可以是由循环体可以是一条语句,也可以是由“”括起来的多条语句括起来的多条语句 表达式表达式1、表达式、表达式2、表达式、表达式3都是可选的,但是括号中的都是可选的,但是括号中的两个分号是两个分号是 一定要的一定要的for(i=0;i10;i+) printf(“*”); 【例5.5】#include”stdio.h”int main()int i,sum;sum
48、= 0;for(i=1;i=100;i+) sum += 1;printf(“ sum = %dn”,sum);return 0;sum=100【例5.6】#include”stdio.h”#define PI 3.1416int main()double r,s;for(r = 0.5;r=2.5;r+=0.5) s = PI * r * r;printf(“r = %3.1f s = %fn”,r,s);return 0;while循环语句循环语句一般形式一般形式:while(表达式表达式) 循环体循环体说明:说明:表达式可以是任意合法的表达式表达式可以是任意合法的表达式循环体可以是一条语
49、句,也可以是循环体可以是一条语句,也可以是“”括起来的复括起来的复合语句合语句【例例5.1】#include”stdio.h”int main()int i,sum;i=0; sum = 0;while(sum1000)sum += i*i;i+;printf(“n = %d sum = %d n”,i-1,sum);return 0;请用请用while循环语句求循环语句求sum = 1*2*3*4*98*99*100的值。的值。dowhile语句构成的循环语句语句构成的循环语句一般形式一般形式do 循环体循环体while(表达式表达式);循环体是可以是一条语句,也可以是有循环体是可以是一条语
50、句,也可以是有”括起来的复合语句括起来的复合语句While后一对圆括号中的表达式,是循环条件,可以是任意合法的表达式后一对圆括号中的表达式,是循环条件,可以是任意合法的表达式在在if语句、语句、while语句中,表达式后面都不能加分号,而在语句中,表达式后面都不能加分号,而在do.while语语句的表达式后面要加分号句的表达式后面要加分号【例5.4】#includestdio.hint main()int f1,f2,f;f1 = 0 ,f2 = 1 ;dof = f1 + f2;f1 = f2;f2 = f;while(f2 = 1000 );printf(F = %dn,f2);循环的嵌套
51、循环的嵌套在一个循环体内又完整的包含了另一个循环,称为循环嵌套在一个循环体内又完整的包含了另一个循环,称为循环嵌套【例5.7】#includestdio.hint main()int k,i,j;for(i=0;i4;i+)for(k=1;k=i;k+)printf( );for(j=0;j7-i*2;j+)printf(*);printf(n);break语句和语句和continue语句在循环中的使用语句在循环中的使用break语句用于跳出语句用于跳出break语句所在的本层循环语句所在的本层循环continue语句用于结束本次迭代,直接进行下一语句用于结束本次迭代,直接进行下一次迭代,而不
52、是结束整个循环次迭代,而不是结束整个循环【例5.10】#includestdio.hint main()int k=0,s=0,i;for(i=1;i5)printf(*i = %d,s = %d,k = %dn,i,s,k);continue;k = k + s;printf(i = %d,s = %d,k = %dn,i,s,k);return 0;#includestdio.hint main()int x,max;printf(Enter -1 to end:n); /输入输入-1程序结束程序结束doprintf(Enter x:);scanf(%d,&x);while( x=0max
53、 = x; /以上代码只是起到人为的给以上代码只是起到人为的给max赋个正初值赋个正初值while(x!=-1)printf(Enter x*);scanf(%d,&x); if(x0&xmax)max = x;if(max!=-1)printf(max = %dn,max);第六章第六章字符型数据字符型数据字符型数据就是用来表示英文字母,符号的数据字符型变量的一般定义形式:字符型变量的一般定义形式:char 变量名变量名1,变量名变量名2,变量名变量名3,变量名变量名4,.;【例例】char c1,c2,c3 = a,c4 = b;字符常量字符常量从表现形式来说,就是用单引号括起来的单个字符
54、【例】a、b 、0、+、-、&都是字符常量都是字符常量字符型数据的存储及所占空间字符型数据的存储及所占空间我们知道,所以数据在计算机里面都是用二进制表示,十进制数据可以化成二进制数据进行存储。那字符呢?在现在我们看来,字符没有十进制,我们如何在计算机中用二进制表示呢?编码编码映射映射每个字符每个字符一个十进制数一个十进制数唯一对应唯一对应美国标准学会美国标准学会ANSIASCII码表(附录4)ASCII代码值32128个字符个字符一字节一字节【例6-1】字符型变量在一定程度上,可以看成存储空间为一字节的整型变量字符型变量在一定程度上,可以看成存储空间为一字节的整型变量(-128127)改一改改
55、一改1.将前一幻灯片的程序中的字符型变量将前一幻灯片的程序中的字符型变量c1赋值赋值-129(小于小于-128),编译链接运,编译链接运行,观察结果,为什么会出现这种结果?行,观察结果,为什么会出现这种结果?2. 将前一幻灯片的程序中的字符型变量将前一幻灯片的程序中的字符型变量c1赋值赋值128(大于大于127),编译链接运,编译链接运行,观察结果,为什么会出现这种结果?行,观察结果,为什么会出现这种结果?3.将前一幻灯片的程序中的字符型变量将前一幻灯片的程序中的字符型变量c1赋值赋值10,编译链接运行,观察结,编译链接运行,观察结果,为什么会出现这种结果?果,为什么会出现这种结果?4.将前一
56、幻灯片的程序中的字符型变量将前一幻灯片的程序中的字符型变量c1赋值赋值9,编译链接运行,观察结果,编译链接运行,观察结果,为什么会出现这种结果?为什么会出现这种结果?5.将前一幻灯片的程序中的字符型变量将前一幻灯片的程序中的字符型变量c1赋值赋值a,会出现什么结果?,会出现什么结果?char数据类型的范围是数据类型的范围是(-128127),但是只有但是只有(0127)范围有对应范围有对应的字符,超出此范围,将输出意想不到的结果的字符,超出此范围,将输出意想不到的结果在给在给char变量赋值时,我们也可以赋值字符所对应的变量赋值时,我们也可以赋值字符所对应的ASCII码码值值既然字符数据在一定
57、程度上可以看成整型数据,那么它也可以进行运算【例6.1.4】字符在参与运算时,是用其对应的字符在参与运算时,是用其对应的ASCII码值参与运算的码值参与运算的字符的输入和输出字符的输入和输出调用调用printf()函数输出字符函数输出字符用用printf()输出字符时只需使用格式说明符输出字符时只需使用格式说明符%c调用调用scanf()函数输入字符函数输入字符在讲这部分知识前,伙伴们先执行以下程序#includestdio.hint main()int a=0,b=0,c=0;printf(请输入三个整型数据,并按回车结束输入:);scanf( %d%d%d,&a,&b,&c);printf
58、(nnn小伙伴,你刚刚输入了:a=%d,b=%d,c=%dnnn,a,b,c);return 0;注意:请正确的输入注意:请正确的输入 使得使得a、b、c存入正确的数据存入正确的数据 那么我们在进行字符数据的输入,可否参照整型数据的这种输入方那么我们在进行字符数据的输入,可否参照整型数据的这种输入方法呢?法呢?将以上程序改成:char a = 0,char b = 0,char c = 0;printf(“请输入三个字符型数据,并按回车结束输入:”);scanf(“%c%c%c”,&a,&b,&c);其余语句不变,编译连接运行,按照上面的输入格式,会出现什么结果,为什么?经过以上的测试 ,我们
59、就清楚了,在读入字符型数据时,空格、回车、制表符等间隔符都被当成字符对待,会存入变量,而不像在读入整型数据时,有结束一个数据的输入的功能那像以上程序,我们应该怎么输入,才能正确的读入呢?那像以上程序,我们应该怎么输入,才能正确的读入呢?调用调用putchar()和和getchar()函数输出和读入字符函数输出和读入字符putchar函数用于输出字符,其调用形式如下函数用于输出字符,其调用形式如下putchar(ch);getchar函数用于输入字符,其调用形式如下函数用于输入字符,其调用形式如下ch =getchar();注意:注意:书上提到书上提到putchar向终端输出字符,这边的终端指屏
60、幕向终端输出字符,这边的终端指屏幕getchar括号中没有参数,但是不能省略,它的返回值是从括号中没有参数,但是不能省略,它的返回值是从键盘上读取数据,然后返回,这边返回的值赋给了变量键盘上读取数据,然后返回,这边返回的值赋给了变量ch第七章第七章库函数库函数在使用库函数之前,必须包含有对函数说明的头文件在使用库函数之前,必须包含有对函数说明的头文件【例】若想调用库函数printf(),我们必须包含头文件stdio.h对于函数,我们调用无非出于两个目的对于函数,我们调用无非出于两个目的为了让函数进行某种操作。为了让函数进行某种操作。为了得到函数操作后返回过来的结果为了得到函数操作后返回过来的结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度技术开发合作合同标的为人工智能应用研发
- 2024年度农产品购销合同及其质量标准
- 空调压缩机市场需求与消费特点分析
- 真空电子管无线电市场发展预测和趋势分析
- 2024年度技术转让合同:新能源专利技术转让协议
- 2024年度保险合同标的保险范围与保险金额确定
- 运载工具用座椅市场发展现状调查及供需格局分析预测报告
- 羽毛球球拍线市场需求与消费特点分析
- 2024年度大蒜进出口贸易合同
- 2024年度技术开发合同研发项目与期限
- 2024水样采集与保存方法
- 2025届高考语文一轮复习:二元思辨类作文思辨关系高阶思维
- 糖尿病患者体重管理专家共识(2024年版)解读
- 《中国慢性阻塞性肺疾病基层诊疗与管理指南(2024年)》解读
- HSK标准教程5下-课件-L7
- 设备故障报修维修记录单
- 集会游行示威申请登记表
- 关于整治我校周边环境的请示报告5篇
- 中国矿业大学矿山测量学课程设计
- 2021年学校内部审计工作总结范文
- 大型火力发电厂创优工程达标创优规划
评论
0/150
提交评论