C语言程序设计总复习.docx
《C语言程序设计总复习.docx》由会员分享,可在线阅读,更多相关《C语言程序设计总复习.docx(200页珍藏版)》请在冰豆网上搜索。
C语言程序设计总复习
C语言程序设计实验指导书
第1章引论
1.1本章导学
一、教学目标
1.了解程序和程序设计语言、C语言的发展和特点。
2.初步掌握C语言源程序的结构特点与书写规范。
3.掌握在集成环境中编辑、编译、连接和运行C语言程序的方法。
二、知识要点
1.程序与程序设计语言
所谓程序,就是一组计算机能识别和执行的指令序列。
任何人之间的交流需要通过语言,人和计算机交流信息,需要创造一种计算机和人都能识别的语言。
编写计算机程序所采用的语言形式称为程序设计语言。
程序设计一般可以分为以下几个步骤:
(1)问题分析。
(2)确定算法。
(3)编写程序。
(4)对源程序进行编辑、编译和连接,得到可执行程序。
(5)运行程序,分析结果。
(6)编写程序文档。
2.C程序举例
#include
intmain()
{printf(“ThisisaCprogram!
”);//输出语句
return0;
}
运行结果:
ThisisaCprogram!
程序说明如下:
(1)C程序是由函数构成的,一个C程序至少且仅包含一个主函数(main函数)。
(2)一个函数由函数首部和函数体构成。
函数首部定义了函数的类型、函数名及函数参数;函数首部下面的花括号内的部分为函数体。
(3)C程序总是从主函数(main函数)开始执行。
(4)#include是“文件包含”预处理命令。
编译器在开始工作之前,先对预处理命令进行预处理。
预处理命令必须放在程序的开始处。
(5).h为扩展名的文件称为头文件,可以是C语言程序中的标准库文件,也可以是自定义的库文件。
标准输入输出库函数包含在stdio.h头文件中。
(6)intmain()是按照C99标准,将主函数定义为int(整型)类型,并在函数的末尾加一个返回语句“return0;”,表示主函数正常结束时,返回整数0。
(7)大括号{和}分别位于函数定义的开始和结尾处,括的内容是函数的主体。
大括号的另一种用法是将语句块括起来。
(8)printf()为标准输出函数,一般格式:
printf(格式控制,输出表列)。
(9)每个语句和数据声明的最后必须以分号结束。
(10)C语言中注释只是方便阅读,并不参与程序的编译和运行,分为两种注释方式:
/*…*/为块式注释,//为单行注释。
(11)C语言源程序的扩展名为.c。
3.C程序的格式特点
C程序并无严格的格式要求,以下建议可帮助提高程序的可读性,不影响程序功能。
(1)整体采用小写字母的风格书写程序,C语言区分大小写。
(2)书写格式自由,一行可以写多个语句,一个语句也可以写在多行上。
(3)一般一个声明或一个语句占一行。
(4)同层次关系的一对大括号的位置上下对齐。
(5)低层次的语句或声明可比高一层次的语句或声明缩进若干格后书写。
(6)添加足够的注释信息。
4.C程序的开发过程
计算机不能直接执行用C语言编写的程序,C程序必须经过编译和连接后才能执行。
C程序的开发过程如图1.1所示。
从图中可以看出,编辑后得到C源程序,其扩展名为“.c”。
然后经过编译生成目标文件,其扩展名为“.obj”,编译时会检查语法错误。
如果程序有误则需返回编辑阶段进行修改,直至没有语法错误,才能通过编译。
之后再经过连接,即把目标文件与系统的库函数和该文件有关的其他目标文件连接起来,形成一个可执行文件,其扩展名为“.exe”。
连接的时候如果连接程序不能在所有的库函数和其他目标文件内找到所引用的函数或变量,也会提示出错。
最后,运行可执行文件,如果结果正确则结束,否则返回编辑阶段修改,直至得到正确的运行结果。
1.2基础实验
1.VC的启动及窗口组成
首先要安装VC++,然后单击“开始”菜单或桌面上的VC++快捷方式图标,启动VC++,进入VC++的主窗口,如图1.2所示。
主窗口包含了开发环境的所有功能,其主要功能可以通过菜单栏中的各菜单项以及工具栏中的命令按钮实现。
图1.1C程序的开发过程
图1.2VC++6.0主窗口
2.创建工程项目
在VC++主窗口的主菜单栏中单击“文件(F)”,在其下拉菜单中单击“新建(N)”选项,如图1.3所示。
图1.3文件菜单
弹出“新建”对话框,单击此对话框左上角的工程选项卡,选择“Win32ConsoleApplication”选项,如图1.4所示。
在磁盘上新建一个目录,用于存放C语言程序,如“D:
\张三\第1章\”。
修改文件保存位置为:
“D:
\张三\第1章”,工程名称为“chap1”,单击“确定”按钮,如图1.4所示。
图1.4新建工程项目界面
屏幕上出现如图1.5所示的“Win32ConsoleApplicaion-步骤1共1步”对话框后,选择“一个空工程”,单击“完成”按钮继续。
图1.5新建工程向导
出现如图1.6所示的“新建工程信息”对话框后,单击“确定”按钮完成工程创建。
创建的工作区文件为chap1.dsw和工程项目文件“chap1.dsp”。
图1.6新建工程信息
3.创建源程序文件
选择“工程(P)”菜单中的“增加到工程(A)”选项下的“新建(N)”子选项,为工程添加新的C源程序文件。
如图1.7所示。
出现如图1.8所示的“新建”对话框后,选择“文件”选项卡,选择“C++SourceFile”选项,输入“1-2.c”文件名,单击“确定”按钮,出现程序编辑区,光标闪烁等待输入。
注意:
在填入C源文件名时,一定要加上扩展名“.c”,否则系统会为文件添加默认的C++源文件扩展名“.cpp”。
图1.7增加到工程界面
图1.8新建文件界面
4.编辑源程序文件
在程序编辑区输入准备好的源程序,在输入过程中可随时单击工具栏保存图标,如图1.9所示。
5.编译文件
单击菜单栏中“组建(B)”下的“编译[1-2.c]”选项,或单击工具栏上按钮
,或按Ctrl+F7快捷键进行编译,编译后生成目标文件“chap1.obj”。
主窗口下方的输出窗口将显示编译过程中检查出的错误或警告信息,在错误信息处单击鼠标右键或双击鼠标左键,可以使输入焦点跳转到引起错误的源代码处大致位置进行修改。
如图1.10所示。
图1.9编辑C源文件
图1.10编译C源文件
6.连接文件
单击菜单栏中“组建(B)”下的“组建[chap1.exe]”选项,或单击工具栏上按钮
,或按F7快捷键进行连接,链接后生成可执行文件“chap1.exe”。
如图1.11所示。
程序组建生成的目标文件(.obj)和可执行文件(.exe)存放在当前工程项目所在文件夹的“Debug”子文件夹中。
7.运行程序
单击菜单栏中“组建(B)”下的“执行[chap1.exe]”选项,或单击工具栏上按钮
,或按Ctrl+F5快捷键执行程序,将会出现运行结果显示窗口,如图1.12所示,按任意键返回到VC++编辑窗口。
对于比较简单的程序,可以直接选择该项命令,编译、连接和运行一次完成。
图1.11连接C程序
图1.12运行结果
8.关闭工作空间
单击菜单栏中“文件(F)”下的“关闭工作空间(K)”选项,屏幕提示如图1.13所示。
单击“是”按钮关闭工作空间以结束对该程序的操作。
如果不关闭工作区就写程序,可能原来的程序还在工作区内,从而会给初学者运行程序带来麻烦。
图1.13关闭工作空间对话框
1.3拓展实验
1.程序分析,预测运行结果,并上机编译、连接、运行。
#include
intmain()
{printf(“helloeveryone!
\n”);
return0;
}
程序的运行结果是屏幕上显示:
。
[提示]
printf()函数将双引号内的普通字符按原样输出;“\n”是转义字符,含义为换行。
[思考]
如果printf(“helloeveryone!
\n”);修改为printf(“hello\neveryone!
\n”);
则程序的运行结果是:
。
2.程序改错,请查找并修改以下程序中的语法错误,使程序运行后在屏幕上显示一行信息。
#include
intmian()
{printf(“Icandoit!
\n”)
return0;
}
[提示]
(1)要调试本程序,应先关闭之前运行程序的工作区。
(2)注意体会输出窗口的提示信息,依次双击出错信息,可快速定位到出错位置附近。
(3)应把程序中的mian改为main。
(4)C语言程序要以“;”结束,注意在英文状态下输入。
(4)C语言程序要以“}”结束。
3.⊙程序设计。
编写一个C程序,实现输出如下结果:
姓名:
张三丰
性别:
男
年龄:
105
[提示]
注意中英文转换。
C程序的标点符号需在英文半角状态输入。
1.4习题
一、选择题
1.C语言属于()。
A.机器语言B.低级语言C.中级语言D.高级语言
2.以下叙述中正确的是()。
A.C语言程序将从源程序中第一个函数开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.C语言规定必须用main作为主函数名,程序从此开始执行,在此结束
D.main作为用户标识符,用以命名任意一个函数作为主函数
3.C语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面
C.可以任意D.必须在最后
4.以下叙述中错误的是()。
A.一个C程序中可以包含多个不同名的函数
B.一个C程序只能有一个主函数
C.C程序在书写时,有严格的缩进要求,否则不能编译通过
D.C程序中主函数必须用main作为函数名
5.以下叙述中正确的是()。
A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C语言程序书写时,不区分大小写字母
C.C程序书写格式自由,一个语句可以写在多行上
D.C程序书写格式严格,要求一行内只能写一个语句
6.C语言程序的块注释是()。
A.由“/*”开头,“*/”结尾B.由“/*”开头,“/*”结尾
C.由“//”开头D.由“/*”或“//”开头,“*/”结尾
7.C语言程序的每条语句结束要使用()标点符号。
A.句号B.分号C.逗号D.冒号
8.以下叙述中正确的是()。
A.在编译时可发现注释中的拼写错误
B.C语言程序的每行只能写一条语句
C.main函数必须位于程序的开始处
D.C语言程序可以由一个或多个函数组成
9.⊙用C语言编写的代码程序()。
A.可立即执行B.是一个源程序
C.经过编译即可执行D.经过编译解释才能执行
10.⊙计算机能直接执行的程序是()。
A.源程序B.目标程序C.汇编程序D.可执行程序
11.标准C语言程序的文件名的后缀为()。
A..cB..cppC..objD..exe
12.C语言程序经过编译以后生成的文件名的后缀为()。
A..cB..cppC..objD..exe
13.C语言程序经过链接以后生成的文件名的后缀为()。
A..cB..cppC..objD..exe
二、程序设计题
1.⊙编写一个C程序,输入a,b两个值,输出这两个数的和。
2.编写一个C程序,输出以下图案。
*
***
*****
第2章C程序设计的初步知识
2.1本章导学
一、教学目标
1.掌握C语言的基本数据类型。
2.掌握算术、关系、逻辑、赋值、逗号、强制类型转换等运算符的应用。
3.明确运算符优先级关系,并能掌握各类表达式的运算方法。
4.学会分析问题的方法,能使用流程图、伪码等方式正确描述算法。
二、知识要点
1.常量、变量与标识符
(1)常量
在程序运行过程中,其值不能被改变的量,称为常量。
C语言中,常量可分为数值常量、字符常量、字符串常量和符号常量。
数值常量包含整型常量和实型常量,它们有正值和负值的区分,如:
12、-1、-23.2等。
字符常量是使用单引号标识的一个字符,如:
’a’、’0’、’\n’等。
字符串常量是使用双引号标识的多个字符,如:
”Iamaboy!
”、”HelloCprogram!
”等。
符号常量是在main()之前使用#define定义代表一个常量的标识符,如:
#definePI3.1416,PI是符号常量,代表3.1416。
符号常量一般用大写字母表示。
(2)变量
在程序运行过程中,其值可改变的量,称为变量。
程序中调用的每一个变量都要先定义,后使用。
一个变量实质上是代表了内存中的某个存储单元,针对调用数据的不同而定义不同类型的变量。
C语言中常见的数据类型如表2.1所示。
表2.1基本数据类型
类型
字节数
取值范围
整型
[signed]int
2或4
-215~(215-1)或-231~(231-1)
unsignedint
2或4
0~216-1或0~232-1
[signed]short[int]
2
-215~(215-1)
unsignedshort[int]
2
0~216-1
long[int]
4
-231~(231-1)
unsignedlong[int]
4
0~232-1
实型
float
4
0以及1.2*10-38~3.4*1038(绝对值)
double
8
0以及2.3*10-308~1.7*10308(绝对值)
longdouble
8或16
0以及2.3*10-308~1.7*10308(绝对值)
0以及3.4*10-4932~1.1*104932(绝对值)
字符型
char
1
0~28-1或-27~27-1
注:
表中列出了TurboC2.0和VC++6.0两种编译系统为不同数据类型分配的字节数和取值范围,部分类型取值不同,例如,2或4个字节,表示TurboC2.0分配2字节,VC++6.0分配4字节;
变量定义的一般格式为:
数据类型说明符变量列表;
例如:
inti,j;
longk,m;
floatx,y;
charch1,ch2;
(3)标识符
在C语言中,标识符可用作变量名、符号常量名、函数名等。
合法的标识符由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
C语言的标识符可分为以下三类:
①关键字:
在程序中代表固定的含义,不能另作它用(见教材附录A)。
②预定义标识符:
库函数名、预编译处理命令等。
③用户标识符:
由用户根据需要定义的标识符,一般用来给变量、常量、函数等命名。
2.运算符与表达式
对运算对象完成规定操作运算的符号称为运算符,由运算符和操作数共同构成的式子称为表达式。
C语言中的运算符可分为算术运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符、位运算符、其它运算符。
常见运算符及优先级如表2.2所示。
表2.2运算符及优先级
类型
运算符
优先级
基本运算符优先级
算术运算符
+-*/%++--+-
-++--*/%+-
同级同级同级
高低
高!
算术运算符
关系运算符
&&
||
条件运算符
赋值运算符
低
赋值运算符
=+=-=*=/=%=
关系运算符
><>=<===!
=
>>=<<===!
=
同级同级
高低
逻辑运算符
&&||!
!
&&||
高低
条件运算符
?
:
逗号运算符
,
(1)算术运算符
算术表达式主要功能是完成数值运算,其中:
1“/”除法运算中,除数不可为0,且当两个整数相除时,结果为整数,舍去小数部分。
2“%”求余运算中,操作数只能是整数或整型变量,结果为整型。
3“++”自加运算,“--”自减运算:
●前置运算,先自加(减)后取值,++i,--i,先执行i=i+1(或i=i-1),再调用i值;
●后置运算,先取值后自加(减),i++,i--,先调用i值,再执行i=i+1(或i=i-1)。
前置或后置运算的区别在于表达式的值不同,前置运算取自加(减)1后变量的值为表达式的值,后置运算取自加(减)1前变量的值为表达式的值;二者对变量本身没有区别,都能使变量的值自加(减)1。
例:
#include
intmain()
{
inta=4,b,c;
b=(++a)*6;
c=(a++)*6;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
return0;
}
运行结果为:
a=6,b=30,c=30
(2)赋值运算符
赋值运算完成将右边的值赋给左边的变量。
赋值运算符左边必须是变量,右边可以是C语言任意合法的表达式。
如:
inta=3;charm=‘a’;m%=3+n(等价于m=m%(3+n))。
(3)逻辑运算符
逻辑运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算。
其运算规则如表2.3所示。
表2.3逻辑运算规则
a
b
!
a
!
b
a&&b
a||b
非0
非0
0
0
1
1
非0
0
0
1
0
1
0
非0
1
0
0
1
0
0
1
1
0
0
(4)逗号运算符
使用逗号运算符将多个表达式连接起来的式子称为逗号表达式,表达式一般形式如下:
表达式1,表达式2,……,表达式n
运算时先求解表达式1,再求解表达式2,……,最后求解表达式n,整个逗号表达式的值为表达式n的值。
(5)条件运算符
条件运算符是C语言中唯一的一个三目运算符,由条件运算符连接操作数构成的式子称为条件表达式,其一般形式如下:
表达式1?
表达式2:
表达式3
对表达式1求解,若表达式1的值为真(非零),则执行表达式2,否则执行表达式3。
(6)强制类型转换运算符
在C语言中可以利用强制类型转换运算将一个表达式转换成所需要的类型。
强制转换的一般形式如下:
(类型名)(表达式)
例:
(double)a将a的值转换成double类型;
(int)(x+y)将x+y的值转换成整型;
(float)(5%3)将5%3的值转换成float型。
3.算法描述
(1)算法
解决某一特定问题的方法和步骤称为算法。
一个算法应具有以下五个特性。
①有穷性。
一个算法应包含有限个操作步骤。
②确定性。
算法中每一条指令必须有确切的含义。
③有效性。
算法中的每一个步骤都应当能有效地执行,并得到确定的结果。
④有零个或多个输入。
输入是指在执行算法时需要从外界取得必要的信息。
⑤有一个或多个输出。
算法的目的是求解,没有解的算法是无意义的。
(2)算法描述
算法可以通过多种方式来描述,常用的描述工具有程序流程图、N-S盒图、伪码等。
①程序流程图
程序流程图基本图形元素符号如图2.1所示:
图2.1流程图基本图形元素符号
例:
输入两个数,输出较大值。
N
Y
图2.2输出两个数中较大者
②N-S流程图
N-S盒图基本元素符号如图2.3所示:
顺序结构选择结构直到型循环结构(do-while)当型循环结构(while)
图2.3N-S流程图基本元素符号
例:
输入两个数,输出较大值。
图2.4用N-S流程图表示输入两个数,输出较大值
③伪码
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。
例:
计算5!
BEGIN{算法开始}
1t
2i
whilei≤5
{t×it
i+1i}
printt
END{算法结束}
2.2基础实验
一、程序分析
1.以下程序的运行结果是:
。
#include
intmain()
{printf(“******\nverygood!
\n******\n”);
return0;
}
2.以下程序若输入25和43,则运行结果是:
。
#include
intmain()
{inta,b,t;
printf(“entera,b,”);
scanf(“%d%d”,&a,&b);
t=a;a=b;b=t;
printf(“%d,%d”,a,b);
return0;
}
3.以下程序的运行结果是:
。
#include
intmain()
{floatx;
x=1.0/2+1.0/3+1.0/4;
printf(“\nx=%f\n”,x);
return0;
}
如果代码中相应的表达式改为x=1/2+1/3+1/4,则运行结果是,原因是。
二、程序填空
1.以下程序实现的功能是:
分别定义4个变量a,b,c,d,其中a为字符型,b为整型,c为单精度实型,d双精度实型,分别将a、98、3.2、17.668赋给4个变量并输出。
请将程序补充完整,并分析程序的运行结果。
#include
intmain
{chara;
intb;
c;
doubled;
a=‘a’
b=98;
c=3.2;
;
printf(“%c,%d,%f,%lf\n”,a,b,c,d);
return0;
}运行结果:
。
2.以下程序实现的功能是计算(10+24)*3的结果,请将程序补充完整,并分析程序的运行结果。
#include
intmain()
{intx;
;
printf(“x=%d\n”,x);
return0;
}运行结果:
。
3.⊙以下程序实现的功能是计算半径为1.5的圆的面积,请将程序补充完整,并分析程序的运行结果。
#include
intmain()
{floatr=1.5;
doubles;
s=PI*pow(r,2);
printf(“\n%lf\n”,s);
return0;
}运行结果:
。
2.3拓展实验
一、程序改错(以下程序存在错误,请调试程序并将错误找出后改正,运行程序,填写结果)
1.以下程序实现的功能是对u,v进行初始化,并输出u,v的值。
行号
源程序
1
2
3
4
5
6
#include
intmain()
{intu=v=89;
printf(“u=%d,v=%d\n”,u,v);
return0;
}
找错
错误在行
应改为:
调试正确后的运行结果
运行结果:
2.下面的程序试图计算由键盘输入的任意两个整数的平均值。
行号
源程序
1
2
3
4
5
6
7
8
#include
intmain()
{intx,y,a;
scanf(“%x,%y”,&x,&y);
a=(x+y)/2;
printf(“Theaverag