版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/《C语言程序设计》讲稿目录TOC\o"1-1"\h\z\u第一讲C语言概述 1其次讲C语言程序介绍 2第三讲算法 8第四讲数据类型(1) 20第五讲数据类型(2) 21第六讲运算符和表达式(1) 22第七讲运算符和表达式(2) 23第八讲输入输出函数及依次结构 24第九讲选择结构程序设计(1) 25第十讲选择结构程序设计(2) 26第十一讲循环结构(1) 27第十二讲循环结构(2) 28第十三讲习题课 29第十四讲一维数组的定义和运用 29第十五讲二维数组 30第十六讲字符数组和字符串 31第十七讲函数(1) 32第十八讲函数(2) 33第十九讲习题课&文件 34其次十讲结构体和共用体 35其次十一讲C语言屏幕操作函数 36其次十二讲C语言实现图形动画效果 37第一讲C语言概述学时:2学时授课形式:多媒体讲解+实例程序演示教学目标:对C程序有一个初步的相识;了解C语言的发展;驾驭C语言的特点。主要内容刚好间支配(课堂90分钟,80分钟讲课,10分钟总结):(1)C语言程序设计课程介绍:包括课程标准、课堂要求、学习方法等(20分钟);(2)实例演示+编译环境简介:4个实例(包括科学计算、数据排序查找、小型应用系统、图形动画效果),每个实例运用一种编译环境,在观看实例效果的同时简洁了解C语言编译运行环境(20分钟);(3)C语言发展简史(包括计算机语言的进化、C语言的发展等)(10分钟);(4)C语言特点介绍:包括和其他语言相比的优点、简洁介绍数据类型、关键字、流控结构等(30分钟);(5)总结本节课程的主要内容,布置课后练习题。(10分钟);重点:C语言特点中的数据类型、关键字和流控语句简介教学内容细微环节:详细内容参与幻灯片。其次讲C语言程序介绍学时:2学时授课形式:板书+多媒体+实例程序演示教学目标:了解C语言的语法及结构;驾驭C语言的编写流程;熟识C语言的编译环境VC++6.0。主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的内容(5分钟);(2)通过实例编写简洁程序(先用多媒体展示第一个实例程序,要求学生了解一般C程序的编写流程,然后在编译环境演示程序执行过程,总结C语言程序的基本结构和语法要求)(15分钟);(3)通过实例演示程序的运算功能(先用多媒体展示编写程序,一一讲解给学生,要求学生具有变量须要先定义的理念,然后在编译环境进行实例程序演示,驾驭具有输入函数的C语言程序的运行过程)(15分钟);(4)通过上述实例,利用板式总结C语言的编写和编译过程(借助VC++6.0来展示C语言的编写和执行过程)(10分钟);(5)C语言结构特点总结(C语言由函数构成、书写格式自由、输入输出由函数实现、语句结束要有分号、main函数是函数起先和结束之处等)(20分钟);(6)C语言上机编译环境介绍(主要介绍TC、VC++、Rarnu_CV1.0三个编译环境,主推Rarnu_CV1.0编译环境)(20分钟);(7)总结本节课程的主要内容并布置课后练习题(5分钟);重点:C语言的程序结构、C语言语法细微环节、C语言编译过程、C语言运行环境等;难点:C语言语法细微环节和程序结构。教学内容细微环节:一、通过提问的方式复习上节课程的主要内容。二、实例演示实例1-1简洁输出:#include<stdio.h>/*包含文件*/main()/*程序从函数main起先执行*/{/*在屏幕上输出引号内内容*/printf("Iamaprogrammer,IlikeC!");}/*函数main结束*/程序说明:main函数表示主函数,每个程序必需有且只能有一个main函数,函数体(功能语句)放在{}内。printf是C语言的输出函数,它的作用是将“”中的内容原样输出。其中“\n”是换行符。以/*和*/括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。实例1-2简洁计算:/*求两个数的和*/#include<stdio.h>/*包含文件*/main()/*主函数*/{inta,b,sum;/*定义局部变量*/scanf("%d,%d",&a,&b);/*输入两个整数值放到a、b变量中*/sum=a+b;/*将ab的和送入sum中*/printf("sum=%d",sum);/*输出ab的和sum*/}程序说明:本实例的功能是实现两个数相加;scanf函数的作用是输入两个整数;具有变量定义的C语言函数的书写依次应当是:先写预处理吩咐,然后是函数名;然后是函数体,函数体中应先写变量定义,在写功能语句。为了增加程序的可读性应适当加上注释,和printf提示。三、C语言的编写流程四、C语言结构特点总结(1)一个C程序可以由多个函数构成,但是只能有一个main函数,程序从main函数起先,然后通过函数调用完成部分功能,最终以main函数结束;(2)主函数或子函数的函数体必需用一对{}括起来,函数体中主要是程序的功能语句,这种功能语句由两部分组成:声明部分和执行部分;(3)每一条语句由分号结束,程序书写格式自由,一行可以写多句,一句可以写多行,但分行时留意不能将字符串整体分开;(4)C语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写;程序要有适当的注释语句,提高程序的可读性,留意注释语句不能嵌套;(5)C语言中的变量必需先定义后运用;(6)#include是预处理吩咐,用于将<>或””中包括的文件中的内容读到吩咐所在处;每个include的后面只能跟一个文件,假如想将多个文件包含到指定位置,可以通过多个include实现。五、优秀的程序员应具备的基本素养(1)具有良好的编程习惯(2)运用TAB缩进(3){}对齐(4)有足够的注释(5)有合适的空行六、上机环境运用介绍重点介绍上机环境VC++6.0的运用方法,包括:程序编辑、程序编译、程序改错、程序保存、程序运行等。第三讲算法学时:2学时授课形式:板书+多媒体讲解教学目标:驾驭算法的概念、驾驭典型算法的设计、娴熟驾驭算法表示方法中程序流程图和N-S图。主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):复习上节课的主要学问点(5分钟);算法和程序的关系(5分钟);(3)算法的概念及算法优劣比较举例(什么是算法,连加算法优劣比较、算法的分类)(10分钟);(4)简洁算法举例(设计5个例子,从易到难)(40分钟);(5)算法的特性(有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性)(10分钟);(6)算法的表示方法(重点介绍流程图和N-S图)(10分钟);(7)结构化程序设计方法(简洁介绍结构化程序设计方法的基本思路)(5分钟);(8)总结和布置课后练习题(课后题2.4、2.5,下一节讲解数据类型相关学问)(5分钟)重点:算法的概念、算法的特性、设计算法的意义、算法的表示方法难点:算法的表示方法教学内容细微环节:以提问的方式复习上节课的主要学问点。算法和程序的关系程序=数据结构+算法数据结构——对数据的描述;算法——对操作的描述。简洁举例进行说明。三、算法概念及算法优劣比较算法:解决问题的步骤。不是只有数值运算问题才有算法,好多非数值运算问题也是有算法的。数值运算问题的算法主要是求数值的结,比如求连加和,非数值算法主要应用在事务管理领域(图书检索、人事管理等)。在进行数值运算或解决非数值算法时有时须要考虑算法的优劣,比如连加和,可以从1始终加到100,也可以采纳首尾相加,在相乘的形式。当然所用的步骤是不同的。对于数学中的一些常用算法,比如求肯定值,求平方根,等等常常用到,人们就把它们写成程序模块的形式,用户什么时候须要就可以进行调用了,特别便利,常用的数值运算函数都包含在math.h文件中。例3-1:计算输入整数的平方根,假如输入的是负数,则先求它的肯定值,在求平方根:#include<stdio.h>#include<math.h>voidmain(){inta;doubles;printf("inputthea:");scanf("%d",&a);a=fabs(a);/*假如a是负数,求a的肯定值,再放到a中,fabs是求肯定值的函数,是将小括号中的数的肯定值求出来*/s=sqrt(a);/*sqrt为求平方根函数*/printf("%dthesqrt=%f",a,s);}四、算法举例(将算法的各种表示方法放到算法举例中,学生接受起来效果会好一些)介绍几个典型算法:每一个算法都有多种描述方式,下面主要介绍自然语言表示法、流程图表示法、N-S图表示法。流程图的基本符号及含义:起止框起止框输入输出框处理框推断框流程线或连接点(1)计算1*2*3*4*5自然语言表示法繁琐的算法将其次个数和第一个数相乘,得到的积和第三个数相乘,依此方法始终乘到5。当要进行连乘的数比较多时,这种方法明显不适用。改进的算法开拓两个空间p和i,一个放计算之后的积,一个放被乘数,上面的算法进行改造后如下:(S1表示第一步,S2表示其次步,依此类推)S1:1=>p,2=>iS2:计算p*i的积,结果仍旧放在p中,即p*i=>pS3:i的值增1,即i+1=>iS4:假如i没有超过5,则接着执行S2、S3、S5,否则,算法结束,p中的数据就是连乘积。起先起先1=>p,2=>iP*i=>pi+1=>i结束i<=5NY流程图表示法:N-S图表示法:1=>p,2=>ip*i=>pi+1=>i直到i>5输出p习题:计算1+3+5+7+9的和,用流程图和N-S图表示此算法。(2)有50个学生,输出80分以上的学生学号和成果为了表示便利,用n表示学生学号,ni表示第i个学生学号,用g表示学生成果,gi表示第i个学生成果,则算法如下:自然语言表示法:S1:1=>iS2:假如gi>80,则输出ni和gi,否则不输出;S3:i+1=>IS4:假如i<=50,返回到S2,接着执行S2、S3、S4;否则,算法结束。N-S图表示法:1=>iN-S图表示法:1=>igi>=80i+1=>i输出nigi直到i>50NY流程图表示法:起先1=>ii+1=>i结束gi>=80NY输出nigii>50NY习题:有50个学生,找出50个学生中分数为90的学生学号。用流程图和N-S表示此算法。(3)推断某一年份是否是闰年推断某一年份是闰年的条件是:(1)能被4整除,但是不能被100整除,则这一年份是闰年;(2)能被100整除,又能被400整除的,则这一年份是闰年;其他的年份都不是闰年,假设用一个空间y来存放被校验的年份,则算法描述如下:自然语言表示法:S1:输入年份=>yS2:若y能被4整除,但不能被100整除,则输出y是闰年,算法结束;否则,执行S3;S3:若y能被100整除,也能被400整除,则输出y是闰年,算法结束;否则,执行S4;S4:输出y不是闰年,算法结束。流程图表示法:流程图表示法:起先结束Yy不能被4整除输出y是闰年y不能被100整除NYNY输出y是闰年输出y不是闰年y不能被400整除输出y不是闰年N输入年份=>yN-S图表示法:N-S图表示法:输入年份=>yy/4的余数为0输出y不是闰年输出y不是闰年NYNYy/100余数不为0NYy/400余数不为0输出y是闰年输出y是闰年习题:输出某一年份段内(比如1000-3000之间,包括1000和3000)的全部闰年。(4)求一个数列的值1-1/2+1/3-1/4+1/5+……+1/99-1/100留意数列的规律,分子都是1,分母是从1起先,每次递增1,始终到100,第一项符号位正,其次位符号位负,依此规律交替正负,首先必需开拓两个空间,一个为sum放计算结果,然后是i,每次被加数的分母;其次为了表示符号位交替变更,在开拓一个空间t存放符号,假如是正号则t为1,符号t为-1。算法表示如下:自然语言表示法:S1:0.0=>sum,1.0=>i;1=>t;S2:t*1/i+sum=>sumS3:-t=>t;i+1=>iS4:假如i<=100,则返回S2,接着执行S2、S3、S4,否则,算法结束,sum中的值就是所求。N-S图表示法:流程图表示法:N-S图表示法:流程图表示法:0.0=>sum,1.0=>i,1=tt*1/i+sum=>sum0.0=>sum,1.0=>i,1=tt*1/i+sum=>sum-t=>t,i+1=>i直到i>100输出sum起先0.0=>sum,1.0=>i,1=>tt*1/i+sum=>sum-t=>t,i+1=>i结束i<=100NY习题:计算1,1/2,2/3,3/5,5/8,8/13……这个数列前20项的和。(5)推断一个大于3的数是不是素数一个数是不是素数主要看它除了1和它本身之外不能被其他任何整数整除,则它是素数,否则就不是素数,首先须要开拓一个空间n存放待推断的数,其次开拓一个除数的空间i(i从2起先),利用n除以这个i,看能否整除,详细算法如下:自然语言表示法:S1:输入待推断的数=>nS2:2=>iS4:n除以i,得余数rS5:假如r不为0,则i+1=>i,否则,输出n不是素数,算法结束S6:假如i<n,则返回S4,否则,输出n是素数,算法结束。考虑是否非要做到i=n-1,是不是可以做到i<=sqrt(n)。流程图表示法:(改进)起先流程图表示法:(改进)起先0=>w,2=>in/i的余数=>r结束r=0?YN输入待推断数=>n输出n不是素数W=0和i<=i+1=>iNY输出n是素数1=>wNw=0?流程图表示法:起先2=>in/i的余数=>r结束r=0?YN输入待推断数=>n输出n不是素数i<=i+1=>iNY输出n是素数N-S图表示法:N-S图表示法:输入待推断数=>nn/i的余数=>rr=01=>w输出n是素数0=>w,2=>ii+1=>i直到i>或w=1YNw=0YN输出n不是素数习题:输出100-200之间的全部素数。五、总结三种程序流程结构(依次、选择和循环,给出图形表示)循环结构NpAYpA循环结构NpAYpAB选择结构YNAB依次结构N-S表示方法:循环体当p成立循环体循环体当p成立循环体直到p成立循环结构选择结构pNYAAB依次结构六、算法的特性算法共有五个特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性;有穷性:一个算法的步骤必需是有限的;确定性:算法中的每个步骤必需是确定的,不能是模糊不清的,不能有歧义;输入:算法运行时有时须要外部输入的信息;输出:算法的最终目的是求解和输出;有效性:算法的每个步骤都能有效的执行,并得到确定的结果。七、结构化程序设计思想结构化程序设计强调的是程序设计风格和程序结构的规范化,提倡清晰的结构,编程的基本要求是“清晰第一、效率其次”。结构化程序设计风格须要经过以下几个步骤进行:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码(利用现有的流控语句进行编码设计)八、总结和布置课后练习题(5分钟)第四讲数据类型(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示教学目标:驾驭各种数据类型的关键字,驾驭各种数据类型在计算机中所占的存储空间,常量及变量的定义形式,针对各种数据类型printf的格式限制输出。主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的主要学问点(5分钟);(2)C语言的各种数据类型简介(基本类型和构造类型,各种数据类型的关键字及所占字节等)(10分钟);(3)针对不同格式的printf输出格式介绍及举例(printf格式介绍,各种类型格式限制符介绍,以例子说明)(20分钟);(4)常量(包括整型常量、实型常量、字符型常量、符号常量、举例)(20分钟)(5)整型变量的概念及举例(整型变量的定义及举例)(20分钟)(6)课堂练习(针对所讲学问进行相关习题练习)(10分钟)(7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针变量的定义和运用)(5分钟)重点:C语言各种数据类型的关键字、各种类型的常量表示法、整型变量的定义和操作等;难点:整型变量的表示范围。教学内容细微环节:一、C语言各种数据类型介绍数据类型数据类型基本类型构造类型指针类型空类型整型实型字符型长整型整型、短整型无符号整型单精度双精度数组结构体共用体枚举型各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例)类型名关键字所占字节(B)TCRarnu_cVC++整型int224短整型short[int]222长整形long[int]444无符号整型unsignedint224无符号长整形unsignedlong444无符号短整型unsignedshort222单精度float444双精度double888字符型char111指针类型*244二、以printf输出各种数据类型printf基本格式说明printf(格式限制,输出表列);格式限制:用双引号括起来的字符串,这个字符串包括两部分,格式说明和一般字符,格式说明以%开头。输出表列:和格式说明对应的输出表列。在格式限制符中,除了格式说明去后边对应输出表列之外其他字符原样原位置输出,输出表列为带输出的内容。比如:printf(“abcd”);/*输出abcd字符串*/intx=8,y=9;printf(“abcd%defg%d”,x,y);/*输出abcd8efg9*/详细格式说明符有:%d/*输出短整型和整数*/%o/*以八进制无符号形式输出整数*/%x或X/*以十六进制无符号形式输出整数*/%u/*以无符号十进制形式输出整数*/比如inta=-1;printf(“%d,%u,%o,%x\n”,a,a,a,a);输出内容分别是:-1,65535,177777,ffff所以原反补码的含义大家肯定要清晰,对为什么出现这样的状况加以分析。对于其他的数据类型也要实行不同的输出格式:%f/*以单精度形式输出实数*/%lf/*以双精度形式输出实数*/%c/*以字符形式输出,只输出一个字符*/分析:inta=65;charc=’B’;printf(“%d,%d,%c,%c\n”,a,c,a,c);输出结果:65,66,A,B当整数不超过字符型的表示范围时,整数可以以字符型的形式输出,输出的是它对应的ASCII码,字符型也可以以整数的形式输出,输出的是它ASCII码对应的值。单精度或双精度不能利用字符型或整型格式输出,否则会产生错误结果(语法不会出错,但结果意想不到)。三、各种数据类型常量1.整型常量(1)十进制整型常量(2)八进制整型常量(以0开头)(3)十六进制整型常量(以0x开头)(4)后缀为u和U则表示无符号整型,后缀为L或l,表示长整型。假如将一个带符号数后边加了u,则将其转化为补码按无符号数赋给相应变量。2.实型常量(1)十进制小数形式(2)科学计数法:XeY——e前必需有数字,e后必需为整数。3.字符型常量单引号括起来的为字符常量,转义字符也可以作为一个字符。4.字符串型常量双引号括起来的为字符串常量,字符串常量系统默认会在最终加一个‘\0’。比较‘a’和“a”在内存中的状态。5.符号型常量符号型常量往往是利用宏定义实现的,宏定义属于预处理范畴,和文件包含吩咐相同。#defineX12一般放在程序起先,作用是定义一个符号为常量,在程序运行过程中不允许变更。四、整型变量的概念和举例(1)标示符的命名规则:由字母数字下划线,开头不能使数字。例:以下合法的用户标识符是()Aa1B3erC_a#Dif(2)各种类型变量的定义:各种变量的定义方法为:类型名变量名列表;/*假如变量名多余1个,用,分隔*/整型变量的定义方法:inta;inta,b;inta,b,c=12;inta=12,b=12,c=12;不能写成inta=b=c=12;可以在变量定义时给变量赋初值。第五讲数据类型(2)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的主要内容(5分钟);(2)实型变量(定义方法、表示范围、运用举例)(15分钟);(3)字符型变量(定义方法、表示范围、运用举例)(15分钟);(4)指针型变量(含义、定义方法、运用举例)(15分钟);(5)各种数据类型间的混合运算(类型间的转化、强制类型转化方法、举例)(20分钟);(6)课堂习题(15分钟);(7)总结及下一讲学问提要(运算符和表达式)(5分钟)。重点:实型变量的定义方法、表示范围;字符型变量的定义方法、表示范围;指针和其他类型变量的协作运用;数据类型间混合运算时的转化;难点:指针和其他数据类型的协作运用,数据间的转化。教学内容细微环节:一、实型(浮点型)变量浮点型数据在计算机内存中的存储状态分为三部分:数符、小数部分、指数部分。C语言的编译环境不同,则给各个部分安排的位数不同,一般状况下,数符和小数部分安排24位,指数部分非配8位。数符数符小数部分指数部分24位8位+.314159+.314159124位8位表示3.14159浮点型变量定义的类型包括:float、double、longdouble举例说明浮点型数据是有误差的:#include<stdio.h>voidmain(){floata,b;a=123456.789e5;b=a+20;printf("%f\n",b);}假如将float改为double则结果不同。二、字符型变量字符型常量是以单引号括起来的单个字符。字符变量的定义运用的是关键字charchara,b;a=’a’;b=97;整数和字符型可以相互赋值。一般编译系统默认字符型为signed类型,表示-128—127之间的数字对应的字符,假如想表示128-255之间的数字则字符需定义为unsignedchar。三、指针型变量指针型变量往往是和其他变量的定义协作运用,表示不同变量在内存中的地址。指针变量定义是以*为标识符的。比如:int*a,*b;char*c,*d;这时须要留意,在定义中出现的*和程序中出现的*是不同的,定义时出现的*表示变量为指针类型,程序中出现*表示取出地址中的详细数值。*和&地址运算互逆。#include<stdio.h>voidmain(){int*p;intc;p=&c;scanf("%d",p);printf("%d,%d\n",c,*p);}四、变量赋初值在前面的变量定义时,有时在定义的同时就给变量赋了初值,有的是在定义好后,再利用赋值语句给变量赋初值,不管利用哪种方式,都要留意两点:不能在定义时进行连续赋值;不能将不匹配的数据类型相互赋值,否则会产生错误。错误的:inta=b=c=10;inta=3.56;正确的:inta,b,c;a=b=c=10;五、各类数据类型间混合运算各种数据类型可以进行混合运算,运算结果为一种数据类型,详细规则如下:doubledoublefloatlongunsignedintchar、short低高横向的是必需转化的,比如float型数据在进行运算时,其运算记过统统要转化为double类型,不管参和运算的是否有double类型;char或short类型的数据在进行运算时,结果都会转化成int型。纵向箭头表示对象类型不同时的转换方向,当参和运算的对象数据类型不同时,采纳低级向高级转化的规律。比如int型和long型进行运算时,将int转化为long类型再进行运算。比如:10+’a’+1.5-8765.4321*’b’结果为double类型,转化由系统自动完成,无需用户操作。假如在计算过程中不想依据上述转化规则进行转化,则可以利用强制类型转换。详细方式为:(强制类型名)变量或常量例如:#include<stdio.h>voidmain(){inta;floatb=3.67;a=(int)3.67;printf("%d,%f\n",a,b);}六、总结及课堂练习课堂习题:3.2,3.3作业:3.5,3.6,3.8第六讲运算符和表达式(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的主要内容(5分钟);(2)C语言运算符简介(各种运算符作用介绍、优先级介绍、结合性介绍)(15分钟);(3)算术运算符和表达式(算术运算符的计算方法、优先级等)(10分钟);(4)自加自减运算及举例(15分钟)(5)赋值运算符和赋值表达式(简洁赋值和符合赋值)(10分钟)(6)逗号运算符和逗号表达式(和自加自减协作运算)(10分钟)(7)指针运算符(10)(8)课堂习题(所讲运算符的运用和运算方法)(10分钟)(9)总结及下一节内容提要(关系运算符、逻辑运算符、位运算符、条件运算符等)(5分钟)重点:C语言算术表达式的求值、算术运算符的优先级及运算方法、逗号运算符的运算方法、指针运算符的运算方法、自减自加的运算方法;难点:自加自减运算,各种运算符的结合性。教学内容细微环节:一、C语言中各种运算符1.算术运算符算术运算符包括:+,-,*,/,%,它们都属于双目运算,结合性自左至右。前三种运算都很简洁,对于/,假如操作数为整数,则结果也为整数,%运算的操作数必需为整数,其含义是去两个整数相除的余数。2.自加自减运算符自加自减运算符包括++和--,它属于单目运算,结合性自右至左,操作数必需为整型的变量。3.赋值运算符赋值运算符包括简洁赋值运算符=和复合的赋值运算,复合的赋值运算符是其他运算符和简洁赋值运算符组合在一起构成的,一般式位运算符和算术运算符,比如+=,%=,<<=,>>=等。它属于双目运算,结合性自右至左。4.逗号运算符逗号运算符,依次求值运算,结合性自左至右。5.位运算符位运算符包括<<,>>,^,小弯弯,&,|,按位运算,双目运算符,其中按位取反为单目运算符(结合性自右至左),双目位运算结合性自左至右。6.指针运算符指针运算符*,取地址运算符&,单目运算符,结合性自右至左。7.逻辑运算符逻辑运算符包括:!,&&,||,其中!为单目运算符结合性自右至左,&&和||为双目运算符结合性自左至右。8.关系运算符关系运算符包括:>,<,>=,<=,==,!=,<>。结合性自左至右,双目运算符。9.条件运算符条件运算符;表达式?值1:值211.重量运算符重量运算符:->和.,结合性为自左至右。12.下标运算符下标运算符[],结合性自左至右。13.求字节运算符求字节运算符sizeof(操作数),结合性自右至左。14.强制类型转换运算符强制类型转换:(类型)操作数,结合性自右至左。二、各种运算符的优先级(1)初等运算符()、[]、、.(2)单目运算符!、~、++、--、-、(类型)、*、&、sizeof(3)算术运算符(先乘除后加减)(4)位运算符<<、>>(5)关系运算符<、>、<=、>=、其中==和!=级别低一级(6)位运算符&、^、|、分先后(7)逻辑运算符&&、||、分先后(8)条件运算符?:(9)赋值运算符(10)逗号运算符留意:在利用逻辑运算符时:||和&&有其特殊性,假如前表达式已经可以确定整个表达式的值,则后表达式不再做。自加++自减--运算符,只能对整形变量进行。三、算术运算符和算术表达式最终运算为算术运算的式子称为算术式。例:3/5,3%5,-3%5四、自加自减运算留意:运算对象只能是整型变量。例main(){inta=5;a++;printf(“%d”,a);}为学生描述内存存储状态。计算:(a++)+(--a)-a+(++a)表达式的值,a的初始值为4。五、赋值运算1.简洁赋值运算符=,运算方法是将=号后的值赋给=号前的变量,=号前必需为变量,不能给常量赋值。如:inta=5;2.复合的赋值运算比如:a+=5;等价于a=a+5;前提是复合赋值运算前的变量必需有初值,否则无法运算。3.赋值运算的规则赋值运算符的赋值规则:(也就是当赋值运算符前后类型不一样时如何赋值)(1)将浮点型赋给整型:舍弃小数部分。如:inti=3.56则i的值为3。(2)将整型赋给浮点型:数值不变,但要以浮点型进行存储。如:floata=23,则a为23.00000,补足有效位。(3)将double型赋给float型,截取其前面7位有效数字,但要留意数值范围不能溢出。如:floata;doubleb=123.456789e100;a=b;假如输出a则会产生溢出错误,因为b超过了浮点型表示范围。假如将b改为123.456789e2,则a的值会有7个有效位是和b完全相同的,其他位会产生误差。(4)字符型赋给整型,假如将字符型处理为无符号型,则将字符型放到整型的低8位,高八位为0;假如将字符型处理为有符号型,则字符型放到整型的低8位,高位所补的是0还是1,要看低八位的最高位,所补的为最高位的值。TC和维普C是把字符型当做有符号数来处理的。比如main(){inta;unsignedcharc='\376';a=c;printf("%d",a);}输出为254,假如去掉unsigned则输出为-2。(5)将带符号int赋给long,进行符号为扩展放到高十六位,低十六位为int数据;long型赋给int型时,只将long的低十六位放在int型中。(6)int、short、long赋给char型只是将低八位赋给char空间。(7)将unsignedint送到longint中,不存在符号扩展,高位都补0。将unsigned类型数据赋给一个占字节相同的数据则干脆将unsigned数据放到相应类型中即可,只不过超过表示范围会出现数据错误。例如:main(){unsignedinta=65535;intb;b=a;printf("%d",b);}这时b=-1。(8)将signed数据赋给长度相同的unsigned数据也是原样赋过去,只不过假如是负数,是将其补码作为一个无符号数来处理。main(){unsignedinta;intb=-1;a=b;printf("%u",a);}这时a=65535。各种赋值形式虽然看起来困难,但是都是它们都是:按存储单元中的存储形式干脆传送。要求学生必需对补码只是娴熟驾驭。六、逗号运算符和逗号表达式逗号运算符的运算规则是自左至右。整个表达式的值是逗号表达式最终一个表达式的值。例如:inta,b,c;a=b=5;c=(a+3,b+a,a=a+b,b+a)c输出的值应当为15。例如:a=3*4,a+5;要留意赋值运算符的优先级高于逗号运算符,所以先算a=3*4,在算a+5。所以整个表达式为逗号表达式,值为60。留意:printf和scanf中出现的逗号是作为分隔参数用的,并不是逗号表达式。七、指针运算指针运算符的作用是取指针地址中对应的详细数值,它和取地址符为互逆运算。例:int*p,a;a=5;p=&a;则*p的值为5。这个思想我们在前面的练习中也给大家说过。八、强制类型转换和测字节函数这两个运算我们在前面讲过,这里就不再说了。九、总结及课堂练习教材3.9,3.10作业:3.11,3.12。第七讲运算符和表达式(2)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):复习上节课的主要学问点(5分钟);关系运算符和关系表达式(15分钟);(3)逻辑运算符和逻辑表达式(20分钟);(4)位运算符(20分钟);(5)课堂练习(30分钟)。重点:关系运算符,逻辑运算符,位运算符的操作方法。难点:各种运算符的混合运算,须要考虑算符的优先级和结合性等因素。教学内容细微环节:一、关系运算符和关系表达式关系运算符表示的是前后两个表达式的关系,表达式的值为逻辑值“真”或“假”,假如关系正确则表达式的值为“真”,否则为“假”,由于C语言不供应逻辑类型值,所以假如表达式的值为“真”,则用1表示,表达式的值为“假”则用0表示。例:inta=3,b=4,c=5;则c!=a>b的值为1。二、逻辑运算符和逻辑表达式逻辑运算符表示两个操作数的逻辑关系,逻辑运算的结果也是逻辑值“真”和“假”,也是对应数字1和0;但是要留意:在表示“真”和“假”时,非零就表示“真”,0就表示“假”。ab!aa&&ba||b真真假真真真假假假真假真真假真假假真假假例:!a&&b||x>y&&(c++),运算级别!最高,然后是算术,然后是关系、然后是逻辑、然后是赋值;a=1,b=0,c=3,x=7,y=10;则表达式的值为0,c的值为3。留意:&&和||的运算规则。三、位运算符和表达式位运算符的前提示首先将数据转化为二进制在进行相应的操作。运算符含义运算符含义&按位和取反|按位或<<左移^按位异或>>右移例如:64<<1;左移1位相当于乘以2,所以一些C语言系统将2n处理为左移n位。假如a的值为八进制113755,则四、条件运算符例如:inta=5,b=3;a>b?a:b;五、总结及课堂练习1、教材:1、2、3、4、52、自设题目:a=45;求~a,a>>2,a<<2;a&0000000011111111;a|0000000011111111第八讲输入输出函数及依次结构学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)C语言的基本语句(分为五类:表达式语句、函数调用语句、限制语句、复合语句、空语句,各种语句举例,赋值语句的运用)(10分钟)(2)常用输入函数介绍(5分钟);(3)scanf函数的运用方法(包括各种格式的输入、显性分隔符和隐形分隔符的运用、举例)(20分钟);(4)getchar函数的运用方法(getchar的运用、字符输入和scanf的区分)(10分钟)(5)printf运用方法复习(10分钟)(6)putchar输入函数的运用(5分钟)(7)程序举例(10分钟)(8)课堂练习(15分钟)(9)总结及下一节内容提要(5分钟)重点:C语言各种输入输出函数的运用难点:scanf函数隐形分隔符和显性分隔符的运用教学内容细微环节:一、C语言的基本语句1、语句的概念C语言中的语句是以分号结束的,以分号结束的就可以称为语句,它用来想计算机发出指令。C程序源程序文件1C程序源程序文件1源程序文件2源程序文件n……预处理吩咐数据声明函数1……函数n函数首部函数体数据声明执行语句3、各种基本语句(1)流控语句if()…else… 条件语句for()…… 循环语句while()…… 循环语句do……while() 循环语句continue 结束本次循环进入下一次循环break 终止所在循环或switch结构switch(){case……} 多分支选择语句goto 转向语句return 从函数返回语句(2)函数调用语句printf(“%d,%d”,a,b);c=max(a,b);(3)表达式语句a=3;a=c+b;(4)空语句;(5)复合语句大括号括起来的语句组:{z=x+y;t=z/100;printf(“%d,%d”,z,t);}二、常用输入函数介绍(1)scanf函数的运用方法(包括各种格式的输入、显性分隔符和隐形分隔符的运用、举例)scanf(“格式说明”,输入表列);留意:格式说明由格式说明符和分隔符两部分组成,输入表列是由逗号分开的变量地址列表。如:scanf(“a=%d,b=%d”,&a,&b);在运行时,为了让ab得到正确的值,则应输入a=12,b=15回车;这里a=,b=均为显性分隔符,在输入时除了格式限制符对应变量类型外,其他的显性分隔符原样输入。又如:scanf(“%d%d”,&a,&b);在运行时,为了让ab得到正确的赋值,则应输入12空格/tab/回车13回车;这里空格、tab和回车都属于隐形分隔符,当两个格式限制符连在一起没有任何分隔符时,在输入变量值时应当用隐形分隔符。格式限制符表如下:格式限制符含义%d,%i带符号十进制整数%u无符号十进制整数%o八进制无符号整数%x,%X十六进制无符号整数%c字符型%s字符串型%f,%lf单精度、双精度小数%e,%E指数形式浮点型数据%g,%G选用%f或%e中宽度较小的一种进行输出,不输出无意义的0,用G时以指数形式输出的E大写(2)getchar函数的运用方法(getchar的运用、字符输入和scanf的区分)(10分钟)getchar()函数的运用仅限于输入字符型数据,它和scanf利用%c输入字符型时应留意:%c可以接收隐形分隔符,所以在运用时应留意;getchar()也可以接收全部字符型,包括隐形分隔符;例:#include<stdio.h>main(){inta,b;charc,d;scanf("%d%d%c",&a,&b,&c);d=getchar();printf("%d,%d,%c,%cabc",a,b,c,d);}假如想给a赋12,b赋13,c符字符a,d赋字符b,在输入时,假如输入12回车13回车a,则编译系统不会再让你输入,因为这是它会将回车赋给c,将a赋给d。假如想得到正确的赋值则在输入时应输入12隐形分隔符13ab即可,系统会依据数据类型自动将13和字符型分开,同时将a赋给c,b赋给d。三、输出函数回顾及拓展(1)printf运用方法复习printf我们在前面应经讲过,在此我们做一下功能拓展。假如想输出指定宽度的数据如何在格式限制符中加以限制,比如,想输出小数,小数点后只保留两位,怎么设计?解决:利用%m.nf、%m.nlf,%-m.nf,%-m.nlf,其中m表示详细的小数宽度小数点也算一位,n表示小数点后位数;假如小数的位数超过m则m失效,以正常的宽度输出浮点数,n在进行舍入时实行四舍五入;假如小数位数小于m则左补空格(右对齐),假如m前有负号则右补空格(左对齐)。m,n的设计在%d和%s中也运用,在整数中只运用m,在%s中运用m和n,m表示为字符串开拓的输出区宽度,这个宽度也要大于字符串长度,否则m失效,n表示截取的字符串字符个数。#include<stdio.h>main(){floatf=4567.8912;inta,b,c;scanf("%3d%3d%4d",&a,&b,&c);printf("%10.2e,%5.1f,%6.1f,%7.1f\n",f,f,f,f,f);printf("%2d,%-6d,%5d",a,b,c);}留意小数点是要算在宽度里的,而且%m.ne是以指数形式输出浮点数据,e算作小数点后一位。教材上的可能是另一种编译系统。(2)putchar输入函数的运用putchar(常量/变量);将小括号中的字符输出。四、程序举例1、求三角形面积:利用公式其中s=(a+b+c)/2;#include<math.h>main(){floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("\n%f\n",area);}留意数据类型的选择。2、从键盘输入小写字母,然后输出其大写字母;#include<stdio.h>main(){charc1,c2;c1=getchar();putchar(c1);printf(",%d",c1);c2=c1+32;putchar(‘\n’);putchar(c2);printf(",%d",c2);}五、总结及课堂练习教材习题p88,4.5。思索4.10;作业:4.8,第九讲选择结构程序设计(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)关系运算符、逻辑运算符运算复习、选择结构流控图形复习(10分钟);(2)简洁if结构及举例(15分钟);(3)if……else结构及举例(15分钟);(4)if……else嵌套及举例(20分钟);(5)条件运算符和if的关系及举例(5分钟);(6)课堂练习,要求学生完成指定分支程序设计(20);(7)总结、习题布置及下一节内容提要(习题5.3、5.4、5.5,下一节多分支switch结构)(5分钟);重点:三种if结构、if结构的嵌套、if和else的配对原则;难点:if语句的执行方法、if和else的配对原则。教学内容细微环节:一、关系运算符、逻辑运算符运算复习、选择结构流控图形复习关系运算符:>、<、>=、<=、<>、!=、==逻辑运算符:!,&&,||运算结果为逻辑值“真”或“假”对应详细数值1和0,而数值向逻辑值对应时,非零表示真,零表示假。分支流程图表示:pApA选择结构YNpAB选择结构YN简化简化形式分支结构盒图表示:选择结构p选择结构pNYA选择结构pNYAB简化简化形式我们在进行程序设计时,首先要依据自己的思路设计详细的流程图,然后在进行程序设计,这对于我们在进行其他高级语言的拓展学习是特别必要的,因为每种语言它的语法规则是不同的,但其编程思想都是一样的。二、简洁if结构及举例(10分钟);简洁if结构格式:if(条件表达式)语句1语句2执行过程:推断“条件表达式”的值,假如成立,则执行“语句1”,然后执行“语句2”,假如“条件表达式”不成立,则执行“语句2”。不管“条件表达式”成立不成立,“语句2”都要执行。留意:语句1和语句2都可以是多句的复合语句,假如语句1是多句要用{}括起来,因为if只能限制离它最近的一句或一个语句组。它和我们简化的流程图是相对应的。例1:输入两个整数,将其按从小到大依次输出。N-S图:输入两个整数a、b输入两个整数a、b输入两个整数a,ba>b交换a,bYN输入两个整数a,b程序对应:#include<stdio.H>voidmain(){inta,b,temp;scanf("a=%d,b=%d",&a,&b);if(a>b){temp=a;a=b;b=temp;}printf("a=%d,b=%d",a,b);}例2:输入三个整数,将其按从小到大依次输出。流程图:输入三个整数a,b,c输入三个整数a,b,ca>b交换a,bNYa>c交换a,cNYb>c交换b,c输出a,b,cYN程序对应:#include<stdio.H>main(){inta,b,c,temp;scanf("%d,%d,%d",&a,&b,&c);if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp;}if(b>c){temp=b;b=c;c=temp;}printf("a=%d,b=%d,c=%d",a,b,c);}三、if……else结构及举例(15分钟)if……else结构格式:if(条件表达式)语句1;else语句2;执行过程:假如“条件表达式”成立,则执行语句1,否则执行语句2;它和我们所画的一般流程图是对应的。例3:输出一个整数的肯定值。N-S图表示:输入两个整数a、b输入两个整数a、b输入一个整数xx>0输出xYN输出-x程序对应:#include<stdio.h>main(){intx;scanf("%d",&x);if(x>=0)printf("%d",x);elseprintf("%d",-x)}四、if……else嵌套及举例(20分钟)if……else嵌套的运用只是对于if或else所执行的语句依旧是if结构或if……else结构if……else结构嵌套基本格式为:语句1为if结构或if……语句1为if结构或if……else结构语句1语句2语句2为if结构或if……else结构语句2执行过程和我们的基本结构执行方式相同。例4、计算如下表达式的值N-S图表示:输入两个整数a、b输入两个整数a、b输入一个整数xx>0YNYNx=0输出yy=1y=-1y=0程序对应:#include<stdio.h>main(){intx,y;scanf("%d",&x);if(x>0)y=1;elseif(x==0)y=0;elsey=-1;printf("y=%d",y)}留意:if和else的配对原则;else总是和离它最近的没有被配对的if进行配对。例5、编程实现推断输入的年份是否是闰年。参考第三讲算法中的N-S图,进行程序设计;N-S图表示法:N-S图表示法:输入年份=>yy/4的余数为0输出y不是闰年输出y不是闰年NYNYy/100余数不为0NYy/400余数不为0输出y是闰年输出y是闰年程序对应:#include<stdio.H>main(){inty;printf("inputtheyear:");scanf("%d",&y);if(y%4!=0)printf("%dno",y);elseif(y%100!=0)printf("%dyes!",y);elseif(y%400!=0)printf("%dno!",y);elseprintf("%dyes!",y);}对它进行改造,这样的程序看起来很乱,我们可以通过标识位先对年份是不是闰年进行标识,比如0标识不是闰年,1标识是闰年,全部条件推断结束后,通过推断标识位来看这一年是不是闰年。输入年份=>yy输入年份=>yy/4的余数为0Flag=0NYNYy/100余数不为0NYy/400余数不为0Flag=0Flag=1Flag=1Flag=1YN输出y是不闰年输出y是闰年改造后的程序为:#include<stdio.H>main(){inty,flag;printf("inputtheyear:");scanf("%d",&y);if(y%4!=0)flag=0;elseif(y%100!=0)flag=1;elseif(y%400!=0)flag=0;elseflag=1;if(flag==1)printf(“%dyes!”,y);elseprintf(“%dno!”,y)}练习:读程序写结果#include<stdio.h>main(){inta=1,b=2,c=3;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序运行结果为:1,3,3五、条件运算符和if的关系及举例(10分钟)条件运算符的优先级在全部运算符优先级中算是比较低的,它只比赋值运算符和逗号运算符的级别高,其结合性为自右向左。计算两个数中的较大值:利用条件运算符:c=a>b?a:b;利用分支语句:if(a>b)c=a;elsec=b;六、课堂练习,要求学生完成指定分支程序设计(20)读程序写结果:习1:#include<stdio.h>main(){intx=1,y=2,z=3; if(x>y) if(y>z)printf("%d",++z); elseprintf("%d",++y); printf("%d\n",x++);}输出结果1;程序设计:编1:设计程序输出两个整数中的较大值;编2:设计程序输出三个数中的较大值;七、习题布置及下一节内容提要(习题5.3、5.4、5.5,下一节多分支switch结构)(1分钟)第十讲选择结构程序设计(2)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)前一节if……else结构拓展(利用if……else结构编写多分支程序,了解它在多分支程序设计上的不足)(10分钟);(2)switch……case结构分析(10分钟);(3)switch……case结构举例(留意break的作用和default的运用)(30分钟)(4)课堂练习(35分钟)(5)总结、习题布置及下一节内容提要(习题5.6、5.7、5.8、5.9,下一节循环结构程序设计)(5分钟)重点:switch的执行流程,switch结构细微环节,case后常量的要求,break在switch结构中的作用;难点:switch的执行流程、case后值的限制条件、break的运用。教学内容细微环节:一、if……else结构嵌套编写多分支结构例1:给定百分制成果,输出其对应的等级制成果。两种写法:输入分数scorescore>=90输入分数scorescore>=90score>=70score>=80score>=60score>=60输出AYYYYNNNN输出B输出D输出E输入分数值scorescore>=90YN输出Ascore>=80且score<90YN输出Bscore<60YN输出Escore>=70且score<80YN输出Cscore>=60且score<70YN输出D`#include<stdio.H>main(){intscore;scanf("%d",&score);if(score>=90)printf("A");if(score>=80&&score<90)printf("B");if(score>=70&&score<80)printf("C");if(score>=60&&score<70)printf("D");if(score<60)printf("E");}假如条件特殊多,而且分的比较细,再利用if结构明显看上去很乱。所以C语言供应了特地用于多分支的程序结构,就是我们接下来要讲的switch……case。二、switch……case结构1、switch……case结构switch(表达式){case常量表达式1:语句1case常量表达式2:语句2……case常量表达式n:语句ndefault:语句n+1}2、执行过程推断switch后表达式的值,然后依据其值去找寻case后的常量表达式的值,找到后从相应的语句起先执行,其后的case都失效,不再推断,但其后的case后的语句都要执行,直到遇到break或switch结构结束。3、说明(1)switch后的表达式可以为C语言的任何类型;(2)case后的内容必需为常量或常量表达式,不能带变量;(3)每个语句的后边都可以依据须要添加break,来终止其所在的switch结构;(4)当全部条件都不满意时,执行default后的语句;(5)留意case和常量表达式之间存在一个空格,常量表达式后要有一个冒号。三、switch……case结构举例例2:将百分制改成等级制。#include<stdio.h>main(){intscore,k;scanf("%d",&score);k=score/10;//每一个分数都只要其十位或百位可以削减分支数。switch(k){case10:case9:printf("A");break;case8:printf("B");break;case7:printf("C");break;case6:printf("D");break;default:printf("E");}}执行时,留意假如输入98,则只输出“A”,其他的等级不输出,因为在每个printf的后边有一个break,break能够跳出switch。假如没有break,当输入98时,输出ABCDE。缘由是:98/10,得到9,case9作为入口,输出A,其后的case不再推断,将全部的语句都执行。四、课堂练习读程序写结果,推断如下程序的执行结果:#include<stdio.h>main(){intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=3;j;j--){switch(j){case1:case2:printf(“%d”,*p++);break;case3:printf(“%d”,*(--p));}}}五、总结及习题布置(习题5.6、5.7、5.8、5.9)第十一讲循环结构(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)循环的含义及循环流控图形的复习(10分钟);(2)for循环的基本结构及执行过程(10分钟)(4)for循环程序举例(30分钟)(5)continue和break的运用的方法及含义、运用举例(15分钟)(6)课堂练习(20分钟)(7)总结、习题布置及下一节提要(习题6.1、6.2、6.3,下一节while循环和do……while循环)(5分钟)重点:循环的含义、for循环的执行过程、break和continue的运用难点:for循环的执行过程、break和continue的运用教学内容细微环节:一、循环的含义及循环流控图形的复习循环的含义是:在条件成立的状况下,对于相同的动作反复执行,直到条件不成立;循环的流程图和盒图表示如下:条件循环体条件循环体YN循环体外语句条件条件循环体循环体外语句二、for循环的基本结构及执行过程1、for语句的一般形式:for(表达式1;表达式2;表达式3)循环体;2、执行过程:(1)首先执行表达式1;(2)推断表达式2的值;假如表达式2成立执行(3);否则执行(4)(3)执行循环体,执行表达式3;跳转到(2);(4)循环结构结束,执行循环之后的其他语句。3、流程图形和盒图对应表达式1循环体表达式1循环体循环体外语句表达式2表达式3表达式2循环体YN循环体外语句表达式1表达式34、简洁理解形式for(循环变量赋初值;循环条件;循环变量修改)循环体;5、留意事项:(1)表达式1、表达式2、表达式3都可以省略,但是分号不能省略;(2)假如循环体语句多余1句要用大括号括起来;(3)留意表达式2(循环条件)的设置,不要设计成死循环;(4)在执行过程中,表达式1只有在初次进循环体时执行1次,以后就不再执行了。三、for循环程序举例1、读程序写结果:#include<stdio.H>main(){charch;for(ch=getchar();ch!='\n';ch=getchar()){if(ch>='a'&&ch<='z')ch=ch-32;printf("%c",ch);}}假如输入:abc345FGJ2、设计程序实现求1到100的全部整数和;输出sum值输出sum值设置i=1,sum=0sum+=ii++i<=100#include<stdio.H>main(){inti,sum;for(i=1,sum=0;i<=100;i++)sum+=i;printf("sum=%d",sum);}3、设计程序实现数列求前20项和:1,1/2,2/3,3/5,5/8,8/13,……设置i=1;b=1.0;sum=0.0;a=1.0设置i=1;b=1.0;sum=0.0;a=1.0i<=20sum+=a/bt=aa=bb=t+b输出sum值#include<stdio.H>main(){inti;floatsum=0.0,a=1.0,b=1.0,t;for(i=1;i<=3;i++){sum=sum+a/b;t=a;a=b;b=t+b;}printf("sum=%f",sum);}四、continue和break的运用的方法及含义、运用举例1、continue的含义是:结束本次循环进入下一次循环;2、break的含义是:跳出所在循环,执行循环体外的其他语句;break只能跳出其所在的一重循环;读程序写结果:#include<stdio.h>main(){intk,s=0; for(k=1;k<=10;k++) {if((k%2)!=0)continue; s+=k;} printf(“s=%d\n”,s);}五、for循环中表达式含义的延长for的基本格式为:for(表达式1;表达式2;表达式3)循环体;依据for循环的执行流程,可以将for循环写成如下简洁理解的形式:for(循环变量赋初值;循环条件;循环变量修改)循环体;六、课堂练习1、读程序写结果写出下面程序的执行结果:#include<stdio.h>main(){inti,j,sum;for(i=3;i>=1;i--){sum=0; for(j=1;j<=i;j++) sum+=i*j; }printf("%d\n",sum);}留意:上面的习题为循环的嵌套,也就是循环套循环,循环嵌套在执行时,实行外重大循环做一次,内重小循环做一轮的执行方法。所以内重小循环中的语句的执行次数为大循环执行次数和小循环执行次数乘积。关于详细的嵌套循环设计我们将在习题课上讲解。2、编程练习题把100-200之间的不能被3整除的数输出。第一种方法:假如能被3整除,则不输出接着执行下一次循环用continue,否则输出此数。其次种方法:假如不能被3整除,则输出。七、总结、习题布置及下一节提要(习题6.1、6.2、6.3,下一节while循环和do……while循环)(1分钟)第十二讲循环结构(2)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容刚好间支配(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)for循环的复习,for循环的变形得来while循环、while流程图的画法、while循环的执行过程(20分钟);(2)while循环程序举例(20分钟);(3)do……while结构的基本格式、执行过程和while的区分(15分钟)(4)课堂练习,读程序和写程序(30分钟)(5)习题布置(习题6.4、6.5、6.6、6.8、6.14,思索6.10、6.15)(5分钟)重点:while循环和do……while循环的基本格式和执行过程、区分;难点:循环算法的分析和设计。教学内容细微环节:一、for循环复习for循环的基本格式是:for(表达式1;表达式2;表达式3)循环体;其中表达式1,表达式2,表达式3都可以省略,但是分号不能省略。假如只省略表达式1和表达式3则在for后的小括号内只有表达式2,也就是条件推断表达式了。依据for循环的简洁理解的形式,假如省略表达式1和表达式3,则是将循环变量赋初值和循环变量变更省略。假如for采纳了这种格式,则程序在设计时往往将表达式1作为for循环结构上面的语句;而将表达式3作为循环体里的语句。假如只有表达式2,则for循就和我们要将的while循环相同了。二、while循环基本格式及举例while循环的基本格式为:while(表达式)循环体;执行过程为:先推断表达式的值,假如表达是的值成立则执行循环体,执行完循环体接着推断表达式的值,假如表达式的值成立接着执行循环体,如此往复直到表达式的值不成立,做while循环后面的语句。例:设计程序实现求1到100的全部整数和#include<stdio.h>main(){inti,sum;i=1;sum=0;while(i<=100){sum+=i;i++;}printf("sum=%d",sum);}这和我们将的for循环省略表达式1和表达式3的相同,只不过在小括号中只有一个表达式而且没有分号。三、do…while循环基本格式及举例do…while循环的格式:do循环体while(表达式);其执行过程和while循环相同,只不过是先做一次循环体,然后在推断表达式,假如表达式成立则接着执行循环体,直到表达式不成立。例:求1到100之间全部整数的和。#include<stdio.h>main(){inti,sum;i=1;sum=0;do{sum+=i;i++;}while(i<=100);printf("sum=%d",sum);}四、三种循环的区分(1)for循环的小括号中是三个表达式,表达式以分号隔开;表达式可以省略但是分号不能省略;小括号外没有分号干脆跟循环体;只有当循环体是一条空语句时,小括号外干脆接分号。(2)while循环的小括号内是一个表达式,不用写分号,while小括号内的表达式不能省略,小括号外没有分号干脆跟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家长安全培训活动简报课件
- 紧急避孕药临床用药指南与健康管理实践
- 2026年文化娱乐项目合同
- 家长会安全课件设计
- 2026年小型活动布置合同协议
- 2026年家庭月嫂服务合同
- 2026年艺术品私人拍卖成交确认合同
- 2026年跨境电商集装箱合同
- 2026年隧道施工能源供应合同
- 2026年图书版权合同
- 人力资源有限公司管理制度
- 2024年高中语文选择性必修上册古诗文情境式默写(含答案)
- 部编人教版4年级上册语文期末复习(单元复习+专项复习)教学课件
- 2024-2025学年云南省玉溪市八年级(上)期末英语试卷(含答案无听力原文及音频)
- 绿色建材生产合作协议
- 英语丨安徽省皖江名校联盟2025届高三12月联考英语试卷及答案
- 湖南省长沙市长2024年七年级上学期数学期末考试试卷【附答案】
- 凉山州 2024 年教师综合业务素质测试试卷初中物理
- 他汀不耐受的临床诊断与处理中国专家共识(2024)解读课件
- 钢管支撑强度及稳定性验算
- 《企业内部控制流程手册》
评论
0/150
提交评论