C语言程序设计教程 1
C语言程序教程重庆工学院
C语言程序设计教程 2
课程要求课程目标:
正确理解和使用 C语言的基本数据结构和语法
运用结构化程序的思想去阅读和设计程序
完成结构化程序的编写、调试的基本训练课程基本要求,
学会使用 C语言编译系统,学会上机调试 C程序
C语言概念和方法要清楚,书上的例子要明白
掌握程序设计的一般方法和思想、常用算法
认真完成作业
C语言程序设计教程 3
课程特点
C是基础:接触各种数据类型及表达式、基本语句语法、常用函数
C程序设计,基本算法和案例程序的融合后续课程
C++程序设计、面向对象程序设计、数据结构与算法分析、
操作系统 (UNIX)
学什么
C语言及程序设计概述数据类型、运算符与表达式简单程序设计 (顺序、选择、循环结构程序设计 )
数组 函数指针结构体与共用体 文件
C语言程序设计教程 4
教学方法 —— 如何教理论课:重点讲授主要算法和程序案例实验课:验证式实验教学,实现算法程序习题课:分析复杂程序案例学习方法 —— 如何学
课前预习:书中主要语句、函数、例题
课后复习:教案中重点例题
认真独立完成作业
上机前必须完成基本程序
多读、多看、多写程序
C语言程序设计教程 5
第一章语言的发展及其特点和应用本章要求:
了解 C语言的特点、与其它高级语言间异同;
了解 C程序在 PC机上的建立、编译和运行过程;
了解 C语言程序设计思想;
重点:
C语言的主要特点;
C语言在 PC机上的运行过程及上机操作过程;
常用算法的应用
C语言程序设计教程 6
0,回顾下计算机相关知识
1,计算机定义:计算机是一种在事先存入程序的控制下,能够接收数据、存储数据、处理数据并提供处理结果的数字化电子设备。
输入数据 输出结果
2.计算机工作流程图输入 处理存储输出数据
C语言程序设计教程 7
3,计算机内所有的信息(多媒体信息)采用二进制代码表示,称为机器数。
机器数有三种不同的编码形式:原码、反码和补码。
4,采用二进制的原因:
1)二进制只含有两个数字 0和 1,因此可用大量存在两种不同稳定状态的元件来表示。
2)二进制数的运算规则简单,使得计算机中的运算部件的结构变得比较简单。
5,计算机中信息的表示数值直接转换为二进制字符采用 ASCII编码( 7位、美国标准信息交换码)
其它信息(汉字、图形、图象、声音、表格)也有相应的编码标准和规则。
C语言程序设计教程 8
计算机系统软件系统硬件系统系统软件(操作系统、编译程序、测试程序等)
如 DOS,WINDOWS等应用软件 (WORD,EXCEL等)
CPU 控制器运算器输入设备(鼠标、键盘、手写笔,MIC等)
输出设备(显示器、绘图仪、打印机等)
存储器内存储器( ROM,RAM)
外存储器(软盘、硬盘、光盘)
6,计算机系统的组成
C语言程序设计教程 9
程序设计语言发展
C语言程序设计教程 10
程序执行
C语言程序设计教程 11
1.1.1 C语言的发展
C语言是在研制 UNIX操作系统过程中诞生,伴随着
UNIX操作系统的发展而流行
ALGOL 60? B 语言? C 语言 (UNIX)?ANSI
C(1983)
目前最流行的C语言有以下几种:
Microsoft C 或称 MS C
Borland Turbo C 或称 Turbo C (本教材选用)
AT&T C
Turbo C2.0 1989年
Turbo C++(3.0) 1991年
C语言程序设计教程 12
1.1.2 C语言主要特点:
1,C语言简洁、紧凑,使用方便、灵活。 ANSI C一共只有 32个关键字,9种控制语句,主要用小写字母表示。
2、运算符丰富。共有 34种。 C把括号、赋值、逗号等都作为运算符处理。
3、数据结构类型丰富。
4,C语言是一种结构化、模块化的程序设计语言。其程序由函数组成,便于模块化的程序设计,程序结构完全由顺序结构、
选择结构和循环结构组成。
5、语法限制不太严格,程序设计自由度大。一行可以写多个语句,变量类型使用灵活。
6,C语言既具有高级语言的功能,又具有汇编语言的许多功能。
7、生成目标代码质量高,程序执行效率高,与汇编语言相比,
用 C语言写的程序可移植性好。
C语言程序设计教程 13
1.2 C语言程序的基本结构
1.简单的 C程序例 1.1输出指定字符串。
#include<stdio.h>
void main()
{
printf("Hello,this is a c programming language.\n");
/*输出 C程序语言字符串 */
}
程序运行结果:
Hello,this is a c programming language.
C语言程序设计教程 14
程序分析
1) C程序一般用小写字母书写;
2)每个 C源程序有且只能一个 main ( ) 函数,称主函数;
main前的 void表示此函数是,空类型,。
3)程序体必须在一对 { }之间;
4)每个语句的结尾,必须要有,;,作为终止符。
5) /*…… */ 表示注释部分,注释内容可用汉字或英文字符表示。
6)函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示,
7) printf函数是一个由系统定义的标准函数库中的输出函数,
可在程序中直接调用。 printf语句中双撇号中的字符串按原样输出。,\n”是换行符即回车换行。
8),#include”为预编译命令也称为文件包含命令,常在
,main”主函数之前,用于将有关的,头文件,包括到用户源文件中。被包含的文件通常是由系统提供的,其扩展名为,h。
,stdio.h”为标准输入输出库文件,其内定义了 printf函数的原型。
C语言程序设计教程 15
例 1.2计算指定函数关系式。
程序运行结果:
input number:
9↙
2*sqrt(9.000000)+1=7.000000
#include<math.h>
#include<stdio.h>
void main()
{
float x,y; /*定义两实型变量 */
printf("input number:\n");
scanf("%f",&x); /*输入数字 */
y=2*sqrt(x)+1; /*计算指定函数关系式的结果 */
printf("2*sqrt(%f)+1=%f\n",x,y); //按制定格式输出
}
C语言程序设计教程 16
程序的功能是输入一个实数 x,求 2倍开方 x加 1关系式的值,然后输出结果
1)凡是在程序中调用一个库函数时,都必须用预处理命令调用该函数原型所在的头文件。在本例中,使用了三个库函数:输入函数 scanf,开平方函数 sqrt,输出函数 printf。 sqrt函数是数学函数,其头文件为 math.h
文件。 scanf和 printf是标准输入输出函数,其头文件为 stdio.h。
2) /*…… */注释语句可出现在一行中的最右侧,也可独成为一行。注释也可以用,//”符号标识注释内容,这种注释只在一行有效,在执行语句的前面和中间不能使用这种注释。
3)本例中主函数体分为两部分,一部分为说明部分,另一部为执行部分。
说明是指变量的类型说明。C语言规定,源程序中所有用到的变量都必须先定义,后使用,否则将会出错。本例中使用了两个变量 x,y,用来表示输入的自变量和 sqrt函数值。说明部分后的四行为执行部分或称为执行语句部分,用以完成程序的功能。执行部分的第一行是输出语句。
第二行为输入语句。第三行是调用 sqrt函数并把函数值送到变量 y中。第四行是用 printf 函数输出变量 y的值。
4)运行本程序时,首先在显示器屏幕上给出提示串 input number,这是由执行部分的第一行完成的。用户在提示下从键盘上键入某一数,如 9,按回车键( enter),接着在屏幕上给出计算结果。
程序分析:
C语言程序设计教程 17
格式输入格式输出函数简介
scanf和 printf一般形式为:
printf或 scanf(格式控制,参数表)
格式控制是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。各种类型的格式表示法可参阅后续章节。在 printf函数中还可以在格式控制内出现非格式控制字符,这时在显示屏幕上将按原样输出。
参数表中给出了输入或输出的量。当有多个量时,用逗号间隔。例如:
printf("2*sqrt(%f)+1=%f\n",x,y);
其中 %f为格式字符,表示按实数处理。它在格式串中两次现,分别对应了 x和 y两个变量。其余字符为非格式字符则按原样输出在屏幕上。
C语言程序设计教程 18
程序运行结果:
input two numbers:a,b
5,9↙
max=9
例 1.3求两个数的最大值。
#include<stdio.h>
int max(int x,int y) /*定义 max函数 */
{ int m;
if(x>y)
m=x;
else
m=y;
return m; } /*把结果返回主调函数 */
void main() /*主函数入口,程序执行起点 */
{int a,b,c; /*变量说明 */
int max(int a,int b); /*函数说明 */
printf("input two numbers:a,b\n");
scanf("%d,%d",&a,&b); /*输入 a,b的值 */
c=max(a,b); /*调用 max函数 */
printf("max=%d\n",c); } /*输出两数的最大值 */
C语言程序设计教程 19
程序分析:
程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。
本程序由两个函数组成,主函数和 max 函数。函数之间是并列关系。可从主函数中调用其它函数。 max 函数的功能是比较两个数的大小,然后把较大的数返回给主函数。
max函数是一个用户自定义函数,其返回值类型是整型。
因此在主函数中要给出说明。在程序的说明部分中,不仅可以有变量说明,还可以有函数说明。在程序的每行后用
/*和 */括起来的内容为注释部分,程序不执行注释部分。
上例中程序的执行过程是,首先在屏幕上显示提示字符串,
请用户输入两个数,回车后由 scanf函数语句接收这两个数,并送入变量 a,b中,然后调用 max函数,把 a,b 的值传送给 max函数的参数 x,y。在 max函数中比较 x,y的大小,把大者通过中间变量 m返回( return m)给主函数的变量 c,
最后在屏幕上输出 c的值。
C语言程序设计教程 20
2.C程序结构特点通过上述例子,可以对C源程序的结构特点归纳如下
1)一个C语言源程序可以由一个或多个源文件组成。
2)每个源文件可由一个或多个函数组成。( main主函数、系统提供 printf,scanf函数、用户定义 max函数)
3)一个源程序不论由多少个文件组成,都有一个且只能有一个 main函数,即主函数。程序总是从 main()处开始执行,而不管 main()在源文件中的位置。
4)源程序中可以有预处理命令 (include 命令仅为其中的一种 ),预处理命令通常应放在源文件或源程序的最前面。
5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号,}”之后不能加分号。
6) C语言用函数进行输入输出,如 printf(),scanf()。
7) C语言用 /*…… */或 //作注释。注释部分便于阅读程序的人理解程序员的设计意图,这是一个良好的习惯。
8) C程序书写格式自由,一个语句可以占多行,一行也可以有多个语句。
C语言程序设计教程 21
3.书写 C程序时应遵循的规则从书写清晰,便于阅读,理解,维护的角度出发,
在书写程序时应遵循以下的规则:
1)一个说明或一个语句单独占一行。
2)用 {} 括起来的部分,通常表示了程序的某一层次结构。 {}一般与该结构语句的第一个字母对齐,并单独占一行。
3)低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来层次清晰、结构明了,增加程序的可读性。
C语言程序设计教程 22
4.C语言的字符集字符是组成语言的最基本的元素。C语言字符集由字母,
数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。
1)字母小写字母 a~ z共 26个,大写字母 A~ Z共 26个,
2)数字
0~ 9共 10个
3)空白符空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。
4)标点和特殊字符
C语言程序设计教程 23
1.3 算法表示方法
1.基本概念介绍
做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。在详细展开算法内容前,先介绍几个基本概念。程序=
数据结构 +算法。数据结构是程序中用到的数据的构造形式及其类型。对于面向对象程序设计,强调的是数据结构,而面向过程的程序设计语言如 C语言,主要关注的是算法。算法是程序的核心,也是面向对象程序设计的基础。
C语言程序设计教程 24
结构化设计是指任何复杂的程序皆可由顺序、分支、循环三种基本结构组成。
程序设计的一般步骤是:设计算法 → 描述算法 → 编写程序
→ 检查程序 → 编译调试和运行程序。
由此,对于程序的概念,我们可以这样理解:
程序=算法 +数据结构 +程序设计方法 +语言工具和环境
程序设计的关键是解题的方法与步骤 —— 算法。算法可分为两大类:数值运算算法和非数值运算算法。数值运算算法:即求数值解,通过运算得出一个具体值,数值运算一般有现成的模型,算法较成熟。非数值运算算法:用于事务管理,如图书检索、人事管理等。具体对语言而言,其语法就是工具,是算法的一个具体实现和描述。
C语言程序设计教程 25
先看两个常用的简单算法:
例 1.4累加,求,1+2+3+4+5…… +100。
第一步,1+2 → S (结果)
第二步,S+3 → S (结果)
第三步,S+4 → S (结果)

