1、第第1章章 C语言基础知识语言基础知识1.1 C语言概述语言概述 1.2 简单简单C程序与上机步骤程序与上机步骤 1.3 数据类型数据类型 1.4 常量与变量常量与变量 1.5 运算符和表达式运算符和表达式 例题链接例题链接例题链接例题链接 例例1.1例例1.2例例1.3例例1.4例例1.5例例1.6例例1.7例例1.8例例1.9例例1.10例例1.11例例1.12例例1.13例例1.14例例1.15例例1.16例例1.171.1 C语言概述语言概述P2返回返回nC语言是由附录语言是由附录A中列出的中列出的32个个关关键字键字再加上再加上语法规则语法规则构成的。构成的。e1.c编辑编辑编译编译
2、e1.obj连接连接e1.exe运行运行输出结果输出结果1.1.1 什么是什么是C语言语言P2n程序设计语言的发展程序设计语言的发展:机器语言机器语言(1GL)汇编语言汇编语言 (符号语言,符号语言,2GL)面向过程的高级语言面向过程的高级语言 (算法语言,算法语言,3GL)非过程化的高级语言非过程化的高级语言 (4GL)(5GL)1.1.2 C语言的发展语言的发展简洁、高效、灵活和强功能简洁、高效、灵活和强功能数据类型丰富,适应系统软件和应用软数据类型丰富,适应系统软件和应用软件开发的需要件开发的需要C语言有丰富的运算符语言有丰富的运算符(34种种,见附录见附录C)C语言是一种结构化语言,适
3、合于大型语言是一种结构化语言,适合于大型程序的模块化设计程序的模块化设计C语言生成的代码质量高语言生成的代码质量高可移植性好可移植性好C语言已逐步发展为通用程序设计语言语言已逐步发展为通用程序设计语言1.1.3 C语言的特点语言的特点nC语言的缺陷主要反映在:语言的缺陷主要反映在:运算符优先级太多,不便记忆运算符优先级太多,不便记忆还没有一个一致公认的标准还没有一个一致公认的标准C不是一个强类型的语言,类型检查太不是一个强类型的语言,类型检查太弱,转换比较随便,不太安全弱,转换比较随便,不太安全1.1.3 C语言的特点语言的特点1.1.4 C程序形式和程序执行过程程序形式和程序执行过程程序如下
4、:程序如下:#include#include int mysum(int m,int n);P3main()int a,b,x;double c,y,z;c=4.0;y=sqrt(c);a=10;b=20;x=mysum(a,b);z=x+y;printf(z=%lfn,z);int mysum(int m,int n)int k;k=m+n;return k;程序的运行结果是:程序的运行结果是:z=32.000000 c=4.0;c=4.0;y=sqrt(c);y=sqrt(c);a=10;a=10;b=20;b=20;x=mysum(a,b);x=mysum(a,b);z=x+y;z=x+
5、y;main函数函数 文件文件math.h mysum函数函数n掌握解决简单问题的步骤掌握解决简单问题的步骤 n用用C语言能够实现如下程度的功能语言能够实现如下程度的功能演示演示:shili_13本课程的目标本课程的目标1.2 简单简单C程序与上机步骤程序与上机步骤简单简单C程序程序1.2.2 上机步骤上机步骤P4返回返回1.2.1 简单简单C程序程序#include main()printf(Lets study the C language.);main是主函数名是主函数名有且仅有有且仅有一个主函数一个主函数函函数数体体本函数体有一条输出语句本函数体有一条输出语句运行结果如下:运行结果如下
6、:Lets study the C language.不能丢不能丢!命令行命令行注意:区分大小写注意:区分大小写P4#include main()printf(Lets study the C language.n);/*输出字符串后换行输出字符串后换行*/printf(Its interesting.n);换行符换行符 注释部分注释部分/*输出字符串后换行输出字符串后换行*/运行结果:运行结果:Lets study the C language.Its interesting.函数体可有多条语句函数体可有多条语句 注意书写格式1.2.2 上机步骤上机步骤P51.3 数据类型数据类型返回返回数
7、数据据类类型型基本类型基本类型整型整型整型整型 (int)长整型长整型 (long)实型实型(浮点型浮点型)单精度型单精度型(float)双精度型双精度型(double)数值类型数值类型字符类型字符类型(char)枚举类型枚举类型(enum)构造类型构造类型(组合类型组合类型)数组类型数组类型结构体类型结构体类型(struct)共同体类型共同体类型(union)文件类型文件类型 (file )指针类型指针类型空类型空类型 (void)不返回任何类型的数据不返回任何类型的数据1.3 数据类型数据类型#include main()int a,b,sum;float ave;a=5;b=6;sum=
8、a+b;ave=sum/2;printf(“%d,%fn”,sum,ave);sum=11?ave=?5.5?5保留六保留六位位 输出整型输出整型输出实型输出实型P7返回返回说说 明明n常用数据类型:整型、实型、字符型、常用数据类型:整型、实型、字符型、数组、结构体类型、指针类型等数组、结构体类型、指针类型等n一定要选择合适的数据类型一定要选择合适的数据类型n使用正确的输出格式说明使用正确的输出格式说明1.4 常量与变量常量与变量P8返回返回1.4.1 常量与变量的概念常量与变量的概念#include#define FIRST 1000 main()int s;s=FIRST+100;prin
9、tf(s=%dn,s);s=FIRST-100;printf(s=%dn,s);都是常量都是常量 变量变量s=1100s=900将用将用FIRST代替代替1000P8变量的命名规则变量的命名规则n由由az、AZ、09、_ 组成组成 n变量名的第一个字符变量名的第一个字符不能是数字不能是数字n关键字关键字不能作为变量名不能作为变量名注意:区分大小写注意:区分大小写 Int float _123 9k qbasic printf a.b year business()()()()()()()()()()变量名要简单明了、见名知意变量名要简单明了、见名知意 不提倡用函数名不提倡用函数名 变量必须先定
10、义后使用main()int a,b;a=5;b=6;int sum;sum=a+b;printf(“%dn”,sum);下面程序是错误的。下面程序是错误的。定义变量定义变量 int a;制造容器制造容器 a 不定值不定值a=5;5a=6;6printf(“a=%d”,a);输出输出 a=6注意:注意:a代表存储单元代表存储单元6是存储单元中的内容是存储单元中的内容1.4.2 整型常量与变量整型常量与变量 问问printf(”%d,%x”,21,21);的运行结果?的运行结果?问问printf(”%d,%o”,21,21);的运行结果?的运行结果?P10整型常量的常用类型整型常量的常用类型 2整
11、型变量整型变量n整型变量中整型变量中只能存放只能存放整型数据整型数据n整型变量的常用类型:整型变量的常用类型:基本型基本型 int (一般占(一般占2个字节)个字节)长整型长整型 long(一般占(一般占4个字节)个字节)n定义变量时必须根据需要给出其类型定义变量时必须根据需要给出其类型#include main()int a=0,b=0;long int c=0;a=32767;b=32768;c=32768;printf(%d,%d,%ldn,a,b,c);32767,-32768,32768 基本基本型型长整长整型型注意:数据溢出注意:数据溢出-327683变量初始化变量初始化int a
12、=5;int a;a=5;int a=5,b=6;int a,b;a=5;b=6;不能,不能,b 没有定义没有定义能否改成能否改成“;”1.4.3 实型常量与变量实型常量与变量#include main()printf(%fn,123451234512345.1);printf(%en,12345.6788885);123451234512345.094000 按小数形式输出按小数形式输出 P12#include main()printf(%fn,123451234512345.1);printf(%en,12345.6788885);123451234512345.094000 1.2345
13、7e+04按指数形式输出按指数形式输出 P121.4.3 实型常量与变量实型常量与变量2实型变量实型变量 单精度型单精度型 float 占占4个字节个字节 有效位至少有效位至少6 双精度型双精度型 double 占占8个字节个字节 有效位至少有效位至少15#include main()float a=12.3,b=0;double c=12345.67;b=12345.67;printf(%fn,a);printf(%fn,b);printf(%lfn,c);12.30000012345.66992212345.670000按双精度按双精度形式输出形式输出1.4.4 字符型常量与变量字符型常量
14、与变量 常规字符常规字符 用单引号括起来的单个字符用单引号括起来的单个字符 转义字符转义字符 用用开头的字符序列开头的字符序列n字符常量按其字符常量按其ASCII码值参加整数运算码值参加整数运算 P13#include main()printf(%c-%d,%c-%dn,a,a,A,A);printf(%d,%cn,a+1,A+1);printf(%dn,a-A);a-9732A-6598B#include main()printf(%c%cn,1,x1);printf(%c%cn,25,x15);printf(I am OKn);I am OK2字符型变量字符型变量 n字符型变量字符型变量
15、char 占一个字节占一个字节 n存放存放ASCII字符集中的任何字符集中的任何一个一个字符字符#include main()char c1=65,c2=A,c3=101,c4=x41;int sum=0;sum=c2+30;printf(%c,%c,%cn,c1,c3,c4);printf(%d,%d,%dn,c1,c3,c4);printf(sum=%dn,sum);sum=95(=182+1=65)A,A,A65,65,65(=416+1=65)1.5 运算符和表达式运算符和表达式P16返回返回1.5.1 算术运算符和表达式算术运算符和表达式表达式表达式2+3.5的值?的值?5.5 表达
16、式表达式1/2的值?的值?0 0.5 表达式表达式1/2.0的值?的值?表达式表达式5%2的值?的值?1 表达式表达式2%5的值?的值?2 2.0%5()注意:注意:P16说明:说明:n“若运算量都是整型,则按整型计算若运算量都是整型,则按整型计算 结果为整型结果为整型 若至少有一个为实型,则先转化为双精度若至少有一个为实型,则先转化为双精度型后计算型后计算 结果为双精度型结果为双精度型 floatintlongdoublechar转转换换方方向向charfloat2算术表达式算术表达式求平方根函数求平方根函数第一步:第一步:5*(6+3.0)/2)第二步:第二步:5*(9.0/2)第三步:第
17、三步:5*4.5第四步:第四步:22.5表达式的值表达式的值注意:注意:n数学中的数学中的“”、“”用多层用多层“()”代替代替n printf(“%d”,32767+1);的运行结果是的运行结果是 -32768,而不是,而不是32768 超过数据范围超过数据范围 bar23.14159*(r*r)/(a+b)无乘无乘方运方运算符算符不能不能用用不能不能丢丢不能不能丢丢可省可省略略可省可省略略1.5.2 赋值运算符和表达式赋值运算符和表达式 =+=-=*=/=%=简单赋值运算符简单赋值运算符 复合赋值运算符复合赋值运算符 P182赋值表达式赋值表达式 ni=3*2是赋值表达式是赋值表达式32=
18、6n赋值表达式的一般形式是:赋值表达式的一般形式是:变量变量=表达式表达式 i变量变量必须是必须是变量名变量名 任何合法任何合法表达式表达式 表达式表达式赋值表达式的值:赋值表达式的值:b=5 b=b+2 57得到得到75b7表达式表达式b=b+2的值为的值为7赋值表达式的值:赋值表达式的值:当当a的值为的值为1,b的值为的值为2时时赋值表达式赋值表达式a=b 的值是的值是 多少?多少?2当当a的值为的值为1,b的值为的值为2时时赋值表达式赋值表达式b=a 的值是的值是 多少?多少?1赋值表达式赋值表达式x=(y=8)+1的值是多少?的值是多少?9赋值表达式赋值表达式x=y=5的值是多少?的值
19、是多少?5结合方向为自右至左结合方向为自右至左注意:注意:n赋值运算符的两边数据类型不一致赋值运算符的两边数据类型不一致时:时:例如,例如,int a;a=(int)4.5;4赋给赋给a例如,例如,int a;a=4.5;系统可自动转换:系统可自动转换:可人为地转换可人为地转换:自动转换成自动转换成44赋给赋给a表达式的值为表达式的值为4强制类型转强制类型转换换1.5.3 逗号运算符和表达式逗号运算符和表达式n在所有运算符中优先级最低在所有运算符中优先级最低,P20在此无意在此无意义义【例例1.16】逗号表达式的示例。逗号表达式的示例。#include main()int a=0,b=0,x=0,y=0;a=(x=8,x%5);b=x=8,x%5;printf(%d,%d,%d,a,b,(y=2,y*3);2逗号表达式逗号表达式运行结果运行结果 3,8,6a的值变为的值变为3b的值变为的值变为8需输出需输出的字符的字符格式格式要求要求分隔符分隔符 逗号运算符逗号运算符1.5.4 自加、自减运算符自加、自减运算符i+;+i;都使都使i的值增的值增1i-;-i;都使都使i的值减的值减1P20自加(减)自加(减)算术运算符算术运算符赋值运算符赋值运算符逗号运算符逗号运算符 先先后后