还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
语程序设计》9M・«C参■答案包括各单元一.随堂练习二.本章自测一.随堂练习【随堂练习5-1]利用语句计算自然数序列的和,的值在程序执行时输入
1.while1,2,3,n n#includestdio.hvoid main int nsum=0,i=l;/请输入的值:;printf nscanf”%d”,n;whilei=n{sum+=i;i++;}printf自然数序列1至U%d的和为:%d.\n\n,sum;利用语句计算中的奇数之和及偶数之和
2.while1〜n#include stdio.hvoid mainint neven=0odd=0J=l;//“请输入的值:;printf nscanf%d,n;whilei=n{ifi%2==0even+=i;elseodd+=i;i++;}printf自然数序列1至U%d的奇数和为%d,偶数和为:%\e0℃1€1回印;【随堂练习5-2]利用语句计算中的奇数之和及偶数之和
1.do-while1〜n#include stdio.hvoid main一.随堂练习【随堂练习6-1]完成【引例】中的题目
1.lofloat score
[40];有数组定义数组中每个元素占用旦字节,整个数组占用字节,可以代表数
2.double p
[8],64_e_组在内存中存放的首地址【随堂练习6-2]将【例】中的一维数组中各元素的值逆序输出
1.
6.3#include stdio.hvoid main{inta
[10]={0,l,2,3,4,5,6,7,8,9};forint i=9;i=0;i-printf”%4cT,a[i];【随堂练习6-3]判断如下二维数组的定义方式是否正确?
1.正确1float b
[10]
[10];正确2#define N20int s[N][N];不正确3int n=20;int array[n]
[10];不正确4double a[4,5];【随堂练习6-4]将一个二维数组行和列的元素互换,存到另一个二维数组中,即矩阵的转置
1.#include stdio.hvoid main{int a
[2]
[3],b
[3]
[2];int i,j;原矩阵为:printf\n;fori=0;i2;i++forj=0;j3;j++{scanf%d,a[i][j];b[j][i]=a[i]U];printf“转置后的矩阵为:\n“;forj=0;j3;j++{fori=0;i2;i++恻printfC d-;putchar\n;}【随堂练习6-5]输入两个字符串和比较后将较大的字符串存在中,将较小的存在中
1.strl str2,strl str2#includestdio.h#include string.hvoid main{char strl
[20],str2
[20],str
[20];“请输入一个字符串门;printfgetsstrl;请再输入一个字符串:;printfgetsstr2;ifstrcmpstrl,str20{strcpystr,strl;strcpystrl,str2;strcpystr2,str;}print较大的字符串为:%s.\n:strl;print较小的字符串为:%s.\n”,st⑵;二.本章自测在本单元中,如何定义一维、二维数组、如何操作数组以及如何利用字符数组处理字符串是核心内容通过本单元的学习,我们应该知道数组是一组相同类型的有序数据的集合数组要先定义后使用,可以在定义时初始化,
1.每个数组元素相当于同类型的变量,使用数组名和下标来唯一确定数组中的元素一维数组定义的一般格式为类型标识符数组名「整型常量表达式];,对于已定
2.一.随堂练习【随堂练习]1-1根据上述示例模仿编程,输入正方形的边长,计算其面积
1.#include stdio.h()void main{〃数据准备,边长面积int a,s;a,s(”请输入正方形的边长);printfscanf(,%d,,,a);〃数据输入〃数据计算s=a*a;(该正方形的面积为:)printf%d.\n,s;)【随堂练习]1-2下面哪些标识符属于合法的用户自定义标识符
1.、、、、、、Main void_num my$a*N43m a-2答合法的用户自定义标识符是、、Main_num N4结合【例】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些
2.
1.2是用户自定义标识符答关键字、void int预定义标识符、include mainprintf scant用户自定义标识符、、a bc分析【例]中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函
3.
1.2数体语句(说明语句、可执行语句)答函数首部()其中函数返回值类型为、函数名为、形式参数无;函void main,void main数体语句{}内的语句为函数体,其中说明语句为其余为可执行语句intabc;,【随堂练习】1-3在环境中完成[例]程序开发过程
1.VC++
6.
01.2(略)查阅【例】所对应的工程文件夹,了解相关文件的含义
2.
1.2工程文件夹中.CPP用C/C++语言编写的源代码文件义好的一维数组编译系统会分配连续的存储空间,数组名代表数组在内存中存C放的首地址一维数组的引用方法为数组名[下标],其中下标从开始2二维数组定义的一般格式为类型标识符数组名「整型常量表达式整型常量表达式
3.1U]对于已定义好的二维数组编译系统会分配连续的存储空间,将二维数组元素按行2;,C依次存储二维数组元素的访问涉及第一维和第二维两个下标,其引用方法为数组名[下标方下标]2字符数组是一组字符型数据的有序集合,其中每个数组元素的值都是字符语言用字
4.C符数组实现字符串变量,字符串以、/作为结束标志字符串的输入可以通过、gets函数实现,字符串的输出可以通过、函数实现常见的字符串操作scanf putsprintf库函数有求字符串长度函数、字符串复制函数、字符串连接函数、strlen strcpvstrcat字符串比较函数这些库函数的定义都在头文件中常见的字符库函数strcmp,string.h的定义都在头文件中ctype.h数组的操作通常离不开循环结构,在使用循环结构操作数组时应注意下标的变化规律
5.通过本单元的学习,应该掌握语言中对于数组这一构造数据类型的使用方法和操作方法C一.随堂练习【随堂练习7-1]完成【引例】中的问题
1.2以为函数名,写出“计算矩形周长”自定义函数的程序代码perimeter intperimeter int a,int breturn2*a+2*b;}自定义函数其功能为判断一个整数是否为偶数
2.even,int evenint nifn%2==0return1;elsereturn0;}【随堂练习7-2]对【随堂练习】自定义函数进行声明7-1even或int evenint n;int evenint;【随堂练习7-3]在主函数中输入一个整数,通过调用【随堂练习】自定义函数判断该数的奇偶
1.
7.1even性#includestdio.h intevenintnifn%2==0return1;elsereturn0;}int mainintn;(“请输入一个整数:);printf()scanf%d,n;(())if evennprintf(“该整数为偶数.\n“);elseprintf(该整数为奇数.\n“);}编程解决单元六实训指导
(一)中的第二题输入个学生的成绩,求出平均成绩,并将低
2.10于平均成绩的分数显示出来其中“求平均成绩”用自定义函数来实现average#include stdio.hfloat averagefloat[],int;void main{float score
[10],ave;int i;“请输入个学生成绩:;printf10ave=averagescore,10;printf考试平均分为:%.2f.\n”,ave;printf低于平均分的成绩有:;fori=0;i10;i++ifscore[i]aveprintf%
7.2f,score[i];float averagefloats[],intn{int i;float ave=0;fori=0;in;i++{scanfn%f,s[i];ave+=s[i];}return ave/10;}【随堂练习7-4]用带参数的宏定义表示圆的面积
1.#define PI
3.14#define srPl*r*r用带参数的宏定义表示自然数之和(公式)
2.()(())()#d efines nl+n*n/2本章自测在本单元中,如何使用自定义函数是核心内容通过本单元的学习,我们应该知道函数是构成程序的基本单位,函数的使用为模块化程序设计奠定了基础从用户使用
1.C的角度,函数分为库函数、自定义函数两种库函数的使用包括头文件包含和库函数调用两个环节;用户自定义函数的使用包括函
2.数声明、函数定义和函数调用三个环节从函数的外观形式看,函数分为有参函数、无参函数两种当主调函数调用无参函数
3.时,不需要向这些函数传递参数;当主调函数调用有参函数时,需要传递参数用户自定义函数的一般形式为
4.函数返回值类型函数名(形式参数列表)〃函数首部(函数体;)其中第一行称为函数首部,大括号“{}”括起来的部分称为函数体,对于有返回值的函数,函数体中要包括语句return函数首部也称为函数原型,用函数原型声明函数时,形参名可以省略不写,而只写形参
5.的类型,但形参的类型和数量必须与函数首部保持一致
6.函数要先声明,然后才能使用,函数声明在程序中的位置有以下几种情况
(1)函数声明写在主调函数的外部,这时的函数声明为全局声明
(2)函数声明写在主调函数的说明语句中,这时的函数声明为局部声明
(3)函数的定义出现在主调函数之前,则函数声明可以省略函数的调用形式为函数名(实际参数列表)若调用无参函数,则实参为空;若调用
7.有参函数,则在()内写出与形参类型、数量一致的实参对于有参函数,函数调用过程中存在着参数传递的问题,参数传递有两种情况,其一为值传递,其二为地址传递函数在函数体中出现了对自身调用的语句,就称为函数递归调用使用递归方法解决问
8.题的关键是如何找出递归关系,以及找出递归调用的终止条件带参宏定义的一般形式为宏名(形参列表)字符串通常用带参数的宏定义
9.#define代替简单公式型函数函数的存储类型有和两种皿型函数称为“外部函数可以被其他编
10.static extern01译单位中的函数调用;型函数称为“内部函数”,只能被本编译单位的函数调用static程序中变量的使用范围称为变量的作用域,每个变量都有自己的作用域按照作用域
11.的范围可分为两种局部变量和全局变量变量的存储方式可分为“动态存储”和“静态存储”两种动态存储变量包括
12.和两种类型;静态存储变量包括和两种类型静态存储变量若auto reveststatic extern没有初始化,则默认初始值为类型变量的值具有继承性,即本次调用的初值是_Q_o static上次调用结束时变量的值一.随堂练习【随堂练习8-1]有定义一个指向变量的指针变量
1.doubles;,s q或double*q=s;double*q;q=s;完成【引例】
2.1【引例】有一个整型变量如何知道该变量的存储地址?如何通过指针变量对进行操1a,a作?变量的存储地址1a a通过指针变量对进行操作定义指针变量指向然后可通过访问并2a pa,int*p=a;,*p操作变量a编程验证【例和【例】中指针变量的值是否与所指向变量的地址相同
3.8-21验证【例8;】printf〃%d,%d〃,n,p;观察输出的两个值是否相同2验证【例8-2】printf〃%d%d〃,str,cp;观察输出的两个值是否相同【随堂练习8-2]试分析如下程序,看看是否能实现【例】所要求的功能?
1.
8.5#include stdio.hvoid addint*pa,int*pb,int*psum{*psum=*pa+*pb;void main{int a,b,s;scanf,,%d%d,,,a,b;adda,b,s;printfs=%d\n,s;答能够实现【随堂练习8-3]完成【引例】2【引例】一维数组是占用连续存储空间的数据,如何通过指针变量对这段内存空间进行操2作?答定义指针变量并指向数组首地址,然后就可以利用指针变量访问并操作了【随堂练习8-4]下面函数的功能是计算一个字符串的实际长度将程序补充完整int strlenchar*s{int/*定义计数器变量*/len=O;while*s!=\O___{len++;s++;}________returnlen;【随堂练习8-51下面函数的功能是获取第个数组元素的地址将程序补充完整〃nint*getadd int*p Jntn指针指向数组首地址p{return p+n-1;二,本章自测在本单元中,对指针的理解,以及利用指针访问不同形式的数据是核心内容通过本单元的学习,我们应该知道内存地址就称为指针语言允许用一个变量来存放指针,这种变量称为指针变量,而
6.C指针变量的值就是某个内存单元的地址
7.定义指针变量的一般格式为类型标识符*指针变量名_____________,其中“指针变量名”前面的“*”,表示该变量是指针变量,不能省略1“类型标识符”表示该指针变量所指向的变量的数据类型2当一个指针变量已确定指向某类型的变量时,不能再指向另一种类型的变量3指针变量被赋值后即可引用,引用指针变量的一般方法为*指针变量名
3.o指针和数组有着密切的关系,任何通过控制数组下标实现的对数组的操作,都可用指针
4.来实现要通过指针操作数组,首先要建立指针变量与数组之间的关系,然后才能通过指针变量访问数组元素若有语句段则对于数组元素的int a
[10];int*p;p=a;,访问方式有、()、,对数组元素地址的表示方式有、、a[i]*p+i p[i1a+i p+i a[i].数组名代表数组的首地址,利用函数处理一维数组数据时,函数之间的参数传递为重组5首地址将数组的首地址作为实参传递给函数的形参以后,实参数组和形参数组其实是同一段内存中的数据字符串是存放在某存储区域的一串字符序列,可通过字符数组和字符指针两种方式操作
6.字符串函数返回值可以是地址(指针类型),返回值为地址的函数定义形式为
7.〈类型标识符〉*<函数名>([形参列表]);通过本单元的学习,应明确地址和指针的关系,掌握使用指针访问内存数据的基本方法一.随堂练习【随堂练习9-1]为【例9-2]
(1)中的结构变量a,b输入各成员值,交换a和b的数据后输出#include stdio.h〃结构类型关键字以及结构名称struct job_exam〃编号{unsigned num;〃姓名char name
[10];〃笔试成绩int exama;〃面试成绩int examb;〃总成绩int total;};〃定义两个结构变量和〃struct job_exam a,b;a b定义中间变量struct job_exam t;tvoid main(请输入考生信息)printf a\n“;scanf%u%s%d%d a.num,a.name a.exama,a,examb;/,a.total=a.exama+a.exa mb;“请输入考生信息:printf b\n;scanf,%u%s%d%d,b.num,b.name,b,exama,b,examb;b.total=b.exama+b.examb;t=a;a=b;b=t;“交换后的信息printf\n;printf编号姓名笔试面试总成绩\n“;printf%4u%10s%6d%6d%6d\n,a.num a.name a.exama a.examb a.total;///zprintf,%4u%10s%6d%6d%6d\n,b.num,b.name,b.exama,b.examb,b.total;}二.本章自测在本单元中,结构类型数据的含义、结构类型的描述方法、结构类型数据的基本操作是核心内容通过本单元的学习,我们应该知道结构类型数据使用的基本步骤为结构类型说明、结构类型变量定义和结构变量
1.使用结构类型说明的关键字为结构类型变量所占用内存字节数为结构变量所
2.struct包含的各个成员变量所占字节数之和若定义了一个结构变量和一个指向结构变量的指针,则可以用以下三种形式访问结构成
3.员利用结构变量与成员运算符相结合,基本格式为结构变量,成员名1O利用结构指针与成员运算符相结合,基本格式为*结构指针.成员名2O利用结构指针与指向运算符相结合,基本格式为结构指针->成员名3o结构变量不能作为一个整体进行输入和输出,但结构变量作为一个整体可以被复制、赋
4.值、传递参数,以及作为函数返回值当用结构变量作函数参数进行整体传送时,要将全部成员逐个传送,特别是成员为数组时,将会使传送的时间和空间开销很大,所以一般不将结构变量作为函数参数,而用结构指针变量作函数参数这时由实参向形参传递的只是地址,从而减少了时间和空间的开销通过本单元的学习,应明确结构类型的数据特点,掌握结构类型数据描述和操作的基本步骤和方法.DSPVC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程项目文件,文本格式.DSW VC开发环境生成的Workspace文件,用来把多个工程组织到一个Workspace中工作区文件,与差不多.dsp.NCB NCB是No CompileBrowser”的缩写,其中存放了供ClassView WizardBar和Component使用的信息,由开发环境自动生成无编译浏览文件当自动完成功能出问题时可以删Galley VC除此文件编译工程后会自动生成.OPTVC开发环境自动生成的用来存放Workspace中各种选项的文件工程关于开发环境的参数文件如工具条位置信息等文件夹中DEBUG.OBJ源文件编译后生成的目标文件,是模块的二进制中间文件.EXE可执行文件(注蓝色字体为重点了解)二.本章自测本单元中,核心内容有语言程序框架结构、程序的构成和程序开发过程通过本单元的学c习,我们应该知道语言程序最基本的程序框架由两部分构成,分别是
1.c()编译预处理1()函数组2程序最大的特点就是所有的程序都是用函数来装配的,函数是构成语言程序的基本单
2.C C位,函数包括主函数、库函数和自定义函数函数的一般结构形式为函数返回值类型函数名(形式参数)〃函数首部{说明语句;〃函数体可执行语句;}________________________________________________________________________标识符是用来标识程序中的某个对象名字的字符序列语言把标识符分为三类,即关键
3.C字、预定义标识符、用户自定义标识符对于用户自定义标识符的命名语言规定C()所有的用户标识符必须先定义后使用;1
(2)用户标识符由字母(A~Z,a~z)、数字(0~9)、下划线”组成,并且首字符不能是数字;
(3)区分大小写;
(4)不能用关键字作为用户自定义标识符,通常不使用预定义标识符作为用户自定义%109一.随堂练习【随堂练习10-11定义一个文件指针指向以只读方式打开的文本文件
1.fpin,d:\test\in.dat”FILE*fpin;fpin=fopen〃d:\\test\\in.dat〃,〃r〃;定义一个文件指针指向以只写方式打开的文本文件
2.fpout,“d:\test\out.dat”FILE*fpout;fpout=fopen,,d:\\test\\out.datVw//;二.本章自测在本单元中,如何打开文件、如何读写文件以及如何关闭文件是核心内容通过本单元的学习,我们应该知道语言对文件的操作是通过文件指针实现的,文件指针是系统定义好的结构类型,名称为
1.C,该类型已在头文件中定义,对文件进行操作时,用该类型直接定义文件指针变量即可FILE stdio.h定义形式为文件指针变量名;FILE*对文件的操作过程及相应的文件操作函数为
2.第一步打开文件________,相应的函数为fopen__________________o第二步读写文件________,相应的函数为等__________fputc/fgetc o第三步关闭文件,相应的函数为fcloseO__________________o通过本单元的学习,应理解文件指针的含义,重点掌握利用文件指针操作文件的方法,FILE以及文件操作函数的使用方法标识符理论上讲,程序开发过程分为四个步骤,分别为
4.()编辑源程序___________________________________________1()编译源程序,生成目标程序_____________________________2()连接目标程序及其相关模块,生成可执行文件_____________3()运行可执行文件_______________________________________4简单描述使用开发应用程序的步骤
5.VC++
6.0如图所不图开发程序的步骤VC++
6.0总之,通过本单元的学习,应该掌握语言程序框架结构和程序开发过程,还要对语言程序C C设计的知识脉络有一定的了解第,2一.随堂练习【随堂练习2-1]判断下列常量表示正确与否?带下划线的不正确
1.整型常量、、1327680370810x4f OxAH浮点型常量、、、
2.
1243.0le3字符型常量、、、3,a10165\x21,字符串常量的字符串长度为_个字节,它占用的存储空间为个子下
2.Howareyou\n
143.ud:\windows\info.txt,,在C语言程序设计时应描述为l,d:\\windows\\info.txt,1在编程处理物理力学相关运算时,常将重力加速度定义为符号常量,其定义语句可描述为
4.G#define G
9.8【随堂练习2-2]完成本单元【引例】中的问题
1.lofloat ab,c s area;,,下列变量定义中合法的是以下定义语句均不合法
2.1long do=Oxfd;2int max=min=0;3double f,inta;4char ch=A;【随堂练习2-3]完成本单元【引例】中问题
1.2#include math.hs=a+b+c/2;area=sqrts*s-a*s-b*s-c有定义语句写出将变量变为小写字母的表达式
2.char ch=W;,ch ch=ch+32;【随堂练习2-4].试分析本单元【弓例】的数据结构和实现算法,并绘制算法流程图1I数据结构三角形的三个边长中间变量和面积均为浮点型1a,b,c,sarea,。