C语言程序设计教案_第1页
C语言程序设计教案_第2页
C语言程序设计教案_第3页
C语言程序设计教案_第4页
C语言程序设计教案_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一篇:C语言程序设计教案清华;第1章C语言概述学习内容C语言出现的历史背景1.2C语言的特点简单的C语言程序介绍1.4运行C程序的步骤与方法目的要求:掌握C语言格式特点熟悉C语言的编辑环境重点难点:C语言格式特点TC编辑器的运行、操作重点难点详解:【例1.3】通过调用子函数求两个数的和。main()/*主函数*/{inta,b,sum;/*定义变量*/a=3;b=4;/*变量赋值*/sum=add(a,b);/*调用add函数*/printf("sum=a+b=%d.\n",sum);}intadd(intx,inty){intz;z=x+y;return(z);/*将z的值返回*/}C程序的组成规则:1、C程序是由函数构成的。C语言是函数的语言,一个程序是由一个或多个函数构成的。2、一个函数有两部分组成:(1)函数的首部(函数的第一行)。(2)函数体即函数首部下面的大括弧内的部分。(3)一个C程序总是从main主函数开始执行。无论位置如何。(4)每个语句和数据定义的最后必须有一个分号“;”。(5)C语言本身没有输入/输出语句,是库函数scanf和printf等函数来完成的。(6)用/**/作注释,以用于增加可读性。TC编辑器的运行、操作1.编辑源文件——2.源文件的编译——3.目标程序的连接——4.执行程序——查看结果操作步骤Alt+F9Ctr+F9Alt+F5第二章程序的灵魂—————算法学习内容算法的概念简单算法举例2.3算法的特征2.4算法的表示方法结构化程序设计方法目的要求:掌握算法的各种表示方法熟悉N-S流程图重点难点:N-S流程图重点难点详解:用N-S流程图描述算法传统的流程图用流程线和流程元素表示各个处理的执行顺序,但对流程线的使用没有严格的规定,因此,使用者可以不受限制地使流程转来转去,这样的流程图使人难以理解算法的逻辑。为了解决这个问题,规定了算法的三种基本结构:顺序结构、分支结构和循环结构。用这些基本结构按一定的规律组成一个算法,这样的算法称为结构化算法。按照结构化算法编写的程序称为结构化程序。为了设计结构化算法,1973年,美国学者I.Nassi和B.Shneiderman提出提出一种新的流程图,称为N-S流程图。条件p当条件p成立操作A操作A成立不成立操作A操作B操作A操作B直到条件p成立当型循环直到型循环顺序结构分支结构循环结构N-S流程图基本符号0=>s1=>i例如例2.3.1节的计算1+2+3+„+1000s+i=>s的算法用N-S流程图i+l=>i直到i>1000输出s计算1+2+3+„+1000算法的N-S图第三章数据类型、运算符与表达式学习内容3.1C语言的数据结构3.2常量与变量3.3整数类型3.4浮点型数据3.5字符型数据3.6变量赋初值3.7各类数值型数据间的混合运算3.8算术运算符和算术表达式3.9赋值运算符和赋值表达式3.10逗号运算符及表达式目的要求:掌握整数类型与浮点型数据类型掌握标识符的命名规则数据的储存方式字符型数据标识符、常量、变量及初始化掌握运算符及其表达式掌握赋值运算符和赋值表达式重点难点:整数类型与浮点型数据类型标识符的命名规则复合赋值运算符运算符及其表达式重点难点详解:整型数据整型数据的在内存中的存放形式2.整型变量的分类1)基本整型一般为2字节2)短整型一般为2字节3)长整型一般为4字节3.整型数据的溢出如何判断整型常量的类型。若在-32768—32767之间,可认为是普通整型int型或短整型代八。代型)。若超出了-32768—32767,而在-2147483648—+2147483647之间,则认为是长整型(1。门8型)。若认为是int类型的,系统不做检查,但数据会丢失。4.整型常量的类型(1)十进制整型常量:289、-183等。每个数位都可以是(0〜9)十个代码。(2)八进制整型常量:以o开头,如(128)10=0200。 (3)十六进制整型常量:以ox开头,如(128)16=ox80。如何判断整型常量的类型。若在-32768—32767之间,可认为是普通整型int型或短整型代卜0代型)。②若超出了-32768—32767,而在-2147483648—+2147483647之间,则认为是长整型。0门8型)。若认为是int类型的,系统不做检查,但数据会丢失。③若常量是无符号型(unsigned型),那么一个非负值的整数可以赋值给unsigned型变量,但要注意其范围。50000可赋给unsignedint型,70000却不可以。(无符号整型变量最大值65535.)④如一整型常量后有L或l则表示为longint型的。常用于函数的调用中。5.整型变量的定义变量定义的一般格式[存储类型]数据类型变量名[,变量名2„„];例如,intd,l,a;定义变量时指定变量的类型,在编译时好为其分配相应的存储单元。另外,还可在编译时检查该变量所做运算是否合法。一般称在定义变量的同时进行赋初值的操作为变量初始化。变量初始化的一般格式[存储类型]数据类型变量名[=初值][,变量名2[=初值2,„„]];例如,intd=2,l=6,a;浮点型数据类型浮点型常量的表示方法(1)十进制小数形式:由整数部分、小数点和小数部分组成。(2)指数形式:由实数部分、E(e)和整数部分组成。2.浮点型数据的在内存中的存放形式3.浮点型变量的分类①单精度型:关键字float,一般占4字节(32位),提供7位有效数字。②双精度型:关键字double,一般占8个字节、提供15〜16位有效数字。③长双精度型:关键字longdouble,3.实型数据的舍入误差请注意有效为数。4.浮点型常量的类型一个实型常量赋值给一个实型变量时,只根据实型变量表示的有效数字的位数,在实型常量中按从左向右的方向截取数据。Float型的变量只能保存七位有效数字,double型的变量只能保存15〜16位有效数字。5.浮点型变量的定义和前面整型变量的定义的方法一样。标识符的命名规则标识符是一个字符序列,用来标识C语言程序中一个对象的名字。命名时应注意以下几点:1)标识符是一串英文字母或下划线开头的由字母、数字和下划线组成的字符串。例如:aaBCx2zy_1_An0都是合法的标识符;而3d#asd110A*CnEn都是非法标识符。2)C语言本身并没有要求标识符的长度,不同的C编译系统允许包含的字符个数有所不同,通常标识符的长度可识别的标识符长度常限制为8个字符。3)标识符大小字母含义不同。比如abcAbcABC代表三个不同标识符,这一点一定要牢记。复合赋值运算符合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:变量双目运算符=表达式1 1 1复合赋值运算符它等价于:变量=变量双目运算符(表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例如:x+=3/*等价于x=x+3*/y*=x+6/*等价于y=y*(x+6),而不是y=y*x+6*/C语言规定的10种复合赋值运算符如下:+=,-=,*=,/=,%=;/*复合算术运算符(5个)*/&=,人=,|=,>=;/*复合位运算符(5个)*/其中后五种是位运算的运算符,在位运算那章介绍。运算符及其表达式算术运算符和算术表达式1.基本的算术表达式+加法运算符或正值运算符-减法运算符或负值运算符*乘法运算符/除法运算符TC2.0采取“向零取整”法%模运算符或称求余运算符该运算符的两边只能是整型数据。2.算术表达式和运算符的优先级与结合性左结合性、右结合性3.强制类型转换运算符除自动转换外,C语言也允许强制转换。数据类型强制转换的一般格式为:(要转换成的数据类型)(被转换的表达式)(类型)(表达式)例如:(int)(x+y»/+y的结果转换成int型*/(float)5/W价于f1^^(5)/2/*将5转换成实型,再除以2(=2.5)*/(float)(5/2将/整除2的结果(2)转换成实型(2.0)*/注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,⑺^^卜后只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。4.自增、自减运算符(++、--)(1)作用自增运算使单个变量的值增1,自减运算使单个变量的值减1。(2)用法与运算规则自增、自减运算符都有两种用法。a)前置运算—-运算符放在变量之前:十十变量、--变量先使变量的值增(或减)1,然后再以变化后的值参与其它运算,即先增减,后运算。b)后置运算—-运算符放在变量之后:变量十+、变量--变量先参与其它运算,然后再使变量的值增(或减)1,即先运算,后增减。例如:k=1;k=1;演示1-9j=++k;j=k+左边:k先变成2,j=2右边:k为1,j=1然后k为2。使用中的问题说明:(1)这两种、运算符只能用于变量,而不能用于常量或表达式。(2)++、--运算符的优先相同,但比算术运算符优先级要高。其结合性是“从右至左”的。i=3;j(=-i++);i=3;(j=++i);printf“(%d,%d”,i,j);pr“in%tdf,(%d”,i,j);结果是:4,-3结果是4,4结果是:4,-3结果是4,4第四章顺序结构程序设计学习内容:C语句概述4.2赋值语句数据输入输出字符数据的输入输出4.5格式输入和输出顺序结构程序设计举例目的要求:掌握顺序结构程序设计方法掌握数据的输入输出重点难点:数据的输入输出重点难点详解:数据的输入输出printf函数(格式输出函数)printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。(1)printf函数调用的一般形式为:printf(“格式字符串”,输出表列);例如:printf("radius=%f\nlength=%7.2f,area=%7.2f\n",r,l,a);格式字符串也称格式控制字符串或格式转换字符串,其中可以包含下列三种字符:①格式指示符:由“%”和格式字符组成,例如“%f”、“%7.2f”等,这总是由“%”字符开始,到格式字符终止。它的作用是将输出的数据项转换为指定的格式输出。输出表列中的每个数据项对应一个格式指示符。②转义字符:这些字符通常用来控制光标的位置。③普通字符:除格式指示符和转义字符之外的其他字符,这些字符输出时原样输出,例如上面例子中的“radius=”等。)类型字符:%d十进制整数inta=567;printf("%d”,a);567%o八进制无符号整数inta=65;printf("%o”,a);101%x或X十六进制无符号整数inta=65;printf("%x”,a);ff%u不带符号十进制整数inta=567;printf("%u”,a);567%c单一字符chara=65;printf(“%c”,a);A%f小数形式浮点小数floata=456.789;printf(“%f”,a);456.789000%s字符串printf(“%s”,“ABC”);ABC%e或E指数形式浮点小数floata=456.789;printf(“%e”,a);4.567890e+02%g或Ge和f中较短一种floata=456.789;printf(“%g”,a);456.789说明:格式字符要用小写对应格式字符与输出项个数应相同,按先后顺序对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出2.scanf函数(格式输入函数)(1).scanf函数的一般形式格式:scanf(“格式控制字符串”,地址表列);功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表列:变量的地址,常用取地址运算符&格式字符di,o,x,u,c,s,f,e使用scanf()时应注意的一些问题:①scanf函数中没有精度控制,不能企图用格式控制符来规定输入数据的精度scanf(“%5.2f”,&a)X②scanf中要求给出变量地址,如给出变量名则会出错。如scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。③在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。④在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。在输入数据时遇到以下情况之一认为一个数据输入结束字符数据的输入输出.putchar函数(字符输出函数)putchar函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为:putchar(字符变量)例如:putchar('A');(输出大写字母A)putchar(x);(输出字符变量x的值)putchar('\n');(换行).getchar函数(键盘输入函数)getchar函数的功能是从键盘上输入一个字符。其一般形式为:getchar();通常把输入的字符赋予一个字符变量,构成赋值语句,如:charc;c=getchar();第五章选择结构程序设计学习内容:5.1关系运算符和关系表达式5.2逻辑运算符和逻辑表达式5.3if语句5.4switch语句目的要求:掌握关系运算符逻辑、条件运算符及其它们的表达式掌握if语句掌握switch语句重点难点:If语句Switch语句重点难点详解:If语句用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C语言的if语句有三种基本形式。.第一种形式为基本形式if(表达式)语句;其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。.第二种形式为if-else形式if(表达式)语句1;else语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。3.第三种形式为if-else-if形式前二种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。if-else-if语句的执行过程如图3—3所示。4.在使用if语句中还应注意以下问题(1)在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:if(a=5)语句;if(b)语句;都是允许的。只要表达式的值为非0,即为“真”。如在if(a=5)„;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。⑵在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。⑶在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。Switch语句C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;„case常量表达式n:语句n;default:语句n+1;}其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。在使用switch语句时还应注意以下几点:1.在case后的各常量表达式的值不能相同,否则会出现错误。2.在case后,允许有多个语句,可以不用{}括起来。3.各case和default子句的先后顺序可以变动,而不会影响程序执行结果。4.default子句可以省略不用。第六章循环结构程序设计学习内容:概述goto语句以及用goto语句构成循环6.3while语句do„while语句for语句6.6循环的嵌套6.7几中循环的比较6.8break语句和continue语句目的要求:掌握while语句、do-while语句、for语句掌握循环的嵌套重点难点:for语句Break和continue语句重点难点详解:for语句for语句是C语言中所提供的功能最强、使用最为灵活的一种循环语句。特别适用于循环次数固定而循环条件不确定的情况。for语句的一般形式如下:for(表达式1;表达式2;表达式3){……}(1)表达式1通常是用来给循环变量赋初值,一般是赋值表达式。也允许在for语句之外给循环变量赋初值,此时可省略该表达式;(2)表达式2通常是循环条件,一般为关系表达式或逻辑表达式,也可以是其它表达式;(3)表达式3通常可用来修改循环变量的值,一般是赋值表达式。三个表达式都是可选项,都可以省略。但特别提请注意的是,表达式1和表达式2后的分号“;”不能省略。for语句的执行过程如下:(1)首先计算表达式1的值;(2)再计算表达式2的值,若值为真(非0)则执行循环体语句一次,否则跳出循环;(3)循环体语句执行完后,再计算表达式3的值,转(2)步去执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。for语句的流程图for语句最主要的特点是:特别适合已知循环次数的循环语句,下面介绍一下for语句中循环次数的计算方法。根据for循环的循环变量的变化情况。循环次数的计算可以用公式进行计算:n=(int)((终值-初值+步长)/步长)其中,初值指循环变量的初始值,终值指循环变量满足条件的最终值,步长指循环变量每循环一次所变化的量。例如:循环语句for(n=1;nn=(int)((100-1+1)/1)=100又如:循环语句for(n=100;nn=(int)((1-100-2)/(-2))=50在使用for语句中要注意以下几点:(1)for语句中的各表达式都可省略,但分号间隔符不能少;如:for(;表达式;表达式)省去了表达式1;for(表达式;;表达式)省去了表达式2;for(表达式;表达式;)省去了表达式3;for(;;)省去了全部表达式。(2)在循环变量已赋初值时,可省去表达式1。如省去表达式2或表达式3则将造成无限循环,这时应在循环体内设法结束循环。(3)循环体可以是空语句。例如:从键盘输入一行字符然后逐个输出每一个字符。⑷for语句也可与while,do-while语句相互嵌套,构成多重循环。Break和continue语句break语句有两种用法。第一种用法是在switch语句中,跳出switch结构,转去执行后面的程序,其用法在第三章中已经介绍;第二种用法是,绕过一般的循环条件检验,立即强制地中止一个循环。下面介绍第二种用法:break语句的一般形式如下:break;当一个循环体内的break语句被执行时,循环立即中断,并转向循环体外的下一条语句.Continue语句有点像break语句。continue语句只能用在循环体内,不能用在其他位置。其一般形式如下:continue;其功能是:结束本次循环,即不再执行该循环体中continue语句之后的语句,转入下一次循环条件的判断与执行,所以有时又称短路语句。应当注意的是:break语句在循环体中的作用是结束整个循环,而continue语句只结束本次循环,继续下一次循环,即并不退出循环。计算机等级考试试题讲解熟练掌握程序设计的三种方法。怎么样求解完全数、完备数求解同构数、求解素数的方法求解Fibonacci数列、自然数的阶乘第七章数组学习内容:7.1一维数组的定义和引用7.2二维数组的定义和引用7.3字符数组和字符串目的要求:掌握一维数组定义初始化掌握选择排序、气泡排序、插入排序的解题方法掌握二维数组定义初始化掌握字符数组和字符串的区别如何利用字符数组来存放字符串重点难点:二维数组使用字符数组的应用字符串的存放重点难点详解:二维数组使用二维字符数组的每一行可以看作一维字符数组,即二维字符数组的每一行可以存放一个字符串,于是二维字符数组又称为字符串数组.#includevoidmain(){inti,j;chardiamond[5][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};for(i=0;i一、字符数组的定义:chara[19],a[10][10];二.初始化:1、将逐个字符赋给数组中个元素。staticchara[4]={„h>0>W:T}2.可直接将一C字符串赋予某一字符数组。staticcharstr[8]=”program”;三.字符数组的引用。可以引用字符数组中每一个元素,得到一个字符。%c可以对整体处理。%s四、字符串和字符串结束标志字符串的结束标志是‘\0’,这是系统自动加上的。在初始化时,注意:staticcharc[4]=3b>0:,》;与staticcharc[4]="boy”;有区别。字符串的存放1、puts()函数:输出字符串(以‘\0’结尾)。例、staticcharc[6]="China";printf、puts均以'\0结尾.printf("%s\n",c);printf需要格式控制符%sputs(c);puts不需要格式控制符,且自动换行2、gets()函数:输入字符串到数组。例、staticcharstr[12];gets(str);注意:gets()、puts()一次只能输入输出一个字符串。而scanf()、printf()可以输入输出几个字符串。例:#include“stdio.h”main(){charstr[80];gets(str);puts(str);}注意:scanf():输入字符串使用“%$”,输入的字符串中不能包含„\0号符(空格),否则输入结束,输入的字符数组名不要加入“&”,一个scanf()语句一次可以输入多个字符串。Printf():输出字符串使用“%s",输出的字符串中不能包含„\0号符,否则输出结束,一个prinft()语句一次可以输出多个字符串。gets():使用gets(字符数组名)形式,输入字符串中可以包含„\0,字符,但一个gets()一次只可以输入一个字符串。puts():使用puts(字符数组名)形式,输出字符串可以包含„\0,字符,但一个gets()一次只可以输出一个字符串。3、strcat():连接字符串。strcat(字符串1,字符串2);把“字符串2”连接到“字符串1”的后面。4、strcpy():字符串拷贝。strcpy(字符串1,字符串2);把“字符串2”的值拷贝到“字符串1”中不能用赋值语句将一个字符串常量直接赋给一个字符数组,应使用strcpy()函数。5、strcmp():字符串比较。比较“字符串1”、“字符串2”,例、strcmp(str1,str2);strcmp("China","Korea");strcmp(str1,"Beijing");比较规则:逐个字符比较ASCII码,直到遇到不同字符或„\0,;比较结果是该函数的返回值。6、strlwr():将字符串中的大写字母转换为小写字母(lwr:lowercase小写)。7、strupr():将字符串中的小写字母转换为大写字母(upr:uppercase大写)。注意:以上函数均是库函数,使用时必须用#include语句包含头文件。#include“string.h"第八章函数学习内容:概述函数的定义函数参数和函数的值8.4函数的调用8.5函数的嵌套8.6函数的递归局部变量和全局变量8.9变量的存储类型8.10外部函数和内部函数目的要求:怎么定义函数函数怎么样调用掌握函数的嵌套掌握函数的递归调用熟悉c中四种存储类别熟悉外部函数和内部函数重点难点:函数的定义函数的调用函数的嵌套四种存储类别重点难点详解:函数的定义:1.函数定义的形式根据前面函数的分类,我们知道函数中各种各样的函数形式是有区别的,函数是存在有、无返回值,有、无参数之分的。我们这里研究最复杂的形式,然后通过简化得到其它简单形式。根据使用方式一般有二种定义形式。(1)传统的定义形式[类型标识符]函数名([形参列表])形参说明{声明部分语句/*功能实现部分*/[return表达式;]}(2)现代的定义形式[类型标识符]函数名([数据类型形式参数,数据类型形式参数,……]){声明部分语句/*功能实现部分*/[return表达式;]}函数的传统定义形式和现代定义形式主要的区别是在形式参数的定义形式上,当没有形式参数的时候是一致的。例如一个求2个数最大值的函数定义如下:/*传统定义形式*/intmax(x,y)intx,y;{if(x>y)returnx;elsereturny;}/*现代的定义形式*/intmax(intx,inty){if(x>y)returnx;elsereturny;}现在各种书中一般都采用现代的定义形式,以后例子中我们都是采用现代的定义形式,针对现代定义形式,进行说明:(1)定义形式中最上面的一行是函数的头。函数的头一般描述了这个函数的返回值类型、函数名和形式参数。由一对花括号“{}”括起来的部分称为函数体,函数体是书写语句的地方,是函数的功能实现部分,在这里语句的书写方式和以前所讲过的main函数的书写方式是一样的。(2)函数名是唯一标识一个函数的名字,它的命名规则与变量的命名规则相同。在一个程序中,除main函数外,其它的自定义函数的名字都是由用户指定的,命名时除了不要与系统的关键字、库函数的名字相同外,用户要同变量命名一样做到“见名知义”。(3)当函数名前的类型标识符指定为“void”时,这样的函数是一个无返回值的函数,对应的函数体中是不需要return语句的。当函数名前的类型标识符为一种类型的关键字或未指定(默认为int)时,函数体中的return语句是需要的,这就说明这个函数是一个有返回值的函数,当函数执行完毕时将带回一个类型为所指定(未指定时默认为int)的值给主调函数。当定义了返回值类型,而在函数体中不用return语句,这样函数会带回一个不确定的值,这样的值是没有用的,所以当不需要一个函数的返回值时,最好定义成无返回值的类型用void指定)。(4)函数名后面的一对圆括号中为函数的形式参数定义,当括号为空的时候,表示这个函数是一个无参数的函数,调用时不需要提供参数。当括号内为非空时,则代表调用这个函数时需要提供参数,参数的定义形式同定义一个变量是一样的。当有多个参数时,各参数之间用逗号分割。函数的调用.函数的调用方式当函数定义好后,就可以在主函数中调用了,这是最简单的调用形式了。。语言中,函数调用的一般形式为:函数名([实际参数列表])在函数调用中,对于无参函数调用时是没有实际参数列表。实际参数列表中的参数可以是常数,变量或其它构造类型数据及表达式,各实际参数之间用逗号分隔。(1)函数表达式:函数作为表达式中的一项出现在表达式中,这种形式是使用函数的返回值参与了表达式的运算,这种方式要求函数是有返回值的。当是无参数函数调用时实际参数列表是空的,但后面的一对圆括号是不能缺少的,当有参数时要在圆括号中提供实际参数。例如:z=max(x,y)是一个赋值表达式,把调用max函数的返回值赋给变量z。(2)函数语句:函数调用的一般形式加上分号即构成函数语句,这种调用形式可以是无返回值的函数调用形式,或有返回值的并不使用这个函数返回值也可以这样调用。例如:printf("%d",a);、print_star();都是以函数语句的方式调用函数的。(3)函数实参:一个函数调用作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为另外一个函数的实际参数进行使用,因此要求该函数必须是有返回值的。函数的嵌套C语言中不允许嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。函数的嵌套调用为自顶向下、逐步求精及模块化的结构化程序设计提供了最基本的支持。其关系可表示如图。main(){ ① a(); ⑤}a(){……②b();……④}函数嵌套调用的执行过程b(){……③}图表示了两层嵌套的情形。main函数中调用a函数,在a函数中又调用b函数,嵌套调用程序的执行是一个逐层深入,然后再逐层退出的过程,具体过程如下:(1)程序开始执行main函数,顺序执行main函数中的语句,即第①步。(2)当执行到调用a函数时,main函数停止执行,转而去执行a函数。(3)顺序执行a函数中的语句,即第②步。(4)在a函数中遇到调用b函数的语句,a函数停止执行,转而去执行b函数。(5)顺序执行b函数中的语句,即第③步,如果还有函数调用,则继续进入执行。(6)当b函数执行完毕,返回到主调函数a函数的断点继续执行剩下的语句,即第④步。(7)当a函数执行完毕,返回到主调函数main函数的断点继续执行剩下的语句,直到main函数结束,则程序结束。即第⑤步。四种存储类别C语言中对变量的存储类型说明有以下四种:auto自动变量register寄存器变量static静态变量extern外部变量自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式,在定义变量的时候要加上变量的存储类型定义。一般形式如下(即在数据类型前面加上存储类型定义):[存储类型说明符]数据类型说明符变量列表;例如:autointa,b;staticfloatc[4]={1,8,4,7};registerintw;externdoublex,y;1自动变量(auto)自动变量的说明符为auto。这种存储类型是C程序中最广泛应用的一种类型。C语言规定,在函数内凡未加存储类型说明的变量都视为自动变量,即,自动变量可以省去auto关键字。自动变量有以下特点:(1)自动变量只能定义在函数内部,形参、返回值的数据类型前面不能加auto关键字,否则TURBOC2.0提示错误。(2)自动变量采用动态存储方式,当程序执行进入它的作用域,就分配内存,可以访问,当程序出了它的作用范围,变量内存就被回收,变量不可使用。(3)自动变量和我们以前使用的局部变量是等价的,使用方法也一样,其实以前我们使用的局部变量就是自动变量。如:autointb,c=3;等价于intb,c=3;(相当于省略了auto关键字)2.寄存器变量(register)我们知道当前所用到的变量都是在内存中开辟空间的,当一个变量频繁的读写就要反复不断地访问内存,从而浪费了大量的时间。众所周知CPU中寄存器的存取速度是非常快的,为了提高效率,C语言允许将局部变量存放在CPU中的寄存器中,这种变量叫“寄存器变量”用关键字register声明。使用寄存器变量要注意的问题:(1)只有局部自动变量和形式参数可以作为寄存器变量;(2)一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;(3)局部静态变量(下面讲的)不能定义为寄存器变量。3.外部变量(extern)外部变量(即全局变量)是在函数的外部定义的,外部变量的存储空间分配方法是静态存储分配方式,即程序开始运行时,就分配存储空间,当程序结束时才回收存储空间。它的作用域为从变量定义处开始,到本程序文件的末尾,如果在定义点之前的函数或其它源文件中的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表明该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,到文件结束,合法地使用该外部变量,即用extern可以扩展外部变量的作用域。4.静态变量(static)静态变量的说明符是static,用static关键字定义的变量才是静态变量。静态变量分配存储空间采用的是静态存储方式。即,当程序运行时就在用户的静态存储区分配了空间,当程序运行结束的时候才回收内存。我们知道变量按作用域分是有全局变量和局部变量之分的。同样,静态的局部变量和静态的全局变量是不同的。(1)用static声明的静态局部变量函数中的局部变量在调用函数后要回收空间,变量的值也随之消失。有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,当下次再调用这个函数的时候继续使用保留的值,这时就应该指定局部变量为“静态局部变量”,即用关键字static进行声明。1)静态局部变量属于静态存储类别,程序开始运行时(而不是函数发生调用时,这一点一定要注意)在静态存储区内分配存储单元。在程序整个运行期间都不释放,每次调用函数时静态变量的值都是上次调用后的值。而自动变量(即动态局部变量)属于动态存储类别,在动态存储区内分配空间,函数调用结束后就释放。2)静态局部变量的作用域和动态局部变量的作用域是一致的,虽然静态局部变量在整个程序运行过程中都存在,但在其它函数中并不能使用该变量。3)静态局部变量在程序开始执行前赋初值,即只赋一次初值;而自动变量赋初值是在函数调用时进行的,每调用一次函数就对自动变量重新赋一次初值。4)如果在定义局部变量时不赋初值,则对静态局部变量来说,运行时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。5)局部静态变量不能定义为寄存器变量。(2)用static声明静态外部变量外部变量虽然采用的是静态存储方式,但不能说外部变量是静态变量,当外部变量使用static关键字定义时,这就是静态外部变量。我们知道外部变量的作用域可以使用extern关键字进行拓展,而静态外部变量是不能拓展,即使用了extern关键字也不能拓展它的作用域。外部变量和静态外部变量都采用的是静态存储方式,唯一不同的就是作用域。第九章预处理命令学习内容:9.1宏定义9.2文件包含9.3条件编译目的要求:掌握常用的预处理命令与文件包含重点难点:宏定义的应用重点难点详解:宏定义的应用:宏定义功能是定义符号常量和常参数的宏,宏定义编译预处理语句的格式如下:#define字符串1字符串2它把字符串1定义为字符串2,字符串1称为字符串2的宏定义,例如,下面是符号常量的宏定义:#defineON#defineOFF0它把符号常量ON定义为1,OFF定义为0。符号常量经过宏定义后,就可以在程序中作为常量使用。在宏定义语句中,可以使用已经定义过的符号常量定义新的符号常理。例如:#defineWID40#defineLEN(WID+20)其中第二个宏定义中使用了第一个宏定义的符号常量WID。在执行编译预处理时,程序中出现的所有符号常量WID都将被40置换。1、不带参数的宏定义:用一个指定的标识符(即名字)来代表一个字符串。一般形式:#define标识符字符串例:#definepi3.14159说明:(1)宏名一般习惯用大写字母表示。(2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。(3)宏定义是用宏名代替一个字符串,也就是作简单的置换,不作正确性检查。(4)宏定义不是C语句,不必在行末加分号.#definePI3.14159;area=PI*r*r;展开:area=3.14159;*r*r;出现语法错误(5)#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。(6)可以用#undef命令终止宏定义的作用域。格式:#undef宏名7)在进行宏定义时,可以引用已定义的宏名,可以层层置换。#defineR3.0#definePI3.14159#defineL2*PI*R#defineSPI*R*Rmain(){printf(“L=%f\nS=%f\n”,L,S);}(8)对程序中用双括号括起来的字符串内的字符,即使与宏名相同,也不进行置换。(9)宏定义是专门用于预处理命令,只作字符替换。2、带参数的宏定义:一般形式:#define宏名(参数表)字符串#defineMULT2(X)X*X其中,MULT2(X)称为带参数的宏,X是它的形式参数。该宏定义把MULT2(X)定义为X*X。在此定义后,MULT2(X)就可以用在程序中代替定义它的运算表达式X*X。它的形式参数的使用特性类似于函数的形式参数。在程序中需要计算某个数的平方值时,可以使用这个已定义的宏,例如:a=10;c=MULT2(a);在进行编译预处理时,带参数的宏用它的定义置换,其中的形式参数用实际使用的实际参数置换。因此,上面的赋值表达式置换后的形式是:c=a*a;其中定义式中的形式参数X被实际参数a置换,该运算表达式的结果是100。当程序中需要计算某两个变量和的平方时,如果使用上面定义的带参数的宏的话,如下所示:w=6;v=4;c=MULT2(w+v);进行编译预处理后,上面的赋值表达式置换后的形式是:c=w+v*w+v;它的运算顺序与预定的顺序完全不同,计算结果是34。如果上面的宏定义改为下列形式:#defineMULT2(X) (X)*(X)上面的赋值表达式置换后就成为:c=(w+v)*(w+v);它的运算结果就正确了。这里又一次看到在定义式中使用必要圆括号的重要性。第十章指针学习内容:地址和指针的概念变量的指针10.3数组与指针10.4字符串与指针目的要求:掌握指针的基本定义以及应用掌握数组与指针、字符串与指针应用重点难点:指针的基本概念指针变量的运算性质重点难点详解:指针的基本概念:指针:一个变量的地址。例:inta=1,b=2;floatfl=1.1,f2=5.9;doubled=13.24;charcl='A',c2='B';变量都有具体的内存地址。内存地址:内存中存储单元的编号注意:内存单元的地址和内存单元的内容的区别变量的地址:系统分配给变量的内存单元的起始地址指针变量的运算性质指针变量:专门用来存放另一个变量的地址。指针变量的值:指针变量中存放的地址。指针变量的说明与初始化“指针变量”专门用来存放地址的变量。定义形式:类型标识符标识符eg.floatpoint;intp;p=&i;point=&f;定义指针时需注意:.*表示是指针类型,指针变量名是p,point。.指针变量也有类型,根据它所指向的数据来确定的。Eg.point指向实型,p指向整型。1)与指针变量相关的运算符“变量的指针”指变量的地址。指针变量和它所指向的变量之间的联系。用“*”符号*point便是point所指向的变量。Eg.point*point2000i=3*ponit=32)指针变量的运算“指针变量”专门用来存放地址的变量。它有两类运算符:*&&I指向I的地址*p指向p所指向的内容。见183页的例子。说明:指针变量在定义时无所指,只是定义了这样一种类型。Point-1=&apoint-2=&b注意定义时,*point-1与引用*point-1的含义不同。第十一章结构体与共同体学习内容:11.2定义结构体类型变量的方法11.3结构体变量的应用11.4结构体变量的初始化11.8共同体目的要求:掌握结构体的定义和使用掌握共同体的定义和使用重点难点:结构体的应用重点难点详解:结构体的应用:结构体是由不同数据类型的若干数据集合而成。在程序中使用结构体时,一般不允许把结构体作为一个整体参加操作处理,而应通过对结构体的各个成员项的引用来实现各种运算和操作。.引用结构体变量中的一个成员由于结构体变量是一个整体,要访问其中一个成员,必须先找到这个结构体变量,然后再从中找出其中的一个成员。引用的一般形式:结构体变量名.成员名其中圆点符号称为成员运算符。例如上面定义的结构中要想访问studl项,应写成:studl.age。访问studl.age的步骤如图8-4所示:即第一步先访问结构体变量studl,找到该变量的起始地址后,第二步从studl所分配的内存区间中找到age成员项对应的数据。说明:(1)如果在同一函数中又另外定义了一个age简单变量,它将由系统另外分配存储空间,与studl.age分属不同的变量。studl.age表示结构体变量中的age成员项,而age表示简单变量age。(2)若定义studl,stud2均为同一结构体类型structexaminees的两个变量,则当引用两个变量中的age成员项时,应分别用studl.age和stud2.age,它们表示内存中不同的存储单元并且各自有不同的值。如果一个结构体中又嵌套一个结构体,则要访问一个成员时,应采取逐级访问的方法。例如:图8-3中所示的嵌套结构体变量,若要访问考生l的出生年份时,则用:stud1.birthday.year。而不能写成:year或birthday.year或stud1.year。允许对结构体变量的成员进行各种相应的运算,但运算的规则应遵循定义结构体时各成员项类型的规则。例如:stud1.num的类型是长整型,因此,它适合于长整型简单变量所允许的所有运算。如算术运算、关系运算、逻辑运算和赋值运算等。2.结构体类型变量的整体引用可以将一个结构体变量作为一个整体赋给另一个同类型的结构体变量。例如:stud2=stud1;执行stud2=stud1这个赋值语句时,完成将stud1变量中各成员项逐个依次赋给stud2中相应的各成员。当然要求stud1和stud2必须具有完全相同的数据类型。但必须注意,不允许将一组常量直接赋给一个结构体变量。如下面赋值语句是非法的:stud2={20102,“LiuHao”,„F:20,„2P:90}3.结构体变量的输入和输出结构体变量的输入输出,同样要求必须指明结构体变量所对应的各成员项。例如:scanf("%ld,%s,%c,%d",&stud2.num,,stud2.sex,&stud2.age);表示输入stud2变量的各成员项的值;printf("%ld,%s,%c,%d\n",stud1.num,,studl.sex,studl.age);表示输出studl变量的各成员项的值。应当注意:C语言不允许把一个结构体变量作为一个整体进行输入输出操作。因此下面的输入输出语句均是错误的。scanf("%ld",&studl);printf("%ld\n",studl);或者scanf("%ld,%s,%c,%d",&studl);printf("%ld,%s,%c,%d\n",studl);第十三章文件学习内容:13.1文件的概念13.3文件的打开和关闭目的要求:掌握c语言对文件的操作是如何通过c语言的库函数来实现问题重点难点:文件的操作重点难点详解:文件的操作:所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称叫做文件名。它是外存中保存信息的最小单位。前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。从不同的角度可对文件作不同的分类。1.从用户的角度看,文件可分为普通文件和设备文件两种。普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。2.从数据的组织来看,文件可分文本文件和二进制文件两种。文本文件也称为ASCII文件,文件中的每个元素都是字符,文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。3文件打开与关闭函数和其他高级语言一样,对文件读写之前应该“打开”该文件,在使用结束之后应“关闭”该文件。1)文件打开函数—一fopen函数fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名及路径,使用文件方式);其中,“文件指针名”必须是被说明为FILE类型的指针变量,”文件名及路径”是被打开文件的文件名,是字符串常量或字符串数组,如文件不在当前目录中需指定文件路径。“使用文件方式”是指文件的类型和操作要求。2)文件关闭函数一一fclose函数fclose函数用来关闭一个文件,其调用的一般形式为:fclose(文件指针);例如:fclose(fp);,为关闭fp指针所指的文件。正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。文件的打开和关闭是对文件的读和写是最常用的文件操作。我们经常在使用文件前打开文件,然后进行文件的读写操作,最后还应该养成在程序终止之前关闭所有文件的习惯,如果不关闭文件将会丢失数据。因为,在向文件写数据时,是先将数据输出到缓冲区,待缓冲区充满后才正式输出给文件。如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用fclose函数关闭文件,可以避免这个问题,它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量。第二篇:《C语言程序设计》教案《C语言程序设计》教案使用教材:谭浩强,《C程序设计》,清华大学出版社,2005年7月第3版任课教师:王琪授课班级:信息科学与技术学院06(1)授课时间:06年秋学期课时安排:第一学期每周5课时,其中上机每周2课时,讲授至第9章。第二学期每周4课时,其中上机每周2课时,讲授至第13章。盐城师范学院信息科学与技术学院第三篇:C语言程序设计教案c语言程序设计教案c语言程序设计教案C语言程序设计教案C语言概述【教学目的】1)了解C的发展教学目的】2)熟悉C的特点教学重点】【教学重点】C语言的特点难点)(难点)教学方法】【教学方法】例举法,推导法,归纳法课时计划】【课时计划】2课时【授课时间】2005-11-1授课时间】教学过程】【教学过程】导言程序的目的是处理数据,所以设计程序首先的知道这门语言可以处理什么样的数据新课内容一,C语言的历史及其特征二,简单C语言的程序实例#include"stdio.h"main(){inta,b,sum;printf("entertwonumbers:");scanf("%d%d",&a,&b);sum=a+b+6;printf("%d",sum);}三,编辑,编译,连接,运行一个C语言程序四,C语言的特点课堂练习】【课堂练习】1.C语言规定,必须以()作为主函数名..A.stdioB.functionC.includeD.main2.C程序的基本构成单位是().A.子程序B.函数C.过程D.函数和过程函数和过程【小结】总结:C语言特点课后作业】【课后作业】7页2【板书设计板书设计】板书设计一,C语言的历史及其特征二,简单C语言的程序实例#include"stdio.h"main()1C语言程序设计教案{inta,b,sum;printf("entertwonumbers:");scanf("%d%d",&a,&b);sum=a+b+6;printf("%d",sum);}三,编辑,编译,连接,运行一个C语言程序四,C语言的特点教学后记】【教学后记】学生听课认真积极回答老师提出的问题.课堂教学效果很好,能够按时完成课堂练习题.对软件开发这个专业很有信心.2C语言程序设计教案数据类型【教学目的】1)常量.变量概念简要介绍教学目的】2)详细介绍,三种类型的常量.变量的使用规则,占内存大小及范围教学重点】【教学重点】变量的使用教学难点】【教学难点】变量占内存空间大小授课时间】【授课时间】2005-11-2课时计划】【课时计划】2课时【教学方法】举例法教学方法】方法教学过程】【教学过程】导言程序=数据结构+算法+程设方法+语言工具新课内容一,数据类型分类1.基本类型2.构选类型3.指针类型4.空类型二,常量,变量1,常量,符号常量⑴定义:其值不改变⑵分类a.整型:2,0,-1b.实型:2.2,-3.4c.字符:‘a','c'2,变量(1)定义:值可以改变⑵组成因素inta=20;变量名:a变量值:20⑶标识符a.定义:标识符,变量名,函数名,数组名等;b.规则:已字母下划线打头c.长度:ANSIC不限TURBOC限32个字符⑷使用:先定义后使用三,数据1,整型数据3C语言程序设计教案.整型常量表示方法a.十进制123,-123b.八进制o35,o27c.十六进制oxA3,ox12.整型变量a.形式:2进制a.分类:int2bshortint2blongint4bb.定义inta,bunsignedintc,d;longe,f,整型,常量类型2,实型数据.表示方法123,123.0,0.0.实型变量float4bdouble8blongdouble16bdouble类型.类型floata;doubleb;b=1234.789a=123456.7893,字符数据.字符常量.一般字符例子:"b,,,,,c,,,,,1,,,T.特殊字符常量说明:以\开头的:.字符变量.定义charc1,c2;c1='A';c2='b’.举例输出:a,A4C语言程序设计教案97,65.字符串变量1.定义:例,123,,A,,2.以字符'\0'结束标志.变量赋值1.定义变量同时赋值例:inta=978;float=b=98.67;char=c='c';2.定义变量一部分赋值例:inta,b,c=91;3.几个变量同时赋值例:inta=b=c=d=97;课堂练习】【课堂练习】1,main(){floata,b;a=123456.789e+6;b=a+30printfC佻f'b)}2,main(){charc1,c2;c1=97;c2=65;printf("%c,%c\n,,c1,c2);printf("%d,%c/n,,c1,c2);【课后作业】26页3,9,10课后作业】作业,,【小结】注意特殊字符常量,符号常量,变量在内存的存储形式【板书设计】板书设计】一,数据类型分类二,常量,变量1,常量,符号常量2,变量三,数据1,整型数据2,实型数据3,字符数据5C语言程序设计教案.字符串变量.变量赋值【教学后记】教学后记】后记本次课内容充实,知识点多,所讲内容,学生都能听懂,但运用不够熟练,需要多做练习,以巩固加深.6C语言程序设计教案运算符与表达式【教学目的】1.了解理解运算符教学目的】2.运用算术运算符及使用授课重点】【授课重点】表达式的使用授课难点】【授课难点】I++与++I的区别教学方法】【教学方法】举例法,分析法授课时间】【授课时间】2005-11-3课时计划】【课时计划】2课时【教学过程】教学过程】导言运算量+运算量1+2新课内容一各数值数据的混合运算1.总则:自动转换同类型2.规则:.(1)float->doublechar,shor->int⑵可直/间转换int->ussigned->long->double二算术运算符,表达式1.运算符⑴算术⑵位&!~八⑶条件?:⑷指针&*2.算术运算符,表达式(1)基本算术运算符+—*/(2)运算符优先级a.*/->+b.同级,运算符结合c.强制类型转换形式:(类型名)(表达式)例子:main(){floatx;inty;x=8.56;7C语言程序设计教案y=(int)x;printf(,x=%f,y=%d,,x,y);d.自增,自减运算I++=>1)I,2)I=I+1;++I=>1)I=I+1,2)I三,数据输入和数据输出a)数据输出:命令格式:printf(控制字符串,参数1,参数2,……)例如:main(){floatx=1234.565;inty=234;charc='a';printf("%f,%d,%c,,x,y,c);}数据输入:命令个是:scanf(控制字符串,参数1,参数2, )例如:main(){floatxinty;charc;scanf("%f,%d,%c,,x,y,c);}课堂练习】【课堂练习】分析程序的输出结果:main(){inti=2;i+=i-=i+i;printf(,%d\n,,i);}【小结】数据类型必须掌握整型,浮点型,字符型,还要掌握各种运算符之间的区别与联系.课后总结】【课后总结】提纲一,各种数据数据类型自动转换规则二,算术运算符及表达式1,自增i++与++i区别,1,运算符优先级结合性b)8C语言程序设计教案2,强制类型转换运算符课后作业】【课后作业】26页3教学后记】【教学后记】学生听课认真,没有人开小差.能跟上老师的思路,积极思考问题.所讲内容都能听懂,但个别容易出错的地方还有待加强.9C语言程序设计教案顺序结构(数据的输入和输出)顺序结构(数据的输入和输出)【教学目的】使学生明白现实世界程序的顺序处理教学目的】教学重点】【教学重点】理解顺序结构教学难点】【教学难点】变量占内存空间大小教学方法】【教学方法】讲授课教学日期】【教学日期】2005-11-7课时计划】【课时计划】2课时【教学过程】教学过程】导言:举例引出程序思想新课内容:一,基本结构1.顺序结构A->B2.选择结构A->B或A->C之中选择3.循环结构WHILE()~~DO~~WHILE()二,数据输入输出语句1.输入输出:用函数实现2.使用库函数“HINCLUDE”3.常用函数(I/0)(1)字符数据的I/0A.putchar(c)字符输出putchar('\')putchar('\r')B.getchra()字符输入(2)格式输入/输出A.printf(格式控制,输出列表)(1)%d十进制例:intI=123;printfC%d'I)123printf(,%2d,%4d,,I,I)(2)%0八进制例:intI=-2;printf(,%d,%0,,I,I);(3)%x十六进制ffff⑷%u输出无符号整型123,123I=-21=17777610C语言程序设计教案unsignedinga=65535⑸%c输出一个字符printf("%c",c)printf("%d",c);(6)%s输出字符串printf("%s","hello");printf("%s","youaregoods")(7)%f输出实数floatI,jprintf("%f",11111.1111+33333.3333)(8)%e指数输出intII=123.456;Printf("%e",I)l.234560e+002Bscanf输入函数(1)形式:scanf(格式控制,地址列表)(2)例子:intIscanfC佻d'&I);请你输入整性数据44444.4444三,C语句1.控制语句(1)if()~~else条件语句(2)for()—循环语句(3)while()~~循环语句⑷do~while()循环语句(5)cotinue循环语句(6)break终止语句(7)switch分支语句(8)goto转向语句(9)return返回语句2.函数调用printf()scanf()3.表达式语句4.空语句;5.复合语句{}课堂练习】【课堂练习】1.输入三角形边求三角形的面积2.从键盘输入一小写字符转化成大写字符11C语言程序设计教案【小3.求:ax+bx+c=0的根结】一,各种数据数据类型自动转换规则二,算术运算符及表达式1,自增i++与++i区别,3,运算符优先级结合性4,强制类型转换运算符课后作业】【课后作业】34页10,11,12,,【教学后记】教学后记】上课纪律很好,所有学生都能认真听课.所讲知识都能听懂,练习能按时完成且正确率高.对于自加,自减的综合运用,还有些学生容易出错.下次课再强调一下.12C语言程序设计教案语句)分支结构(ifswitch语句)【教学目的】1)使学生能熟练运用简单的语句进行顺序结构程序设计教学目的】2)运用单分支条件语句进行判定结构程序设计3)运用双分支条件语句进行判定结构程序设计4)运用多分支条件语句进行判定结构程序设计教学重点】【教学重点】条件语句的应用教学难点】【教学难点】条件语句的熟练使用教学方法】【教学方法】讲授课【教学日期】2005-11-8教学日期】时计划】【课时计划】4课时教学过程】【教学过程】导言:我们利用简单语句可以进行程序设计,但只是简单程序设计.在设计程序时经常会遇到根据某些情况进行选择操作,这样就得用判断语句.新课内容:一,语句的分类1.表达式语句2.空语句3.复合语句4.函数调用语句5.控制语句二,if语句1.If语句的一般形式命令格式:if(条件)语句1[else语句2]例如:#include"stdio.h"main(){inta,b,s1,s2;printf('请输入两个整数a,b:");scanf("%d,%d",&a,&b);s1=a+b;s2=a*b;if(s1>s2)printf("a与b的和大于a与b的积");elseprintf("a与b的积大于等于a与b的和");}2.If语句中的复合语句13C语言程序设计教案如果两个分支中需要执行的语句不止一条必须用“{}"括起来.例如:#include"stdio.h"main(){floata,b,u,v,s,r;printf(请输入两个整数a,b:");scanf("%d,%d",&a,&b);if(s1>s2){r=a*a-b*b;s=a/b;}else{r=b*b-a*a;s=a/b+4;}u=(r+s)*(r+s);v=u*(r+s);printf("u=%f,v=%f",u,v);}3.较复杂的条件表达式4.If语句的嵌套了解if语句的嵌套规则例如:输入a,b两个数,比较并输出结果.Main(){inta,b;printf("pleaseinputtwointeger";)scanf("%d,%d",&a,&b);if(a)b)printf("a)b";)elseif(a=0;I--)printf("%d",a[I]);}例2:从键盘输入字符,记下"a"到"z”这些小写字母出现的次数,当输入!号时结束输入.Main(){intI,a[26];charch;for(I=0;I='a'&&ch第四篇:C语言程序设计《C语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《£语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。第五篇:C语言程序设计1.ProblemA:Helloworld!DescriptionXiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。Input无Output请输出:HelloDa_min,HelloEr_min,HelloXiao_ming!SampleInputSampleOutputHelloDa_min,HelloEr_min,HelloXiao_ming!HINT请注意换行符AppendCode#includeintmain(){printf("HelloDa_min,\n");printf("HelloEr_min,\n");printf("HelloXiao_ming!\n");}2.ProblemB:求圆的面积和周长Description从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。Input输入一个浮点型数据,有效数字不会超过十进制的6位。Output输出为两行。第一行为圆的面积,第二行为圆的周长,格式见sample。SampleInput3SampleOutputArea:28.260000Perimeter:18.840000HINT了解浮点类型的输入、输出和算术运算符AppendCode法一#includeintmain(){doubler,p,s;scanf("%lf",&r);p=2*3.14*r;s=3.14*r*r;printf("Area:%lf\n",s);printf("Perimeter:%lf\n",p);}法二#include#definepi3.14intmain(){doubler;scanf("%d",&r);printf("Area:%lf\n",pi*r*r);printf("Perimeter:%lf\n",2*pi*r);}ProblemC:平均值Description求3个数的平均值。Input输入只有一行,为3个较小的整数。Output输出为这3个整数的平均值,保留3位小数。SampleInput123SampleOutput2.000HINT注意除法运算对整型数据和浮点型数据是不一样的。AppendCode#includeintmain(){inta,b,c;scanf("%d%d%d",&a,&b,&c);printf("%.3lf",(a+b+c)/3.0);}ProblemD:求字符的值Description从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。Input输入为3个字符。Output输出为3行。每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。SampleInput0ASampleOutput048060030032040020065101041HINT了解字符值的存储和整型的关系。AppendCode#includeintmain(){chara,b,c;scanf("%c%c%c",&a,&b,&c);printf("%.3d%.3o%.3x\n",a,a,a);printf("%.3d%.3o%.3x\n",b,b,b);printf("%.3d%.3o%.3x\n",c,c,c);}5.ProblemA:最简单的程序Description输出一行“Helloworld!”。Input无OutputHelloworld!SampleInputSampleOutputHelloworld!HINTAppendCode#includeintmain(){printf("Helloworld!");}ProblemB:算术基本运算Description计算两整数x和y(0Input输入只有一行,格式见sample。Output输出为多行,按顺序每行输出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论