版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序相关设计语言和CC讲义GuangXiUniversity2教材及参考书教材:[1],杨志强主编.C/C++程序设计教程,北京:高等教育出版社,2009年5月
参考书:[2]教育部考试中心.全国计算机等级考试二级教程—C语言程序设计,北京:高等教育出版社[3].C++,北京:,2004年6月[4].程序设计基础(第2版),北京:,2004年9月GuangXiUniversity3考试时间:第14周周六晚(最后一次课)考试方式:笔试,开卷考试。总评成绩=平时成绩50%+期末成绩50%本教学班Q群:1219381371):1009495090。2)电子邮件:3)联系:3231080(办)。4)博客考试时间及联系方式GuangXiUniversity4主要授课内容第1章C/C++概述第2章基本数据类型、运算符和表达式第3章结构化程序设计第4章数组第5章函数第7章文件夹GuangXiUniversity5第一章C/C++概述1.1C/C++发展简史1.2简单的C/C++程序实例1.3基本语法成分1.4数据的输入和输出1.5编译预处理1.6VisualC++简介GuangXiUniversity61.1C/C++的发展简史C是由BCPL语言经B语言进化而来,1972年Bell实验室的Ritchie开发,为Ken的UNIX而设计。参与UNIX设计开发的主要人物还有Thompson。C语言的设计者DennisM.Ritchie和Unix的设计者KenThompson接受美国国家技术勋章GuangXiUniversity71.1C/C++的发展简史Ritchie和Thompson在开发UNIXUNIXOS可以说是第一个比较成熟并俱备开放性的操作系统,它的大部分代码是由C写的。GuangXiUniversity81.1C/C++的发展简史C语言有两个重要的标准:老标准:1978年,和合著新标准:1983年,ANSI制定,称为ANSIC
它被定为一种高级语言,但并不是“高级”,只是相对低级语言,在一个高的级别上进行编程。很多重量级软件都是用C写的。几乎没有不能用C写出来的软件,没有不支持C的系统。很多流行语言、新生语言都借鉴了它的思想、语法。GuangXiUniversity91.1C/C++的发展简史硬件(Hardware)操作系统(OS)应用程序
(Application)基于
平台的
应用
程序低级语言的地盘高级语言的地盘C语言的地盘GuangXiUniversity101.1C/C++的发展简史C++:1979年Bell实验室的BjarneStroustrup,主要是为改善管理程序的方便性,降代复杂性。CSimula67带类的C类基础1979年Cpre预处理器C++1.01985年《C++程序设计语言》C++2.01989年C++3.01993年类及派生类公有和私有构造函数,析构函数友元内联函数赋值运算符的重载虚函数函数和运算符的重载引用常量Const多重要继承保护成员对象的初始化与赋值的机制抽象类静态成员函数CONST成员函数模板GuangXiUniversity111.1C/C++的发展简史C++的组成环C语言面向对象设计(OOP)VisualC++组成C++程序设计C程序设计MFC应用程序向导类似的还有C++BuilderBorlandC++GuangXiUniversity121.2简单的C/C++程序与结构例1.1:输出一行信息。#include<stdio.h>void
main(){
printf("ThisisaCprogram.\n");}说明:main-主函数名,void-函数类型每个C程序必须有一个主函数main{}是函数开始和结束的标志,不可省每个C语句以分号结束使用标准库函数时应在程序开头一行写:
#include<stdio.h>运行结果:ThisisaCprogram.GuangXiUniversity131.2简单的C/C++程序与结构
例1.2:输入圆的面积,求面积。分别用C和C++写的源程序如下:注释:以//开始#include是编译预处理命令把头文件的内容插入该处使用cin、cout函数必须有该命令main函数的函数体main函数的函数头
void表示无返回值#define定义替代宏GuangXiUniversity141.2简单的C/C++程序与结构GuangXiUniversity151.2简单的C/C++程序与结构例1.3:求两个数之和。#include"iostream.h"intadd(intx,inty) //定义add()函数,求两个数之和{ intz; //说明z为int类型的变量
z=x+y; //将x+y的值赋值给z returnz; //结束add()函数的执行,并将z的值返回}voidmain() //定义主函数{ inta,b,c; //说明a、b、c为int类型的变量
cin>>a>>b; //从键盘输入两个数据送到a和b中
c=add(a,b);//调用add()函数,计算a+b,并把结果赋给c cout<<c<<endl; //先输出c的值,再输出换行符}GuangXiUniversity16
1.2简单的C/C++程序与结构(小结)(1)C/C++程序是一个或多个函数构成的,main函数一定要有。这使得程序容易实现模块化。(2)一个函数由两部分组成:
函数的首部:例1.3中的add函数首部
intadd(intx,inty)
函数体:花括号内的部分。若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。函数体包括两部分:声明部分:inta,b,c;可缺省执行部分:由若干个语句组成。可缺省GuangXiUniversity17例如:voiddump(){}
这是一个空函数,什么也不做,但是合法的函数。1.2简单的C/C++程序与结构(小结)GuangXiUniversity18(3)不管有多少个函数,程序总是从main函数开始执行的,与main函数的位置无关。在一个函数内,执行从上到下开始的。
(4)程序书写形式自由,一行内可以写几条语句,一条语句可以分写在多行上,语句没有行号。(5)每个语句和数据声明的最后必须有一个分号。注释从//开始的,可增加程序的可读性。(6)C/C++语言中大小写字母是不同的。(7)C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。1.2简单的C/C++程序与结构(小结)GuangXiUniversity19例1以下说法不正确的是()A.C程序中必须有一个main()函数,C程序是从main()
函数的第1条语言开始执行B.C程序中除主函数外的其他函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的C.C程序中的main()函数位置可以任意制定D.C程序中的main()函数必须放在程序的开始位置
典型例题分析GuangXiUniversity20A.C程序中的一行可以写多条语句B.C程序中的每行只能写一条语句C.C程序中的语句可以采用缩进格式书写D.C程序中可以用注释提高程序的可读性例2以下说法不正确的是()
典型例题分析GuangXiUniversity21例3C语言的程序一行写不下时,可以()A.在任意空格处换行B.用逗号换行C.用回车换行D.用分号换行
典型例题分析GuangXiUniversity22例4以下说法正确的是()A.C语言程序是从第一个定义的函数开始执行B.在C语言中,要调用的函数必须在main函数中定义C.C语言程序是从main函数的第1条语句开始执行D.C语言程序中的main函数必须放在程序的开始部分
典型例题分析GuangXiUniversity23A.主函数名是由程序设计人员按照“标识符”的规则选取的B.分号和回车都可以作为一个语句的结束符号C.程序的执行,总是从源程序清单的第1行开始D.在程序清单的任何地方都可以插入一个或多个空格符例5下列说法中,正确的是()
典型例题分析GuangXiUniversity241.3C/C++基本的语法成分1.基本符号:
(1)字母:52个
A~Za~z(2)数字字符:10个
0~9(3)下划线_。
(4)特殊符号:一般作运算符,如+、-、*、/、&2.关键字有特定含义的、专用的单词。如int、char、break、for、define等。不能作变量名、符号常量名、函数名、类名等。GuangXiUniversity251.3C/C++基本的语法成分3.标识符: 由字母、数字和下划线三种字符组成必须以字母或下划线开头合法标识符。
A2studentarea_of_circlenum_ddInt不合法标识符
2AA-BareaofcircleM.Dint①大小写字母不等价 习惯上,变量名小写,符号常量大写。②关键字不能作标识符用。例如,int、define等关键字不能作为标识符用。③定义标识符时最好能简洁且“见名知义”,以提高程序的可读性。如min表示最小值,average表示平均值,day表示日期。④在VisualC++中,标识符中不能有汉字 但是字符串和注释中可以有汉字。GuangXiUniversity261.3C/C++基本的语法成分
标识符通常用来对变量和函数命名,一般有经下约定:直观,见名知意,便于记忆和阅读最好使用英文单词或其组合切忌使用汉语拼音下划线和大小写通常用来增强可读性variablenamevariable_nameVariableName,variableName某些功能的变量采用习惯命名如:for语句所采用的循环变量习惯用i,j,kWindows风格UNIX风格GuangXiUniversity271.4C/C++数据的输入输出与格式化
本节仅介绍C/C++的数据输入输出及其格式化方法。通过本节的学习,你马上会看到你能编制一些小程序了。1.4.1C++的数据输入输出与格式化的数据输入输出与格式化字符输出/输入函数GuangXiUniversity281.4.1C++的数据输入输出与格式化C++使用cin(标准输入设备)和cout(标准输出设备)进行输入输出,把数据的输入输出处理为一个对象到另一个对象的流动。要使用它们,程序开始必须用包含语句:
#include"iostream.h"
或#include<iostream.h>格式:
cout<<表达式1<<表达式2<<……<<表达式n;cin>>变量1>>变量2>>……>>变量n;GuangXiUniversity291.4.1C++的数据输入输出与格式化例1.3cout示例#include"iostream.h" voidmain() { inta=2; doubleb=3.32; charc='A'; cout<<a<<''<<b<<endl;cout<<a<<'\0'<<b<<endl;cout<<a<<ends<<b<<endl; cout<<c<<''<<"abcd"<<endl;}库中对ends的定义:_CRTIMPinlinebasic_ostream<char,char_traits<char>>&__cdeclends(basic_ostream<char,char_traits<char>>&_O){_O.put('\0');return(_O);}GuangXiUniversity301.4.1C++的数据输入输出与格式化例1.4使用格式控制符输出数据#include"iostream.h"#include"iomanip.h"voidmain(){ intx=65; doublef=123.456; cout<<dec<<x<<''<<hex<<x<<''<<oct<<x<<endl; cout<<x<<ends<<x<<endl; cout<<f<<endl; cout<<setprecision(4)<<f<<endl; cout<<setw(12)<<f<<endl;//当12改成2后,结果会如何? cout<<setw(12)<<setfill('#')<<f<<endl; }设置转换基还可使用setbase(_)和setioflag(ios::_)如果是0只显示整数部分且以科学计数法表示如果前面还有setioflag(ios::fixed),则setprecision只控制小数部分个数GuangXiUniversity311.4.1C++的数据输入输出与格式化例1.5cin示例#include"iostream.h"voidmain(){ inta; floatb; cout<<"inputa,b:"; cin>>a>>b; cout<<"a+b="<<a+b<<endl;}GuangXiUniversity321.4.1C++的数据输入输出与格式化说明:输出中各表达式可以是任意类型的。数据的输出格式由下面的一些常用的控制。输入数据之间用空格、TAB键或回车分隔格式控制符说明示例语句结果endl输出换行符并刷新缓冲区cout<<123<<endl<<123123LF123dec十进制表示cout<<dec<<123;123hex十六进制表示cout<<hex<<123;7boct八进制表示cout<<oct<<123;173setw(n)设置输出宽度cout<<'a'<<setw(4)<<'b';abws忽略前导空白cout<<ws<<setfill(‘’)设置填充字符cout<<setfill('*')<<setw(6)<<123;***123ends(终止字符串
)等同NULL(但不是字符)cout<<‘a’<<ends<<‘b’<<endlabsetprecision(n)设置有效位数cout<<setprecision(5)<<123.456123.46输入数据比变量个数多,后续的忽略GuangXiUniversity33的数据输入输出与格式化
C语言中输入输出操作通过调用标准库函数来实现,要关文件开始用下面的包含语句:
#include“stdio.h”或
#include<stdio.h>输出函数printf(格式控制字符串,输出项表列);输出若干个任意类型的数据
printf("a=%db=%f",a,b);输入函数scanf(格式控制字符串,地址表列);scanf("%d,%f”,&a,&b);C语言—输出输入函数printf()函数#include<stdio.h>printf(“控制字符串”[,输出列表]);(1)控制字符串,由输出的文字和数据格式说明符组成。文字说明中除了可以使用字母、数字、空格和一些数学符号以外,还可以使用一些转义字符表示特殊的含义。printf("Variablex=%d,y=%f",x,y)例如:(2)输出列表,可以是常量、变量或表达式或函数调用,数据之间用“,”分隔。数据的个数和类型必须与控制字符串中的格式说明项顺序一一对应。输出数据数据格式输出文字C语言—输出输入函数printf()函数printf("Variablex=%d,y=%f",x,y)例如:数据格式与输出数据的对应printf(“a=%d,b=%d,a+b=%d\n",a,b,a+b);输出数据输出文字数据格式输出结果:a=3,b=4,a+b=7printf(“a=%d,b=%d,a+b=%d\n”,a,b,a+b);输出结果:Variablex=0,y=0.36C语言—输出输入函数printf()函数格式字符说明%d%md带符号十进制整数输出%c输出单个字符%s输出字符串%f%m.nff以小数形式输出单精度数lf双精度数%e以指数形式输出单、双精度数
其它格式说明符o八进制无符号整数输出x十六进制无符号整数u十进制无符号整数输出格式修饰:l长整型整数,加在d、o、x、u前Llongdouble型数,加在f、e、g前m表示数据占用的最小宽度:数据宽度大于m,按实际宽度输出;数据宽度小于m时,补空格n对实数表示输出n位小数:对字符串表示最多输出的字符个数-改变输出内容的对齐方式,缺省为右对齐GuangXiUniversity37的数据输入输出与格式化例1.6printf例#include<stdio.h>main(){ floatf1=100.15799,f2=12.55,f3=1.7; intn1=123,n2=45,n3=6;
printf("printfWITHOUTwidthorprecisionspecifications:\n"); printf("%f\n%f\n%f\n",f1,f2,f3); printf("%d\n%d\n%d\n",n1,n2,n3); printf("printfWITHwidthandprecisionspecifications:\n"); printf("%5.2f\n%6.1f\n%3.0f\n",f1,f2,f3); printf("%5d\n%6d\n%3d\n\n",n1,n2,n3);}GuangXiUniversity38的数据输入输出与格式化例1.7scanf例#include<stdio.h>main(){ inta,b;printf("Pleaseinputaandb:");scanf("%2d%*2d%2d",&a,&b);printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);}Pleaseinputaandb:a=12,b=5,a+b=1712345a↙将输入的格式换一下,应该如何输入?输入函数
scanf(格式控制字符串,地址表列);scanf("%d,%f”,&a,&b);(1)scanf格式字符d以带符号十进制形式输入整型数据o以八进制无符号形式输入(无前导0)x以十六进制无符号形式输入(无前导0x)c以字符形式输入单个字符s输入字符串,以非空字符开始,遇第一个空白字符结束f以小数形式输入浮点数e以标准指数形式输入C语言—输出输入函数scanf()函数l加在d、o、x、u前:输入长整型加在f、e前:输入双精度型L加在f、e前:输入longdouble型h加在d、o、x前:输入短整型m表示数据占用的宽度*本输入项在读入后不赋给相应的变量(2)输入数据时,遇以下情况时该数据认为结束遇空格、回车、TAB键遇宽度:*md遇非法输入C语言—输出输入函数scanf()函数例1.7scanf例#include<stdio.h>main(){ inta,b;printf("Pleaseinputaandb:");scanf("%2d,%2d",&a,&b);printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);}C语言—输出输入函数scanf()函数Pleaseinputaandb:a=12,b=13,a+b=2512,13↙PressanykeytocontinueGuangXiUniversity42的数据输入输出与格式化(4)常见错误scanf("%d,%f\n”,&a,&b);scanf("%d,%f”,a,b);scanf("%7.2f",&a);printf(“%d,%f”,a)(编译不会出错)GuangXiUniversity43字符输出/输入函数字符输出函数putchar(ch)输出一个字符ch字符输入函数getchar()无参数函数值为从输入设备接收的字符GuangXiUniversity44字符输出/输入函数例1.8示例#include<stdio.h>main(){
charch;printf("PressakeyandthenpressEnter:"); ch=getchar();
printf("Youpressed");
putchar(ch);
putchar('\n');}GuangXiUniversity451.5编译与预处理1、文件包含 头文件:.h 如stdio.h、iostream.h,其中对函数说明、常量定义
#include的作用:头文件的内容插入到源文件中。可以将一些公用的内容单独组成一个文件,供多个程序员使用。(1)#include<文件名>
从系统指定的文件夹中找(2)#include"文件名"
从当前文件夹中找,再到系统指定的文件夹中找注意:一条文件包含命令只能包含一个文件编写源程序预处理编译连接执行预处理程序编译程序GuangXiUniversity461.5编译与预处理2、宏定义 主要用来定义符号常数,当然也可以定义别的。定义常量时要与const区别开(下一章再讲)。
#define标识符常量 例如:
#define FALSE 0 #define TRUE 1 #define PI 3.1415926 #define EPS 1.0e-6#defineSet_DE0P3|=0x08#defineClr_DE0P3&=~0x08
注意: 符号常量一般大写 行末一般不加分号 不能对符号常量进行赋值GuangXiUniversity471.5编译与预处理例如:用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)----一道面试题
#defineSECONDS_PER_YEAR60*60*24*365UL说明:(1)注意#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)
(2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
(3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
(4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。GuangXiUniversity481.6VC++6.0开发平台项目工作区输出窗口代码窗口GuangXiUniversity491.6VC++6.0开发平台1、简单C/C++程序的编写、运行过程
(1)创建一个空工程;
Win32ConsoleApplication C++SourceFile (2)创建一个C++源文件,输入源程序;
(3)进行编译、连接、运行。 编译|编译TEST.cpp CTRL+F7
编译|构建TEST.exe F7
编译|执行TEST.exe CTRL+F5GuangXiUniversity50编译连接后生成的主要文件D:\TESTTEST.dspTEST.dswTEST.cppDebugTEST.objTEST.exe1.6VC++6.0开发平台GuangXiUniversity512、程序调试
1.语法错误/警告----编译程序可以发现并给出提示 错误信息----影响运行
D:\TEST\TEST.CPP(6):errorC2146:syntaxerror:missing';'beforeidentifier'cin'
警告信息----潜在的错误,但不影响运行,不过要重视
D:\TEST\TEST.CPP(6):warningC4244:'=':conversionfrom'constdouble'to'int',possiblelossofdata
如何定位语法错误?如何修改语法错误?-----这是调试首先解决的。
2.逻辑错误----编译程序一般不能发现,通过断点跟踪发现
-----这是调试接着解决的。
3.调试 设置断点:Insert/RemoveBreakpoint F9
运行到断点:编译|开始调试|运行 F51.6VC++6.0开发平台GuangXiUniversity52Restart终止当前调试,重新运行,停在第一条语句StopDebugging结束当前调试和运行StepOver单步运行,不进入函数体内StepOut从函数体运行到外面1.6VC++6.0开发平台例1.9调试举例GuangXiUniversity531.7.1主窗口的组成1.7TurboC2.0开发环境简介编辑源程序.C编辑阶段编译目标程序.OBJ编译阶段包含文件系统库函数连接装配连接阶段可执行程序.EXE执行执行阶段1.开发C语言程序的四个阶段
输出结果.
编辑:录入C的源程序,形成扩展名 为.C的源程序文件存盘。.
编译:翻译源程序,产生出扩展名为.OBJ的目标程序。.
连接:与系统库函数连接,得到扩展 名为.EXE的可执行文件。.
执行:运行可执行文件,获得所需 要的输出结果。GuangXiUniversity54(1)主菜单:有8个菜单项:文件、编辑、运行、编译、项目、选项、调试和断点/监视。2.TurboC的主菜单主窗口由主菜单、编辑区、信息区和功能键提示行4个部分组成。主菜单编辑区信息区功能键提示行(2)编辑区:Edit区域称为TurboC的程序编辑区,用于源程序的输入和编辑。(3)信息区:Message区域称为TurboC的信息区,用于显示编译和连接时的有关信息。(4)功能键提示行:在屏幕最下方,给出常用的7个功能键,它们是F1(帮助)、F5(分区控制)、F6(转换)、F7(跟踪)、F8(单步执行)、F9(生成目标文件)和F10(菜单)。GuangXiUniversity55
若对已有的C源程序进行编辑,就从File的下拉菜单中选Load,弹出含“*.C”的“Load”对话框。此时,或直接输入文件的路径和文件名,以使文件在编辑区里显示;或删除“*.C”,只键入路径名,就把指定路径下所有的C源程序文件显示出来,供用户选择。1.7.2对源程序文件的编辑
要建新的C语言源程序时,应从主菜单项File的下拉菜单中选择New。回车后,整个编辑区被清空,光标定位在该区左上角(第1行,第1列)。这样,用户就可以输入和编辑源程序了。
编辑区最前面有一行文字:Line1Col1InsertIndentTabFillUnindentC:NONAME.C输入源程序时,Line和Col后的数字随光标的移动而变,以标明输入光标的位置。新编辑文件的默认名是C:NONAME.C。
新编文件的默认名全行见上一幻灯片GuangXiUniversity56(2)将光标移到待定义块的最后一个字符的后面,按Ctrl-KK键,于是在光标左边产生了块尾标记。所定义的块将在程序中突显出来。1.7.3编辑的基本操作命令
编辑时,所谓“块”,是指源指在程序中用命令Ctrl-KB和Ctrl-KK做了首、尾标记的一个部分。做了块标记后,这部分就成了一个整体,可以对它进行删除、移动、复制等操作。以便简化编辑过程。在程序中定义一块的具体方法(1)将光标移到待定义块的第1个字符的位置,按Ctrl-KB键,在光标位置处做上块首标记(注意:并不出现特殊的记号)。例:类同的两个部分定义的一块GuangXiUniversity571.7.4源程序的保存
编辑完后的源程序,通过主菜单项File下拉菜单里的Save命令存盘。
若源程序是通过发New命令建立的,那么它当前使用的还是默认名:NONAME.C。发Save后,会弹出“RenameNONAME(为NONAME改名)”对话框。这时,用户可以为该程序文件指定正式的名字。
若源程序是通过发Load命令建立的,那么这时不会弹出任何对话框,而是按照原文件的位置加以保存。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代红十字会工作制度
- 法院信访值班工作制度
- 物业保洁组长工作制度
- 生活垃圾处置工作制度
- 涉农事业单位工作制度
- 修模人员工作制度
- 爱婴区陪护员工作制度
- 法制信访科工作制度
- 班级卫生保洁工作制度
- 督促约谈问责工作制度
- 生猪屠宰厂可行性方案
- 景区旅游经营预测研究报告
- JB-T 14179-2022 带式输送机用托辊冲压轴承座
- 溢洪河大桥防洪评价报告
- 第四节喀斯特地貌最全课件
- 成都职业技术学院教师招聘考试历年真题
- 断绝亲情关系协议书
- 产褥期母婴的护理-产褥期妇女的生理变化(妇产科护理学课件)
- 安徽马鞍山市横望人力资源有限公司招考聘用劳务外包人员笔试题库含答案解析
- 低压电工试题库-含答案
- 森林抚育技术规程
评论
0/150
提交评论