《c语言基础课件》由会员分享,可在线阅读,更多相关《c语言基础课件(184页珍藏版)》请在金锄头文库上搜索。
1、第一章 C语言基础,图一: 图二:,先介绍几个简单的C程序,然后从中分析程序的特性。例1.1 main ( )printf(“This is a c program.n”); 其中main表示“主函数”。每一个C程序都必须有一个main函数。函数体由大括弧 括起来。本例中主函数内只有一个输出语句,printf是C语言中的输出函数。双引号内的字符串按原样输出,“n”是换行符,即在输出“This is a c program.”后回车换行,语句最后有一分号。,例1.2 main ( )int a,b,sum; /*定义变量*/ a=112,b=234;sum=a+b;printf(“sum is
2、%dn”,sum); ,/* */表示注释部分,注释可用汉字、英语或拼音来进行描述。注释只是给人看的,作用是方便人来读懂这个程序,对编译和运行不起作用。注释可加在程序的任何位置。 第3行是声明部分,定义变量a和b,指定a和b为整型(int)变量。 第4行是两个赋值语句,使a和b的值分别为112和234。 第五行使sum的值为a+b。 第6行中“%d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式,“%d”表示“十进制整数类型”,在执行输出时,此位置上代以一个十进制整数型。,例1.3 main ( ) /*主函数*/ int a,b,c; /*定义变量*/ scanf(“%d,%
3、d”, /*将z的值返回,通过max带回调用处*/,本程序包含两个函数:主函数main和被调用的函数max。max函数的作用是将x和y中较大者的值赋给变量z。return语句将z的值返回给主调函数main。返回值是通过函数名max带回到main函数的调用处。main函数中的scanf是“输入函数”的名字。程序中的&a和&b中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。,main函数中第4行为调用max函数,在调用时将实际参数a和b的值分别传送给max函数中的形式参数x和y。经过执行max函数得到一个返回值(即m
4、ax函数中变量z的值),把这个值赋给变量c。然后输出c的值。printf函数中双引号内的“max= %d”,在输出时,其中“%d”将由c的值取代之,“max= ”原样输出。,a) C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。因此,函数是C程序的基本单位。(被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数。) 可以说C是函数式的语言,程序中的全部工作都是由各个函数分别完成的。编写C程序就是编写一个个函数。C的这种特点使得容易实现程序的模块化。,b) 一个函数由两部分组成:函数的首部,即函数的第一行。包括函数名、
5、函数类型、函数属性、函数参数(形参)名、参数类型。例如,例1.3中的max函数的首部为int max (int x, int y)函数类 函数 函数参数 函数参数 函数参 函数参数型 名 类型 名 类型 名一个函数名后面必须跟一对圆括号,函数参数可以没有,如main()。 函数体,即函数首部下面的大括号内的部分。如果一个函数内有多个大括号,则最外层的一对为函数体的范围。 函数体一般包括: 声明部分:在这部分中定义所用到的变量,如例1.3中main函数中的“int a, b,c”。 执行部分:由若干个语句组成。,c) 一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如
6、何。 d) C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。 每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。 e) C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。 f) 可以用/*/对C程序中的任何部分作注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。,C语言中的数据有常量和变量之分。 一、常量:整型、实型、字符型 1、整型有三种表示形式: a.十进制整型:非0开头,允许出现0-9共十个数字; b.八进制整型:以0开头,允许出现0-7共八个数字; c
7、.十六进制整型:以0x开头,允许出现0-f共十六个数字。 不论那种形式,整型一般在微机中占用2个字节,数值的表示范围:-3276832767。,数据,2、实型有两种表示形式: a.十进制:由0-9和小数点组成,必须包含小数点,小数点的两边不一定要求都有数字。 b.指数:类似数学中的指数表示法。5.1e-27。e的前后必须有数字,e后面的指数必须为整数,尾数可以是整数也可以是小数。 不论那种形式,实型一般在微机中占用4个字节,数值的表示范围:-10(38)10(38),有效位数7位。 3、字符型 用单引号括起来的单个字符;转义字符。字符型一般在微机中占用1个字节。,下列哪些可以作为C语言的常量:
8、 0xA5, 2.5e-2, 3e2, 0582, t, ”n”, 275, 02, 038,0, 0xAL, 5e2.0, e-3, 2e0, 1.3e 10110B,0xffa,x2a2,二、变量 1、标识符:即变量名 命名规则:只能由字母、数字、下划线三种字符组成,且第1个字符必须为字母或下划线;区分字母大小写;标识符的命名不得为C语言中的关键字。 char,int,float,double,signed,unsigned,short,long,void,struct,union,typedef,enum,sizeof auto,extern,register,static do,whi
9、le,for,if,else,switch,case,default,goto,continue,break,return include,define,ifdef,ifndef,undef,endif,elif,可以作为用户标识符的是哪些: default,cher,swicth,Case,t0,_if,2、变量的定义 C语言规定变量在使用之前必须先定义。 一般形式:类型说明符 变量1,变量2,变量n; int,long,float,double,char,运算符,常用运算符: a.圆括号运算符:() b.算术运算符:+、-、*、/、% c.赋值运算符:= d.关系运算符:、=、!= e.逻
10、辑运算符:&、|、! f.强制类型转换运算符:(类型),高 double floatlongunsigned低 int char,已知:char w;int x;float y;double z;,则表达式w*x+z-y结果的类型是,赋值运算符:= 注意: 运算规则:右结合 定义时不能连续给变量赋初值 int x=5; (正确) int x=y=5; (错误) int x=5,y=5; (正确) 复合的赋值运算符(+=、- =、*=、/=、%=) a+=b 等价于a=a+b 例如,有表达式x+=x+=x*=x-2,假设x=5,逻辑运算符:&、|、! 逻辑表达式的结果是逻辑值,用0(逻辑假)、1
11、(逻辑真)表示 逻辑运算符的运算规则:,() 高!、+、-*、/、%+、-、=、!=&|= 低,函数,putchar(输出字符) getchar(输入字符)printf(格式输出) scanf(格式输入)puts(输出字符串) gets(输入字符串) 在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户到源文件中。在头文件中包含了与用到的函数有关的信息。例如使用标准输入输出库函数时,要用到“stdio.h”文件。文件后缀“h”是head的缩写,#include命令都是放在程序的开头,因此这类文件被称为“头文件”。在调用标准输入输出库函数时,文件开头应有以下预编译
12、命令:#include或 #include”stdio.h”stdio.h是standard intput&output的缩写,它包含了与标准I/O库有关的变量定义和宏定义。考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加#include 命令。,一、printf函数的一般格式 printf(格式控制,输出表列); printf(“a=%d, b=%d”,a,b); 括号内包括两部分: (1)“格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息: 格式说明,由“%”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格
13、式说明总是由“%”字符开始的。 普通字符,即需要原样输出的字符。例如上面printf函数中双引号内的逗号、空格、a=和b=。 (2)“输出表列”是需要输出的一些数据,可以是表达式。,对不同类型的数据用不同的格式字符。常用的有以下几种格式字符: d格式符。用来输出十进制整数。有以下几种用法: %d,按整型数据的实际长度输出。 %md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 %ld,输出长整型数据。如:long a=135790;printf (“%ld”,a);如果用%d输出,就会发生错误,因为整型数据的范围为3276832767。对long
14、型数据应当用%ld格式输出。对长整型数据也可以指定字段宽度,如将上面printf函数中的“%ld”改为”%8ld”,则输出为:135790 一个int型数据可以用%d或%ld格式输出。,c格式符用来输出一个字符。 s格式符用来输出一个字符串。有几种用法:%s,输出一个字符串%ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns,其中m、n含义同上,n个字符输出在m列范围的
15、左侧,右补空格。如果nm,则m自动取n值,即保证n个字符正常输出。,main( )printf(“%3s,%7.2s,% .4s,%-5.3sn”,”CHINA”, ”CHINA”, ”CHINA”, ”CHINA”); 输出如下:CHINA,凵凵凵凵凵CH,CHIN,CHI凵凵,o格式符以八进制数形式输出整数。由于是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。 x格式符以十六进制数形式输出整数。同八进制相似,同样不会出现负的十六进制数。,main( ) int b=-2;printf(“b=%d,%o,%xn”,b,b,b); ,f格式符用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法: %f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。应当注意,并非全部数字都是有效数字。单精度实数的有效位数一般为7位。 %m.nf指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。 %-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。,