版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章C语言概述第二章数据类型、运算符与表达式第三章最简单的C程序设计第四章逻辑运算和判断选取控制第五章循环控制第六章数组第八章编译预处理第九章指针第十章结构体与共用体第十二章文件的基本操作第十三章位运算第一章C语言概述第一代:机器语言==〉是一种CPU机器语言。由数
字0、1组合而成。
优点:机器可直接执行,速度快。
缺点:程序长,难记,难理解,不易查错。第二代:汇编语言==〉用助记符描述的指令系统。
如:MovAx,[bp+4] pushd1,
优点:比机器语言较易理解,执行速度快。
缺点:难度大,非专业人士难以掌握。一、程序设计语言的发展§1.1C语言简介第三代:面向过程的高级语言==〉或称算法语言。如:
Fortran,Basic,Pascal,C等等。
优点:灵活,易于理解,容易查错。
缺点:对大型程序而言维护性较差,对“拟定”好的
程序难以扩充,修改(所谓牵一而动百)。第四代:非过程化的高级语言==〉是一种面向对象的设计
语言,如:C++,Java等等。
优点:灵活、易于理解、维护、修改、扩充。
缺点:掌握难度较大。第五代:可视化多媒体程序设计工具。具有面向对象的思
想,如:VisualC++,VisualBasic,Delphe等等。二、C语言发展过程1.1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(CombinedProgrammingLanguage)2.1967年,MatinRichards对CPL进行改进、简化、推出了BCPL(BasicCombinedProgrammingLanguage)3.1970年,美国贝尔实验室KenThomson以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。4.1972年美国贝尔实验室D.M.Ritchie在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。5.经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。6.1978年,美国BrainW.Kernighan与Dennis.M.Ritchie联合出版一书《TheCProgrammingLanguage》成为ANSIC之基础。7.1983年,美国标准化协会(ANSI)制定了ANSIC。注:以ANSIC为基础:
不同机器有不同版本,尤其是函数均应参考
相应的机器。特别说明:
C语言的编译环境有多种如:TurboC,BorlandC,MicrosoftC等§1.2C语言的特点2简洁、紧凑、方便、表达能力强
32个关键字,9种控制语句,主要用小写字母。1.应用面广
C语言是一种过程化的语言。
既可编写系统软件(如:DOS、UNIX);
又可编写应用软件。3.运算符丰富(共有34种运算符。)
除了最基本的+、-、×、÷、%等运算外,还将括号、赋值、类型强制转换等均作为运算符。4.数据类型丰富,结构化程度高除基本类型外,有指针,结构体、共同体等类型。5.语法严格,灵活
如:数据类型可相互通用:整型、字符型通用。6.可与机器硬件打交道
直接访问内存地址,具有“高”、“低”级语言的功能。7.生成目标代码质量高,执行效率高。8.语言简洁,可移植性好
可移植性优于汇编语言。§1.3简单的C程序介绍
为了更好、更快地掌握C程序,我们先看几个C语言程序:例1:
#include<stdio.h>main(){printf("Hello!\nThisisaCprogram\n");}运行结果:
Hello! ThisisaCprogram.例2:/*Exampleforaddprogram*/ #include<stdio.h>main() {inta,b,sum;/*这是定义变量*/
a=123;b=456;/*给变量赋值*/sum=a+b;/*求两个数之和*/printf("a+b=%d\n",sum);}运行结果:
a+b=579例3:
/*ExampleforFunctionprogram*/
#include<stdio.h>
main()/*主函数*/
{inta,b,c;/*定义变量*/
scanf(“%d,%d”,&a,&b);/*输入变量a和b的值*/
c=max(a,b);/*调用max函数,将得到的值赋给c*/
printf(“max=%d”,c;)/*输出c的值*/
}intmax(x,y)
{intx,y;/*对形参x、y作类型定义*/
intz;/*max函用到的变量z,也要加以定义*/
z=y;
if(x>y)z=x;
return(z);/*将z的值返回,通过max带回调用处*/
}通过实例,初步看到C的程序结构:1.
预处理部分:
#include<stdio.h>2.
C程序全部由一个一个的函数构成。至少有且仅有一个主函数main()也称为主程序,其内容在其后的一对花括号{}内,其它函数可被主函数调用或相互调用。其它函数可为C函数库中函数,也可为用户定义的函数。3./*…………….*/为注释部分。5.{}是程序段的括号4.
;是语句的结束符6.
函数的执行一定从main()开始。建议:
为便于阅读,养成良好的程序书写风格。1、每一对{}上下对齐;
2、每一对{}都对应于段首和段尾;
3、每一行只写一条语句;
4、每一对{}内的语句左对齐;
5、不同的语句段采用缩进格式以示区别;
6、关健语句要有注释。几种供参考的书写风格:第二章数据类型、运算符与表达式§2.1.数据类型
著名计算机科学家沃思提出:
程序=数据结构+算法例如:学生各科成绩及总分排队问题。成绩的存放–––以数组形式
排队方法––––算法在此,存放数据的方式直接反映了一种程序语言的数据表达能力。数据的存储方式又称之为:数据类型。
C语言对程序中要用到的每一个变量
都要事先指定它的数据类型!为什么要指定数据类型?1.不同类型的数据在内存中占据不同长度的存储区。2.不同类型的数据取值范围不同。3.不同类型的数据有不同的操作。C语言的数据类型丰富,有:1.基本类型2.构造类型3.指针类型4.空类型整型字符型浮点型单精度双精度数组结构体共用体枚举短整型长整型§2.2常量与变量2.2.1常量和符号常量常量程序运行过程中不能被改变的量。一般的数据显式写法均表示常量。如程序中:
20整型常量
15.8浮点型常量
'a'字符常量例:#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}符号常量用一个符号表示一个常量符号常量(一般用大写,以区分变量)此程序中PRICE
为常量符号,它的值为302.2.2变量变量
程序执行过程中可以改变它的值。变量包括变量名和变量值。变量名
用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。标识符的作用可用来作为变量名、常量名、函数名、类型名、文件名等。标识符
由字母、数字、下划线组成且由字母或下划线开头的字符串。2.2.3标识符如:_sum,sum,stu_name,price等为合法的标识符。建议:采用具有一定意义的英文单词、缩写作为标识符注意:1.C语言区分大小写2.标识符的长度一般不超过8个字符如:Price和price,系统会认为是两个不同的标识符。具体情况视不同系统而定。在C语言中,变量须先定义,后使用
变量一旦被定义,其类型便确定即可在编译时为其分配相应数量的单元。
若没有定义变量直接写成:
student=_num30;
则编译时会指出未定义错误。如:intstudent_num/*变量定义*/student_num=30;是合法的。§2.3整型数据2.3.1整型常量整型常量
(或称整型常数)C语言提供了三种形式的整型常量:
十进制如:256,308,-120等以数字0开头表示的整数例:0235,0146,-012等.0235=2×82+3×8+5=15710
0146=1×82+4×8+6=10210-012=-(1×8+2)=-1010十六进制以"0x"开头的整型数
如:0x16,0x28八进制2.3.2整型变量一、分类:分为四种:基本型、短整型、长整型、无符号型1.基本型:用“int”定义,占2个字节(16位)。
2.短整型:用“shortint”或“short”定义,占2个字节(16位)。注意:int
与shortint
是等价的。3.长整型:用“long”或“longint”定义,占4个字节(32位)。4.无符号型: 用“unsigned”定义
不存放符号,数据不带符号数。 无符号整型:“unsignedint”
无符号短整型:“unsignedshortint”
无符号长整型:“unsignedlongint”注意:如无指定,则为有符号数。
提醒:各数据的取值范围:int,shortint,——32768(或32767)~longint,——2147483648~7unsignedint,unsignedshortint,——0~65535unsignedlongint,——0~上述各种类型的取值范围有所不同,与机器和编译环境有关。二、定义方法
整型变量分别以下列方式定义1.
基本整型:
inta,b,c;
或:inta;
intb,c;2.
短整型
shortinta,b,c;
或:shorta,b,c;3.
长整型
longint或longa,b,c;4.
无符号型
unsigneda,b,c;unsignedshorta,b,c;unsignedlonga,b,c;例1:#include<stdio.h>
main()
{inta,b,c,d;/*指定a,b,c,d为整型变量*/
unsigndu;/*指定u为无符号整型变量*/
a=12;b=–24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}运行结果为:
a+u=22,b+u=–14
思考:若有语句:u=a+b;情况会怎样?涉及到的问题:数据类型转换。
提示:例2:#include<stdio.h>
main()
{inta,b;/*指定a,b为整型变量*/
unsigndu;/*指定u为无符号整型变量*/
a=65536;/*超出a的充许范围*/
b=32;
u=a+b;
printf("a=%d,u=%d\n",a,u);
}运行结果为:
a=0,u=–32例3:#include<stdio.h>
main()
{inta,b;/*指定a,b为整型变量*/
unsigndc;/*指定u为无符号整型变量*/
a=32768;/*超出a的范围*/
b=32;
c=a+b;
printf("a=%d,c=%a\n",a,c);
}运行结果为:
a=32768,a+b=32736三、关于整型常量
程序中出现的整型常数,系统按以下规则分配变量(内存单元)或赋值给相应变量1.
当常数(量)在–32768~32767之间,则可赋给int,shortint变量。2.
若超越,而在–2147483648~2147483647之间,则可赋给longint变量。3.
若int,shortint长度相同,则二者皆可赋值。4.
一个非负整数<65535则可赋给unsignedint。5.
一个常数后加'l',或'L',表示长整数.如123l.主要用于函数调用时形、实参数传递。§2.4实型数据2.4.1实型常量有二种表示形式
1.十进制形式如:0.126,523.64等2.指数形式对于较大或较小的数,可用指数形式
0.00001261.26E–512600001.26E+6或1.26e+6
分为单精度型(float)与双精度型(double)。如:floatx,y,z;(单精度)
doublea,b,c;(双精度)
一般地:
单精度占4字节内存单元;
双精度占8字节内存单元.
2.4.2实型变量注意:
不同机器对实型变量的有效数字长度的限制
如:pc机,单精度一般为7位,双精度15位单精度数值:
±3.4×(10–38~1038)双精度数值:
±1.7×(10–308~10308)例1:/*exp6.c*/ #include<conio.h> main() {floata,b,c,d; a=123456.666; b=1234567.777; c=12345678.888; d=123456789.999; printf("a=%f\nb=%f\nc=%f\nd=%f\n",a,b,c,d); }运行结果:
a=123456.664062b=1234567.750000c=12345679.000000d=123456792.000000例2:/*exp4.c*/ #include<stdio.h> #include<conio.h> main() {floata,b,c; clrscr();
a=3.4*10e1; b=3.4*10e37; c=3.4*10e38; printf("a=%f\nb=%f\nc=%f\n",a,b,c); getch(); }运行结果:a=340.000000b=000000000000000000000.0(整数位为39位)c=+INF例3:
/*exp5.c*/ #include<stdio.h> #include<conio.h> main() {floata,b,c; clrscr();
a=3.4e1; b=3.4e37; c=3.4e38; printf("a=%f\nb=%f\nc=%f\n",a,b,c); getch(); }运行结果:a=34.000000b=00000000000000000000.00c=000000000000000000000.0(整数位为39位)§2.5字符型数据用一对单引号括起来的单个字符。
如:'a','A',二者不一样.2.5.1字符常量注意:下面两种字符不能作为单引号中间的字符。
1、单引号本身:‘
2、反斜杠:\以"\"开头后接一个字符或n个字符代表了一种特殊字符常量。–––转义字符。如:\n––换行,\r––回车其它如下表:字符形式\n\t\v\b\r\f\\\'\ddd\xhh功能换行横向跳格(即跳到下一个输出区)竖向跳格退格回车走纸换页反斜杠字符“\”单引号(撇号)字符1到3位8进制数所代表的字符1到2位16进制数所代表的字符注意:\表示ASCII码字符三位八进制如:\101––表示字母A又:\x十六进制ASCII字符\x41––表示字母A定义方式为:
charc1,c2;c1='A';/*给变量赋值*/c2='B';2.5.2字符变量用来存放一个字符的变量占一个字节.
一个字符存入一个字符变量。其对应单元存放的是其ASCII码,即ASCII码的二进制形式。
由此:字符变量中的数据是一整型数据。输出时既可输出字符,亦可输出整数,且字符变量可作整数运算。2.5.3字符数据的实际存放形式例1:#include<stdio.h>
main(){charc1,c2;c1=97;c2=98;printf(”c1=%c,c2=%c",c1,c2);}运行结果:
c1=a,c2=b
问题:若c1,c2的取值范围超出了ASCII码表的值,会产生什么后果?例2:#incdude<stdio.h>main(){charc1,c2,c3,c4;c1=256;c2=257;c3=1;c4=2;Printf("c1=%c,c2=%c,c3=%c,c1,c2,c3,c4);}运行结果:c1=,c2=,c3=,c4=.?结论:从256开始,依次得新取ASCII码的值。1~256相当于ASCII码的255~0值。取值分段ASCII码ASCII码ASCII码25610255256511例3:
#include<stdio.h>
main(){char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校常态化防疫管理方案
- 教育机构课外阅读评估制度
- 场地借用规范协议:2024专业
- 2024年合作伙伴工程建设项目协议
- 餐饮业化供货协议2024年
- 绿色食品生产循环方案
- 2024年住宅二手买卖协议样本
- 农业产品质量监测与检查制度
- 2024年酒店房间门锁安全升级协议
- 2024年度企业间信用担保协议模板
- 韩国《寄生虫》电影鉴赏解读
- 三对三篮球赛记录表
- 石油和天然气输送行业物联网与智能化技术
- 高考英语高频词汇汇总
- 浙江省金华市2022-2023学年六年级上学期期中科学试卷
- 六年级语文下册《记一次体育比赛》教案设计
- 文档系统需求方案(完整版)资料
- 贵州省高中信息技术会考复习
- 建筑陶瓷制造行业技术趋势分析
- 政府采购基础知识培训(最终稿)
- 小学六年级地方课程《可爱的四川》教案
评论
0/150
提交评论