第九十九步,S+100 → S (结果)
这样的算法虽然正确,但太繁琐。
改进的算法:
第一步:令 x= 1;
第二步:令 i= 2;
第三步:使 x+i,和仍放在 x中,可表示为 x+i→x ;
第四步:使 i的值 +1,即 i+1→i 。
第五步:若 i≤100,返回重新执行步骤第三步以及其后的第四步和第五步;否则,算法结束。
C语言程序设计教程 26
例 1.5有 10个工人,要求查找其中工资高于 1500元的人员,
并输出。
算法分析:
如用 n表示工人序号,ni表示第 i个工人的序号,g表示工人的工资,gi表示第 i个工人的工资。
算法表示:
第一步,1→i 。
第二步:如果 gi≥1500,则打印 ni和 gi,否则不打印。
第三步,i+1→i 。
第四步:若 i≤10,返回第二步,否则结束。
一个优秀的算法应该具备以下特性:
有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。
C语言程序设计教程 27
2.常用算法的表示方法
算法的表示方法有很多种,常用的有:自然语言描述、
伪代码、流程图,N- S图等。在这里重点介绍流程图和 N- S图。
用流程图表示算法
一个流程图包括:表示相应操作的框,带箭头的流程线,框内外必要的文字说明。几何图形框的含义如下图所示。
起止框 输入输出框 判断框处理框 流程线 连接点
C语言程序设计教程 28
例 1.6用流程图表示例 1.4和 1.5
输出 x
结 束
Y
开 始
i < = 10 0
x = 1
i = i + 1
x = x + i
i = 2
N
打印 ni,gi
结 束
Y
开 始
gi > = 1 500
0
1 → x
N
i + 1 → i
i < = 10
N
C语言程序设计教程 29
一个流程图,包括以下几部分:
表示相应操作的框;
带箭头的流程线;
框内外必要的文字说明;
注意,画流程线时,不要忘记画箭头,因为它是反应流程的执行先后次序的,如不画出箭头就很难判断各框的执行次序了。
C语言程序设计教程 30
根据结构化程序设计的思想,任何一个程序都由顺序、循环、选择三种基本结构组成,其流程图结构如下所示。
① 顺序结构
A
B A B
P
不成立成立
A
P
不成立成立
A
P
不成立成立
A
P
成立不成立
③ 循环结构
② 选择结构
C语言程序设计教程 31
用 N-S流程图表示算法
① 顺序结构
A B
P
成立 不成立
A
B
当 P 成立
A
当 成立直到 P 成立
A
直到 成立
② 选择结构 ③ 循环结构
C语言程序设计教程 32
用计算机语言表示算法例 1.6用 C语言改写示例 1.4 例 1.7用 C语言改写示例 1.5
#include<stdio.h>
void main()
{int i;
float arr[10];
printf("please input the salary ");
for(i=0;i<=9;i++)
scanf(" %f",&arr[i]);
for(i=0;i<10;i++)
{
if(arr[i]>=1500)
printf("the %d's salary is %f\n",i+1,arr[i]);
}
}
#include<stdio.h>
void main()
{ int i,s;
i=2;
s=1;
while(i<=100)
{
s=s+i;
i=i+1;
}
printf("sum is %d\n",s);
}
C语言程序设计教程 33
1.4 运行 C语言程序的基本步骤
#include文件
C库文件
×××,C源程序
×××,obj目标程序
×××,exe 可执行程序文件程序开发过程
C语言程序设计教程 34
写好一个程序后,要经过这样几个步骤:上机输入与编辑源程序 → 对源程序进行编译 → 与库函数连接 → 运行目标程序。如下图所示,其中实线表示操作流程,虚线表示文件的输入输出。
可执行目标程序,exe
结 束有开 始有错?
编 辑执 行连 接编 译不正确结果正确?

