C语言课件1.docx
- 文档编号:30170984
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:43
- 大小:134.11KB
C语言课件1.docx
《C语言课件1.docx》由会员分享,可在线阅读,更多相关《C语言课件1.docx(43页珍藏版)》请在冰豆网上搜索。
C语言课件1
前言
C语言程序设计入门学习六步曲
说明:
在使用本方法之前要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。
在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。
“三分编程七分调试”,说明程序调试的工作量要比编程大得多。
这里以如何上机调试C程序来说明C语言的学习方法。
第一步、验证性练习
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。
在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
使用本软件可以很方便地看着教程的例题输入程序,具体方法参见帮助部分
初学者最容易犯的错误是:
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。
2、C语言初学者易犯语法错误:
使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。
例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。
特别提示:
一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
C语言的错误信息的形式:
(下面例子是的TuroboC2.0错误信息,如图1)
错误
文件名
行号
冒号
错误内容
↓
↓
↓
↓
↓
Error
E:
\WinTc\WinTc\frist.c
5
:
Functioncallmissing)infunctionmain
C语言的错误信息的形式:
(下面例子是VisualC++6.0错误信息,如图2)
文件名
行号
冒号
错误代码
冒号
错误内容
↓
↓
↓
↓
↓
↓
e:
\wintc\wintc\frist.c
(5)
:
errorC2143
:
syntaxerror:
missing')'before';
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。
事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。
记忆和理解是相辅相成的,相互促进。
例如:
将最简单的Hello World!
程序
#include "stdio.h"
int main()
{ printf("Hello World!
\n");
return 0;
}中的
printf("Hello World!
\n");
中的Hello World!
改成你的姓名,运行一下程序,看有什么变化?
再如求1+2+3...+100的和的程序
#include
main()
{ int i,sum=0;
for(i=1;i<=100;i++)
{ sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?
找出程序结果变化的原因,就加深了对C语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。
目的是对前两步的记忆、理解进一步强化。
第四步、增强程序的调试能力
在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。
这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:
每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!
!
!
!
注意:
上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!
!
!
!
。
例如,将Hello World程序中语句
printf("Hello World!
\n");
中的;改成中文的分号;
运行一下程序,看有什么结果?
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。
即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。
第五步、研究典型的C语言程序,提高程序设计能力
C语言初学者遇到最多的困惑是:
上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。
发生这种现象的原因是:
所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。
计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?
解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
在软件中有50多个典型的源程序,研究它的实现方法,提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力。
软件中有4个注释详细的课程设计源程序
C语言好学吗?
C语言好学吗?
初学者常常问这个问题。
答案很简单,对C语言感兴趣,有强烈的学习欲望,就容易学。
如果不感兴趣,再简单的知识也学不会。
试想一下,现在有几个学校教学生打游戏呢?
答案是否定的,可是很多学生都会打游戏,而且还经常交流打游戏的心得体会。
如果你对C语言感兴趣,为什么不把学习打游戏的经验用到学习C语言呢?
如果这样的话,C语言还难学吗?
最后送C语言初学者一句话来共勉:
首先要相信自己是有能力学好C语言的,然后不惜一切代价把这种能力表现出来,你就成功了。
做任何事,何尝不是这样呢?
陕西科技大学网络培训中心
第一章
程序设计的基本概念
出题范围:
1.c程序的概念
2.算法
3.结构化程序
4.程序设计的风格
知识要点:
1.1C程序的定义:
C语言的编译功能如下:
注:
所写的C语句,经过编译都被转换为二进制的代码。
C语言的源程序经过编译后,生成一个二进制的文件,后缀为.OBJ,称为目标文件。
最后还要经过“连接程序”的软件。
把.OBJ文件与C语言提供的各种库函数连接起来,最后生成为后缀为.exe的可执行性文件
1.2算法的概念:
算法的特征:
1.
有穷性
2.确定性
3.可行性
4.有零个或多个输入(注意)
5.
有一个或多个输出(注意)
1.2.2算法的表示方法--------流程图
一般流程图
流程图
N---S流程图
注意:
N---S流程图是把一个个矩形框按照执行的循序直接连接起来,中间没有流程线!
1.3结构化程序
顺序结构(第三章介绍)
分类:
选择结构(第四章介绍)
循环结构(第五章介绍)
易错题型分析
1.C语言的基本单位是()
A函数B过程C子程序D子例程
答案:
(A)
[分析考点]C语言是函数式的语言,它的基本单位是函数,在C语言中任何程序都是由一个或多个函数构成。
2.C语言源程序文件的后缀是____,经过编译后,生成文件的后缀是______,经过连接后,生成文件的后缀是______
答案:
____.C____.obj____.exe__
[分析考点]C语言源程序文件的后缀是.c,经过编译后,生成文件的后缀是.obj,经过连接后,生成文件的后缀是.exe
3.N----S流程图里不包含有()
A判断框B流程线C矩形框D文字描述
答案:
(B)
[分析考点]N---S流程图是把一个个矩形直接连接起来,中间没有流程线,判断框、矩形框、文字描述是N—S流程图从传统的流程图继承下来的,是不可缺少的,
[历年考试回顾]
[06/09]下列叙述错误的是
A.一个C语言程序只能实现一种算法
B.C程序可以由多个程序文件组成
C.C程序可以由一个或多个函数组成
D.一个C函数可以单独作为一个C程序文件存在
[06/09]下列叙述正确的是
A.每个C程序文件中都必须有一个main()函数
B.在C程序中mian()函数的位置是固定的
C.C程序中所有函数之间都可以相互调用,与函数的位置无关
D.在C程序中不能定义另一个函数
[07/04]以下叙述中错误的是
A.计算机不能直接执行用C语言编写的源程序
B.C程序经C编译程序编译后,生成后缀为。
OBJ的文件是一个二进制文件
C.后缀为。
Obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D后缀为.obj和.exe的二进制文件都可以直接运行
[07/09]C语言源程序名的后缀是
A.exeB.cC.objD.cp
第二章
出题范围:
1.程序的构成,main()函数和其他函数
2.C程序的书写格式
3.C程序的类型(基本类型,构造类型,指针类型和空类型)
4.C程序运算符的种类,运算优先级和结合性
5.C表达式的种类(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式……)
知识要点:
一:
程序说明:
通过下面的例子。
来说明C语言程序的构成和格式
#include“stdio.h”……………………………………………1
main()…………………………………………………………...2
{……………………………………………………………….3
inta,b,area;………………………………………………4
a=1.2;……………/*给矩形两条边赋值*/………….……..5
b=3.6;………………………………………………………..6
area=a*b;…................/*求矩形面积放在arer中*/………7
printf(“a=%f,b=%f,area=%f\n”,a,b,area);..../*输出结果*/…..…...8
}…………………………………………………………………..9
以上程序运行的结果如下:
a=1.200000,b=3.600000,area=4.320000
说明:
一:
A.本程序是由一个main()函数构成,main是函数名,函数后面的括号内是填写参数的,本题没有参数,所以它是空的,但是不能省略
B.printf()函数是C语言的库函数,功能是在屏幕输出结果。
二:
1.叫命令行,命令行必须已#开头,最后不能加分号(;),它不是程序的语句。
2.main()----是主函数
3.-9---是语句体
三:
a:
C程序总是有一个 main()函数。
而且程序必须从main()函数开始执行。
b:
C语言的源程序是由函数构成,每个函数完成相对独立的功能,其中至少包括一个主函数。
c:
c语言规定每个语句以分号(;)结束。
分号是语句组成不可缺少的部分,他在每条语句的最后出现。
d:
程序的注释部分应在/**/之间,且*/之间不能出现空格。
e:
构成语法上一个独立的语句是以“;”来区分的,一条语句可以写在不同行上。
二:
标识符
1.标识符命名规则如下:
(1)由字母、数字、或下划线组成。
(2)第一个字符必须是下划线或字母
(3)有大小写的区分。
如a和A代表着不同的标识符
(4)标识符的长度一般不超过8个字节。
长于8个将不被识别;
2.标识符分类:
关键字--------------------见附录一
预定义------------------如scanf、define、printf、sin…….
用户标识符-------------要做到见名知意
三:
常量与变量
1.定义:
2.定义一个符号代表一个常量,如:
#include“stdio.h”
#definePI3.14159…………………不是C程序的语句,PI代表3.14159
main()
{floatr,s;
r=5.0;
s=PI*r*r;
printf(“s=%f\n”,s);
}
程序运行结果如下:
s=78.539749
3.一个变量实质上是代表了内存中的某个存储单元
4.C语言规定,程序中要使用变量应先定义后使用
四:
整型和实型数据
1.整型常量3种形式:
十进制…………如32767、0、-45
八进制…………以0开头,如010,011,不能写成018(逢8进1)
十六进制………以数字0和字母x(X)开头。
0x12、0xaf
2.整型变量分类:
----见课本(P11表2.1)
基本整型
短整型
长整型
无符号型
说明:
1.基本整型变量用类型名关键字int进行定义格式为:
单个:
inta;
多个:
inta,b,c;
这个例子定义运行后,编译程序就为变量a,b,c开辟内存单元,并按照int的存储方式存放数据,存储单元无任何值。
2.int数据占pc机16位,也就是2个字节
3数据范围-32768------32767
3.实型常量2种形式
小数形式------由数字和小数点如:
0.122、41.25
指数形式------在C中用e或E后跟一个整数表示以10为底的幂数
注意:
1.用指数时,e前必须有数字,e后的指数必须为int
2.在e的前后及数字之间不的有空格
4.实型变量分类
单精度------用关键字float来定义
双精度-------用关键字double来定义
五算术表达式
C语言的运算符有加号(+)、减号(-)、乘号(*)、除号(/)、取余(%)
算术运算符和括号的优先级
()、+、—、*、/、%、+、—
高低
注意:
1.当运算对象是负值时,C中规定符号与被除数相同。
2.+、—、单目运算符
3.*、/、%、+、—双目运算符
4.双目运算符的两边数值类型必须一致。
不一致的话,要由低精度向高精度转化。
5.算术运算符和括号的结合性:
A)单目运算符:
从右向左运算
B)其他的:
从左向右运算
6.运算符优先级的比较:
算术运算符(先乘除后加减)>关系运算符>逻辑运算符(除!
)>条件运算符>赋值运算符>逗号运算符
强制类型转换表达式
一般形式:
(类型名)(表达式)如:
(char)(a);
注意:
表达式要用括起来。
如果写成:
(char)a+b,则表示只将a转换为字符型,然后与b相加。
六:
赋值表达式
1.一般形式为:
变量名=表达式
在C中“=”称为赋值运算符。
注意:
1.赋值运算符的优先级别高于逗号运算符
2.注意赋值运算符“=”和等号运算符“==”的区别
3.赋值运算符的左侧只能是变量,而不能是常量或表达式。
看看他门的区别:
a=b=1+1与a=1+1=b的差别。
前一个是正确的,后一个是错误的。
2.复合的赋值表达式
先看下面的例题:
已知:
变量a的初值是9、计算该表达式a+=a-=a+a的值
分析:
由于“—=“和”+=”的优先级别相同。
且都是自右向左,所以:
1.先计算“a+a“,因为a初值是9,所以该表达式的结果是18。
注意a不变
2.再计算a-=18,因为a的值为9,所以表达式的值为-9。
注意a的值为-9
3.最后在计算a+=-9因为a的值为-9,所以表达式的值为-18
因此:
表达式a+=a-=a+a最终结果是-18
七:
自加、自减运算符和逗号运算符
一:
1.自加(++)、自减(——)运算符的作用都是使运算变量的值增1或减1
2.自加自减都是单目运算,
3.自加自减运算符可以作为前缀,也可以作为后缀。
++i,--i(在使用前,先使i的值加减1,在使用此表达式的值参加运算)
i++,i--(在使用后,使i的值加减1,在使用此表达式的值参加运算)
二:
逗号运算符
一般形式:
表达式1,表达式2,表达式3,……表达式n
1.逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式n,整个逗号表达式的值就是最后一个表达式的值,
2.逗号运算符的优先级是所有运算符中级别最低的。
易错题型分析
合法的关键字是()
AintegerBsinCstringDvoid
答案(D)
分析:
本题考察了关键字,参考课本附录一
不合法的用户标识符()
APRLNTFBMainCfileDxyz.c
答案(D)
分析:
C语言中使用了”.”是不对的。
用户标识符只允许出现“数字、字母和下划线“
以下不能定义为用户标识符的是()
AscanfBVoidC_3com_Dint
答案(D)
分析:
int是C语言的关键字,关键字不能作为用户标识符,void是C语言的关键字,但是Void却不是。
因为在C语言中区分大小写。
以下正确的整型常量是()
A34.1B-80C2,000D123
答案(B)
分析:
选项A后边有小数点,C后边有逗号,D后边有空格这些都是不对的
不正确的实型常量
A7.374E-1B0.1254E2C-44.44D123e-2
答案(B)
分析:
字母E的前后都不能有空格
下列叙述不正确的是()
A在C程序中,%是只能用于整型运算符的
B在C程序中,无论是整数还是实数都能无误的表示
C若a是实型变量。
C程序中a=20是正确的,因此实型变量允许被整型数赋值的。
D在C程序中,语句之间必须用分号“;“分隔
答案(B)
分析:
选项B只对了一半,整数可以无误的表示,而实数并不都是正确无误的
若变量已正确赋值,下面的表达式正确的是
Aa=a+7;Ba=7+b+cCint(12.3/4)Da=a+7=c+d
答案(B)
分析:
A选项后面不应该有分号,C选项(int)—类型名缺少括号,D选项C中规定在赋值号的左边应当是一个变量或是一个代表存储单元的表达式,但是在a+7=c+b中,赋值号的左边出现了一个算术表达式a+7;所以只有答案B是正确的。
结果正确的是()
mian()
{inta=3;
printf(“%d,%d,%d,%d\n”,++a,--a,a++,a--);
}
A3,2,2,3B4,3,3,4C3,3,3,2D4,3,3,4
答案(A)
分析:
a=3,执行printf语句,其求值是自右向左运算,先计算a--;a的值是3,再计算a++,a的值是2,依次向后。
。
。
。
。
。
++i,--i(在使用前,先使i的值加减1,在使用此表达式的值参加运算)
i++,i--(在使用后,使i的值加减1,在使用此表达式的值参加运算)
[历年考试回顾]
[06/09]下列定义的语句错误的是()
Aint_int;Bdoubleint_;CcharFor;Dfloatus$;
[06/09]若变量x,y已经正确定义并赋值,正确的表达式是
A++x,y=x--Bx+1=yCx=x+10=x+yDdouble(x)/10
[07/04]按照C语言规定的用户标识符命名规则,不能出现在标识符中的是
A)大写字母B)连接符C)数字字符D)下划线
[07/04]若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()
A)sqrt(abs(n^x+e^x))B)sqrt(fabs(pow(n,x)+pow(x,e)))
C)sqrt(fabs(pow(n,x)+exp(x)))D)sqrt(fabs(pow(x,n)+exp(x)))
[07/04]设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是
A)k++B)k+=1C)++kD)k+1
[07/04]以下关于long、int和short类型数据占用内存大小的叙述中正确的是
A)均占4个字节B)根据数据的大小来决定所占内存的字节数
C)由用户自己定义D)由C语言编译系统决定
[06/09](19)有以下程序,其中%u表示按无符号整数输出(B)
main()
{unsignedintx=0xFFFF;/*x的初值为十六进制数*/
printf(“%u\n”,x);
}程序运行后的输出结果是
A)-1B)65535C)32767D)0xFFFF
[06/09](6)执行以下程序后的输出结果是____a=14____
main()
{inta=10;
a=(3*5,a+4);printf(“a=%d\n”,a);
}
课后练习:
第三章顺序结构
出题范围:
1.表达式语句、空语句、复合语句
2.数据的输入和输出及其调用
知识要点:
1.赋值语句
一:
语句的定义。
赋值语句是对变量进行赋值,是由赋值表达式和末尾的分号(;)构成。
例如:
c=a+b是赋值表达式,后面加上“;”,变成c=a+b;就是赋值语句。
注意:
1.i++;i--;都是赋值语句。
2.C语言中“=”和“==”是两个不同的运算符。
2.数据输出
A)printf函数的一般调用形式:
printf(格式控制,输出列表);如:
printf(“a=%d,b=%f”,a,b);
printf-----是函数名。
它由两部分组成1.格式控制,2.输出列表
格式控制的作用:
1.给输出项提供输出格式说明:
-------格式说明由“%符号和紧跟在其后的格式描述符组成。
当输出项为int类型时,用d作为格式描述字符,其形式为%d,”
2.提供需要原样输出的文字或字符例如下面的两个例子:
一:
main()二:
main()
{inta=3,b=4,c;{inta=3,b=4,c;
c=a+b;c=a+b;
printf(“%d%d%d”,a,b,c);printf(“a=%d,b=%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件