3.97k likes | 4.08k Views
C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program. C Program.
E N D
C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C语言程序设计 辽宁对外经贸学院
C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program 目 录 第1章 C语言概述 第2章 数据类型、运算符与表达式 第3章 顺序程序设计 第4章 选择结构程序设计 第5章 循环控制 第6章 数组 第7章 函数 第8章 预处理命令 第9章 指针 第10章 结构体与共同体 第12章 文件
C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program 第1章 C语言概述
C语言的特点 C程序的基本结构 C程序的开发过程 本章内容
1.1 C语言出现的历史背景 • 1960年, ALGOL 60, 面向问题,离硬件远,不宜编系统程序. • 1963年,剑桥,CPL语言,更近硬件,但规模大,难以实现. • 1967年,剑桥,Martin Richards,简化,BCPL语言. • 1970年,美国贝尔实验室,Ken Thompson,简化,B语言,写第一个UNIX系统. • 1972~1973年,贝尔实验室,D.M.Ritchie,B语言基础上,设计出C语言,克服B语言的过于简单、功能有限的不足. • 1973年,K.Thompson和D.M.Ritchie合作将UNIX的90%以上用C改写. • 1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP,得以广泛应用。
1.2 C语言的特点 1. 语言简洁紧凑使用方便灵活; 2. 运算符丰富; 3. 具有较强的数据类型构造能力; 4. 结构化好; 5. 可移植性好; 6. 生成的代码质量高,程序执行效率高; 7. 能实现汇编语言的大部分功能,可以直接 对硬件进行操作。
1.3 简单的C程序介绍 例 1.1 main ( ) { printf (“Hello,everyone!\n"); } main 表示“主函数”。每一个C程序都必须有一个 main 函数。 语句最后有一分号(;) 大括弧{}括起来函数体 双引号(双括号)内的字符串原样输出 printf是C语言中的输出函数 “\n”是换行符,即在输出“Hello,everyone!” 后回车换行。 本程序的运行结果: Hello,everyone!
1.3 简单的C程序介绍 定义变量a,b,sum为整型(int) 例 1.2 main() { int a,b,sum; /*这是定义变量*/ a=123; b=456; /* 以下3行为C语句 */ sum=a+b; printf ("sum is %d\n", sum); } /*……*/表示注释部分, 是两个赋值语句, 使a和b的值分别为123和456。 使sum的值为a+b sum是要输出的变量,现在它的值为579 (即123+456之值) “%d”表示“以十进制整数形式输出”
1.3 简单的C程序介绍 例 1.2 程序运行结果: sum is 597
1.3 简单的C程序介绍 例1.3 输入两个数,输出值大的那个数。 main ( ) /* 主函数*/ { int a, b, c; /*声明部分,定义变量*/ scanf ("%d,%d",&a,&b); /*输入变量a和b的值*/ c=max (a,b); /*调用max函数,将得到的值赋 给c*/ printf ("max=%d",c); /*输出c的值*/ }
1.3 简单的C程序介绍 /*This is the max function*/ int max(int x,int y) /* 定义max函数,函数值为 整型, 形式参数x,y为整型*/ { int z; /* max函数中的声明部分,定义本函 数中用到的变量z为整型*/ if (x>y) z=x; else z=y; return (z); /*将z的值返回,通过max带回调用处*/ }
1.3 简单的C程序介绍 通过以上例子可以看出: 1.C程序是由函数构成的。每个程序由一个或多个函数组成,其中必须有且仅有一个主函数main( )。 2.一个可执行的C语言程序总是从main函数开始执行,而不论其在整个程序中的位置如何。 3.每条语句和数据定义的最后必须有一个分号(;)。
1.3 简单的C程序介绍 说明:在以下三种情况下不允许有分号: a.所定义的函数的名称后面不使用分号; b.在右花括号“}”后面不使用分号; c.预处理语句后面不使用分号。 main() {int a=10,area; area=a*a; ptintf(“area=%d”,area); } ; sum( ) ; { …… } #include “stdio.h” ;
1.3 简单的C程序介绍 4.C对输入输出实行函数化。 5.C程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。 6.可用/*……*/对C程序中的任何部分作注释,注释可以写在程序的任何位置上,“/*”与“*/”也可不在同一行上。 7.在C语言中,大小写字母是有区别的。(C语言习惯用小写字母)
1.4 C程序的开发过程 1.编辑:选择适当的编辑程序,将C语言源程序通过键盘输入到计算机中,并以文件的形式存入到磁盘中(.C) 2.编译:即将源程序翻译成机器语言程序的过程。编译出来的程序称为目标程序(.OBJ) 3.连接:编译后生成的目标文件经过连接后生成最终的可执行程序(.EXE) 如下图所示
开始 编辑 .C 源程序 编译 Y 出错? .OBJ 目标程序 N 库函数和其它目标程序 连 接 Y .EXE 可执行 程序 出错? N 执 行 N 结果正确? Y 结束
练习 1、请编写一个程序输出下列以下信息: *****************************you are very good! ******************************2、编写一个程序求50和145的和
本章小结 C 语言的特点 C程序的组成 C程序的开发过程
作业 P12 1.5 补充:编写一个C程序,计算长方形的周长并输出 长:a=220cm 宽:b=105cm
C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program 第2章 数据类型、运算符与表达式
基本数据类型 各类运算规则 本章内容
C语言数据类型 整型 字符型 单精度型 基本类型 实型(浮点型) 枚举类型 双精度型 数组 数据类型 构造类型 结构体类型 共用体类型 指针类型 空类型 2.1 C语言数据类型
2.2 常量与变量 2.2.1常量与符号常量 1.定义:在程序执行期间,其值不可改变的量称为常量 2.类型: • 数值常量 例如:10,3 , 2.68等 • 符号常量即用一个符号代表一个常量 例如: #define PI 3.1415926 main( ) { float r,l,s; r=2; l=2*PI*r; s=PI*r*r; printf(“l=%f, s=%f”, l,s); }
2.2.1常量与符号常量 说明: • 符号常量必须先定义后才能用它表示一个数值。 • 符号常量的值在其作用域内不能改变,也不能再被赋值。 • 符号常量名习惯用大写字母表示。
2.2.2 变量 1. 定义:程序执行期间值可以改变的量。 2.命名规则:变量名由标识符表示,只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 例如:下列标识符中,不合法的变量名有: M.D.John 12%gf 1add _ce36 age& 5thclass lotus-1-2-3 cd*ef
2.2.2 变量 说明: • 变量要“先定义,后使用” • 定义格式:类型说明符 标识符1, … ,标识符n 例如:int x, y, z; float a, b, c, d; • 选变量名时,要做到“见名知意” 例如:name st_num xm total class sum • 大小写字母是两个不同的字符,C变量名习惯 用小写字母表示。
2.3 整型数据 2.3.1整型常量 1、十进制整数:由数字(0-9)和正负号表示 例如:123、-456、0 等 2、八进制整数:以0开头,后面一串由八进制数字(0-7)组成 例如: 0123 即(123)8 =( 83 ) 10 012 即(12)8 =( 10 ) 10 3、十六进制整数:以0x或0X开头,后面一串由十六进制数字(0-9,a-f,A-F)组成 例如: -0x12 即 (-12) 16 =( -18 ) 10 0x2F 即 (2F ) 16 =( 47 ) 10
基本型:以 int表示 短整型:以 short int或short表示 1.类型 长整型:以 long int或long表示 无符号基本型(unsigned int) 无符号型 无符号短整型(unsigned short) 无符号长整型(unsigned long) 2.3.2 整型变量 说明: 一个无符号整型变量中可以存放的数的范围扩大一倍。 整型变量一般在内存中占2个字节(16位).
2.4 实型数据 2.4.1 实型常量 表示形式有如下两种: 1.由数字和小数点及正负号组成。 (注意:必须有小数点) 例如:23.678 .678 23. 2.由数字、小数点、字母e或E及正负号组成。 (注:e或E之前必须有数字,且后指数必须为整数) 例如: 3.5E-5 2e3 错误: E2 3.6e3.5 .e6 e
2.4.2 实型变量 实型变量可分为: 单精度(float型) 如: float x , y ; 双精度型(double型) 如:double a , b , c ;
2.4.2 实型变量 说明: • float 型变量在内存中占4个字节;double 型 变量在内存中占8个字节。 • 单精度实数提供7位有效数字;双精度实数提供15-16位有效数字。 • 一个实型常量不分float 和double 型, 一个实型常量可以赋给一个float 型或double 型变量,并根据变量的类型截取实型常量中相应的有效位数字。 例如: float a; double b; a=123456.789 ; b=123456.789 ;
2.5 字符型数据 2.5.1 字符常量 1 .字符常量:用单引号括起来的一个字符。 例如: ‘a’‘A’‘$’‘!’ 注:‘a’与‘A’是 的字符常量 不同 2. 转义字符:以一个‘\’开头的字符序列 例如:‘\ n’换行 ‘\ t’横向跳格(水平制表) ‘ \b’退格 ‘\v ’竖向跳格(垂直制表) ‘ \r ’回车 ‘ \f ’走纸换页 ‘ \a ’报警 ‘ \ 0 ’空字符
“\ddd”与“\xhh”分别表示用八进制数或十六进制数表示一个字符。“\ddd”与“\xhh”分别表示用八进制数或十六进制数表示一个字符。 例如: ‘\123’‘\x65’‘ \129’ • 由于 ‘\ ’在C语言中都有了特殊的意义,故要想在字符串中使用它们,须在其前面再加上一个反斜线。 例如: \\反斜线 \ ’单引号 \”双引号 • 若反斜线出现在以上未提到的字符前,则反斜线被忽略,而该字符就是它的字面表示。 例如: \c表示字符 c • 用于引入转义字符的反斜线还可在字符串或预处理语句中当作续行符使用。 例如:“I am a \ <CR> “I am a student .” student. ” 2.5.1 字符型数据
2.5.2 字符串常量 1.定义:括在一对双引号之内的字符序列或转义字符序列称为字符串常量。 例如:“How are you!”“a”“*abc\n\t” 2.存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符‘ \0’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占n+1个字节。 ‘b’ 与‘B’是否相同? ‘b’ 与“b”是否相同? b为98,B为66 'b'是字符常量,“b"是字符串常量
2.6 变量赋初值 1.初始化:在定义变量的同时为变量赋初值 2.形式: 类型标识符 变量名=常量或常量表达式 例如: int x=10 ; char ch=‘a’ ; • 变量赋初值允许使用符号常量 例如: #define PI 3.1415926 …... float x=PI ; …...
2.6 变量赋初值 • 可对被定义的变量的一部分赋初值 例如: int a , b, c=1, d=2; float r=2 ,l, s; • 可对几个变量赋以同一个初值 例如: int a=6, b=6, c=6; 不要写为: int a=b=c=6;
2.7 数据类型的转换 形式: 隐式转换 (由系统自动进行) 显式转换 (强制类型转换) 隐式转换的转换规则: int unsigned int long int unsigned long int double short, charfloat (1) float 型数据一律转换成double型数据。 (2) char和shortint型数据一律转换成int型数据 以上两条转换原则说明:即使两个操作数类型相同,但只要它们同属char,short int或float类型,则转换一定发生。
2.7 数据类型的转换 (3)若两个操作数类型不同,则要将低级别的转换成高级别的类型 例:若有: int i; double d ; 试判断表达式i* d的类型 double型
2.8 算术运算符和算术表达式 2.8.1基本的算术运算符: + - * / % 说明: • 上述运算符均为双目运算符(即有两个操作数) 例如: 5+7 3*a • “+”“-”作单目运算符时分别为正值、负值运算符。例如: -5 • 在“/”运算中,若操作数均为整数,则执行整除运算,舍去小数部分。 例如:5/3= • “%”要求两侧均为整数,“%”运算不能用于float 和 double 型数据 例如:5%3=2
2.8.2算术表达式和运算符的优先级与结合性 1.算术表达式:用算术运算符和括号将操作数连接起来的,符合C语法规则的式子。 例如:‘a’ + ‘b’ + a*b/c +2.8 2.优先级:* / % 高于 + - 3.结合性:“左结合性”或称为“自左至右的结合方向”即运算对象先与左边的运算符结合。 例如:a - b + c
2.8.3 强制类型转换 形式:(类型名)(表达式) 例如:( double) (a+b) 说明: 1、表达式应用括号括起来 例如:(int)(x+y) ; 若要得到 x/2 的小数部分,应写为: (float)x/2还是 float (x/2) 2、在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。 例如: float x=8.6 ; int y; y=(int)x ;
2.8.4 自增、自减运算符(++、--) 作用:使变量的值增1或减1,如: ++i , --i (先加减后使用) i++, i-- (先使用后加减) ++i 先执行i=i+1,再使用i的值 i++ 先使用i的值,再执行i=i+1 例如:int a=1, b; b=++a ; b=a++ ; 说明: (1)为单目运算符 (2)++ 、--只能用于变量,而不能用于常量或表达式。 例如:10++,(x+y)++,++’a’, b++ 中合法的为: (3)自增、自减运算符为右结合性(即自右至左)。 例如:-a++ -(a++)
2.9 赋值运算符和赋值表达式 2.9.1 赋值运算符(=) 形式:变量名=常量或表达式 作用:将右边常量或表达式的值赋给左边的变量 例如:a=3; b=c+d ; 2.9.2 复合赋值运算符 • 复合赋值运算符:在赋值符“=”之前加上其它运算符 • 共有10种复合赋值运算符 +=,-=,*=,/=,%=,<=,>=,&=,^ =,|= 例如:a+=3 a=a+3 x*=y+3 x=x*(y+3)
2.9.3 赋值表达式 定义:由赋值运算符将一个变量和一个表达式连接起来的式子。 形式:变量 = 表达式 说明: 赋值表达式的值为被赋值的变量的值。 例如:a=b=c=6 a=(b=4)+(c=6) a=(b=4)*(c=6) 2.9 赋值运算符和赋值表达式
2.9 赋值运算符和赋值表达式 • 赋值表达式中可以包含复合赋值运算符 • 例如:若a=12,计算表达式a+=a-=a*a运算后a的值 • 第一步: a-=a*a a=a-a*a=12-12*12=-132 • 第二步: a+=-132 a=a+(-132)=-264 • 练习: 写出顺序执行下列表达式运算后的x值: 1. x=a=b=10 2. x=25%(c=3) 3. x/=x-(a%2) 其中 (a=5) 4. x*=x+=x-=x 10 1 1 0
2.10 逗号运算符和逗号表达式 1. 逗号运算符:即“,” 优先级:为所有运算符中级别最低的。 2. 逗号表达式 形式:表达式1,表达式2,……,表达式n 求解过程:顺次求解表达式1,表达式2…… 最后求解表达式n。 逗号表达式的值为表达式n的值。 例如:a=3*5,a*4 a=3*5,a*4,a+5 x=(a=4%3 , a+1, a*10) 60 20 10
小结 变量赋初值 数据间的混合运算 赋值运算符及表达式 逗号运算符及表达式
作业 教材后习题 2.7 2.9 补充: 1、下面哪个表达式的值为4.(单选) A. 11/3 B. 11.0/3 C. (float)11/3 D. (int)(11.0/3+0.5) 2、 指出下面错误的表达式:(多选) A. a+b=5 B. 56=a11 C. i=i++ D. 5.6+6.2%3.1 E. 12 F. a=5,b=6,c=7 3、执行以下程序段后、变量a,b,c的值分别是 多少? int x=10,y=9,a,b,c; a =- -x ; b = x ++; c = y- -;
C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program C Program 第3章 顺序程序设计
本章内容 数据输出 • putchar( ) • printf( ) 数据输入 • getchar( ) • scanf( ) 程序举例