C程序设计计算机基础教研室高建良2关于本课程的学习为什么要学本课程怎么来学习本课程3关于本课程的学习为什么要学程序设计?4关于本课程的学习为什么要学C?C不实用?C落后了?C难学?5关于本课程的学习怎么来学习本课程?6C程序设计第一章C语言概述第二章数据类型及基本运算第三章顺序结构程序设计第四章选择结构程序设计第五章循环结构程序设计第六章数组第七章函数第八章指针第九章结构与其他自定义类型第十章文件7第一章C语言概述概述C程序简介8概述程序设计与高级语言C语言的产生与发展C语言的特点9程序设计与高级语言机器指令指令系统机器语言机器程序10程序设计与高级语言汇编指令汇编语言汇编语言源程序汇编程序例11程序设计与高级语言程序设计语言低级语言和高级语言高级语言源程序、编译程序集成环境例:TC、VC等12C语言的产生与发展C语言发明于1972年C++发明于1980年13C语言的特点语言描述简洁、灵活、高效有丰富的数据类型和运算符提供了功能齐全的函数库具有结构化程序设计风格具有汇编语言特征具有良好的通用性和程序的可移埴性14C程序简介C程序设计规则C程序的编译与运行简单的C程序(一)简单的C程序(二)简单的C程序(三)15C程序设计规则程序中使用到的一切数据都必须在使用之前对其类型和存储属性加以定义和说明函数是C程序的基本模块,它应该包括函数名、参数说明表和函数体三个部分16C程序设计规则一行上允许写多个语句,或一句语句分写在多行上,但语句结束前必须加分号允许在程序中插入注释,注释行必须以规定的符号“/*”开头,以符号“*/”结束书写格式自由,为提高程序的可读性,可采用“缩进”方式书写17C程序的编译与运行CC++TCVC18第1章作业:利用printf函数打印自己的姓名。将源文件hw1_1.c上传19第二章数据类型及基本运算数据的表示基本数据类型及其表示算术运算符和算术表达式20数据的表示信息与数据的特征数据类型21信息与数据的特征信息数据数据处理22数据类型在C语言中,数据总体上可分为基本类型构造类型指针类型23基本数据类型及其表示标识符、常量与变量整型数据实型数据字符型数据24标识符、常量与变量标识符常量变量25标识符必须满足以下定义规则:必须由字母或下划线开始,由字母、数字和下划线组成的长度不超过32的字符串大、小写字母表示不同意义不能与C关键字同名标识符、常量与变量有关标识符练习26常量可分为:数值常量符号常量标识符、常量与变量27符号常量符号常量的定义:#define符号常量名常量例:#definePI3.1415926#defineN50标识符、常量与变量28变量规定变量在使用前必须说明变量的说明:数据类型变量名列表例:inta,b,x;标识符、常量与变量29在程序中,一个变量占据着一个实际的存储单元,变量名实际上是存储单元的标志,存储单元中的内容是变量的值。允许在定义变量的同时对其赋初值标识符、常量与变量30整型数据inta,b;shortc,d;longm=6;longn=j=8;unsignedlongk;a=123;b=045;c=d=0x3d8;k=0773L;简单的C程序(二)31实型数据floata,b;doublex,sum;a=29.56;b=6.8e-07;x=.33;sum=55.;错误的数据表示简单的C程序(三)32字符型数据字符型常量字符型常量中字母区分大小写转义字符以“\”开头来标记33字符型数据charc1,c2,c3=’A’;c1=98inta,b=49;c2=b;a=c1;34基本运算符和表达式算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位表达式35算术运算符和算术表达式算术运算符简单的C程序(四)36算术运算符和算术表达式算术运算符的运算优先级和结合性37算术运算符和算术表达式算术表达式说明:在算术表达式中没有上标和下标乘号必须用*表示,不能省略括号一律使用圆括号38算术运算符和算术表达式写出下列代数式的C表达式:x是个三位数,写出取其各位数的表达式xx212)1(loglog4xebbca101x39算术运算符和算术表达式自动类型转换:main(){floaty,z=242.5;unsignedx=2;shorts=4;y=10+'b'+5.7*x+z/'a'-s*12.5;printf(y=%f,y);}40算术运算符和算术表达式强制类型转换:main(){floatx=4.55;printf((int)x=%d,x=%f,(int)x,x);x=8*(int)(1/2+5/(float)2);}41算术运算符和算术表达式例:设floatx,y,z;x=6/4;y=6./4;z=-6.8%4结果:x的值为1.0,y的值为1.542算术运算符和算术表达式自增1、自减1运算符为单目运算符其有两种运算形式:前缀形式和后缀形式,功能不同前缀形式的自增1、自减1运算的优先级高于算术运算符中的所有双目运算符其运算对象只能是变量(可以是实数)43算术运算符和算术表达式例:设intx=5;则:y=++x;结果:y=6,x=6y=x++;结果:y=5,x=6x++;结果:x=6y=x++*--x结果:?44赋值运算符和赋值表达式基本赋值运算符形式:=功能:将赋值运算符右边的表达式的值赋给其左边的变量。45赋值运算符和赋值表达式注意:赋值号左边只能是变量如果右边表达式类型与左边变量的类型不一致,则先将右边表达式的值自动转换成与左边变量相同的类型,再进行赋值46赋值运算符和赋值表达式复合赋值运算符形式:算术运算符=功能:对赋值运算符左、右两边的运算对象进行指定的算术运算符的运算,再将运算结果赋予左边的变量。47赋值运算符和赋值表达式a+=b;等价于a=a+b;a-=b;等价于a=a-b;a*=b+1;等价于a=a*(b+1);x+=3+x%(-3);设x=1148赋值运算符和赋值表达式赋值表达式k=j=1;intk,a=1,j=5;a+=j++;a=20+(j=7);a=(j=9)+(k=7);49逗号运算符和逗号表达式逗号的用法有两种:分隔符;运算符。C允许用逗号连接表达式,双目运算符,运算优先级最低。a=2*6,a-4,a+15;50逗号运算符和逗号表达式逗号表达式t=a;a=b;b=t;t=a,a=b,b=t;x=(5+5,10+10);x=?intj=5;a=(a=j+1,a+2,a+3);a=?51关系运算符和关系表达式关系运算符6种关系运算符:、=、、=(优先级高)、==、!=(优先级低)关系运算符优先级低于算术运算符,高于赋值运算符。52关系运算符和关系表达式关系表达式fabs(x-y)1.0E-06zy+xx!=y==z-2x=y==z-1若关系表达式成立,其值为非零,否则为零53逻辑运算符和逻辑表达式逻辑运算符3种逻辑运算符:!、&&、||运算规则优先级54逻辑运算符和逻辑表达式逻辑表达式例:设a=1,b=2,c=3(ab)&&(c0)||a!a||(b=0)&&(c==a)(!ab)&&(c==b)&&!a(a1)||(b+14)(ab)&&(++c)c=?55逻辑运算符和逻辑表达式注意:代数中的不等式0x5的写法C语言允许直接对数或字符进行逻辑运算56位运算符和位表达式位运算6种位运算符,除了“~”为单目运算符,其余均为双目运算符位运算对象只能是整型或字符型数据。57位运算符和位表达式注意:右移运算按“逻辑右移”还是“算术右移”视不同的计算机系统而定可以进行位复合赋值运算符的运算优先级58位运算符和位表达式例:1|3+311+22~15+81132113|21&&3|3位运算实例59运算符的优先级60第2章作业:完成教材中第2章的全部习题,答案写在文本文件hw2.txt中上传。61第三章顺序结构程序设计顺序结构的基本特点是构成程序的语句都是按照其出现的顺序逐条执行的。62第三章顺序结构程序设计语句概述表达式语句数据的输出数据的输入顺序结构程序设计举例63语句概述说明:每个语句都要用分号结尾,分号是语句间的分隔符声明部分的内容不是语句64基本语句包括表达式语句、复合语句和空语句65选择控制语句可以根据某个条件来控制和改变程序流向。66重复控制语句这类语句可以根据某种条件控制一段程序被重复执行多次。67转移语句这类语句可以无条件地改变程序的流向。68表达式语句x=y+z;x+y;i++;printf(“%d”,x);a=b=c=2;i+=5+j;69表达式语句注意:表达式语句和赋值语句、赋值表达式的关系赋值表达式可以出现在任何表达式允许出现的地方声明变量时不能采用多重赋值形式70数据的输出C语言有输入、输出函数,而没有输入、输出语句。include命令的格式:#includestdio.h或#include“stdio.h”71putchar函数形式:putchar(参数);功能:在显示器上输出一个字符参数:可以是字符型变量、整型变量或相应的常量72putchar函数例:使用库函数putchar()输出各种字符。main(){charch1,ch2;inti;ch1='C';ch2='h';i=105;putchar(ch1);putchar(ch2);putchar(i);putchar('n');putchar('\141');putchar('\n');}73printf函数形式:printf(“格式控制字符串”,输出项1,输出项2,…);74printf函数功能:将各输出项的值按指定的格式显示在屏幕上printf函数示例75printf函数参数:输出项可以是变量、常量和表达式格式控制字符串中允许包含格式编辑符和原样输出的字符串格式编辑符形式:%格式修饰格式字符格式修饰包括:标志、类型修饰、输出最小宽度和精度等76printf函数标志:标志字符主要有-、+等。77printf函数输出宽度:可以用十进制数限定输出数据的位数78printf函数精度:对于float或double类型的实型数,可以用“m.n”的形式指定数据的输出宽度和小数位数79printf函数类型修饰:类型修饰符有h和l两种,l表示输出项是长整型、无符号长整型或双精度实型80printf函数特殊字符的输出:可以用“\\”输出一个“\”;用“%%”输出一个“%”81printf函数注意:格式控制字符串中的格式说明与输出项必须保持类型相同和个数一致82数据的输入83getchar函数形式:getchar();功能:从键盘上读取一个字符参数:不带任何参数,函数的返回值是输入字符的ASCII码84getchar函数main(){charc;c=getchar();printf(%c:%d\n,c,c);}85scanf函数形式:scanf(“格式控制字符串”,输入项1,输入项2,…);86scanf函数功能:按指定的格式接收由键盘输入的数据,并存入输入项变量所在的内存单元中87scanf函数参数:格式控制字符串与printf函数类似,包含格式编辑符和原样输入字符输入项必须为地址引用,通常由“&”后面跟变量名组成88scanf函数参数格式编辑符的形式:%格式修饰格式字符89scanf函数常用的格式控制格式字符:用于规定相应输入项的输入格式输入数据宽度:scanf函数允许用十进制整数设定输入数据的宽度,系统自动按此宽度截取所需数据类型修饰符:类型修饰符为h和l,分别表示输入短整型和长整