源程序,c
目标程序,obj
库函数和其他目标文件无
C语言程序设计教程 35
Turbo C ++3.0集成开发环境关闭按钮窗口名称 最大化 /还原按钮光标所在行号 光标所在列号 水平滚动条编辑窗口垂直滚动条信息窗口
C语言程序设计教程 36
小 结
C语言程序是由一系列函数组成的模块结构。
C语言程序的书写格式自由、有较大的灵活性,但一般应采用一定的格式书写,养成良好的编程风格。
C语言是一种编译型的高级程序设计语言,其开发过程包括,编辑、编译、连接、运行四个步骤。具体操作应参阅操作系统支撑环境的有关资料。
C语言程序设计教程 37
作业
复习 1.2,1.3
熟悉和理解 1.3,掌握 1.3中提到的常用算法的思路和解决问题的步骤
C语言程序设计教程 38
C语言运行环境
Turbo C2.0版本编译系统启动的命令如下:
进入开机画面第二项 —— win98
在 win98下四个选项中进入 real dos项
C:\tc 回车
退出该系统时,先选择主菜单 File,再在其下拉菜单中选择 Quit子菜单项,或直接按下
【 Alt+X】 键,便可退出该系统 。
C语言程序设计教程 39
常用命令有:
,Ins”键用来设置“插入”或“修改”方式。
在“插入”方式下,从键盘上键入的字符被插入在当前光标之前;在“修改”方式下,从键盘上键入的字符将替代当前光标处的字符。
,Del”键用来删除光标所在的字符。
使用光标键可以上下左右移动光标。
使用,Ctrl+N”组合件可在当前光标所在行上插入一空行。
使用,Ctrl+Y”组合键可删除当前光标所在行。
使用退格键可删除当前光标前一个字符。
C语言程序设计教程 40
基本操作:
F10-----调用主菜单 F2------存盘 F3------打开
Alt+F9------Compile Ctrl+F9------Run
Alt+F5------User Screen
New—— 编辑新文件
Load—— 装入已有文件
Save—— 重新存储文件
Write to—— 按指定名字存储文件
Change dir—— 指定目录下的文件名
Pick—— 显最近编辑过的若干个文件名
Directory—— 显示当前目录下指定扩展名的所有文件
OS shell—— 进入 DOS系统,出现 DOS系统提示符,可直接执行 DOS命令。键入 Exit命令返回原来的编译系统状态
Quit—— 退出该编译系统,返回到 DOS操作系统状态