• 4.10 MB
  • 2022-04-29 14:28:48 发布

最新视觉障碍解剖及定位诊断课件PPT.ppt

  • 96页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'视觉障碍解剖及定位诊断 (一)眼球运动神经核下性支配解剖生理1.司眼球运动的神经核动眼神经核滑车神经核外展神经核1 动眼神经核滑车神经核展神经核 正中核:Perlia氏核位于动眼神经核中部之内侧部;由小型细胞构成司眼球的集合机能6 (2)滑车神经核位于中脑中央灰质的腹侧部平下丘的水平;位于动眼神经核的下方支配上斜肌,使眼球向外下方运动特点:自神经核发出纤维后再交叉到对侧,而终止于上斜肌7 (3)外展神经核位于桥脑第四脑室底部面丘的里面支配外直肌,使眼球向外侧转动外展神经自核发出后斜向腹外侧进行,于锥体束的外侧出桥脑8 9 2.眼球运动诸神经的行径及分布动眼神经副核(内脏运动纤维)动眼神经核(躯体运动纤维)动眼神经脚间窝海绵窦外侧壁眶上裂(内脏运动纤维)睫状神经节睫状肌,瞳孔括约肌上、下、内直肌,下斜肌,上睑提肌 上支→上直肌、上睑提肌下支→下直肌、内直肌、下斜肌动眼神经 注意动眼神经中之副交感神经纤维,从脑干至海绵窦段,乃位于该神经之上部,故天幕疝时,首先损及动眼神经之副交感神经纤维,出现瞳孔改变提上睑肌的神经纤维,位于动眼神经之表层,故在脑底炎症性病变时,上睑下垂是常常发生和最早发生之症状12 滑车神经滑车神经核(一般躯体运动纤维)下丘下方绕大脑脚前行海绵窦外侧壁眶上裂上斜肌 (3)外展神经展神经核躯体运动纤维展神经延髓脑桥沟中部出脑经海绵窦、眶上裂外直肌 trochlearn.动眼神经滑车神经上斜肌动眼N副核脚间窝(中脑)动眼N核眶上裂上支上直肌上睑提肌内、下直肌,下斜肌下支瞳孔括约肌睫状肌展神经外直肌海绵窦睫状N节前髓帆(下丘下方)滑车N核Abducentn.展N核桥延沟(内)ⅢⅣⅥOculomotorn. (二)眼球运动诸神经核及核下性障碍的定位诊断16 (1)动眼神经核性病变特点:多为双侧性不完全性的眼肌麻痹多合并有集合及瞳孔障碍1.动眼神经病变的定位诊断17 (2)动眼神经核以下的神经纤维病变A.一侧动眼神经完全损伤眼外肌麻痹上睑下垂,瞳孔斜向外下方;不能向上、内、下转动;眼内肌麻痹瞳孔散大瞳孔直接与间接对光反射消失;18 提示:不完全性损害,仅有眼内肌或眼外肌的部分症状完全性眼肌瘫痪多为外周性损害单一的眼肌瘫痪多为核性损害,常伴有脑干的交叉性麻痹体征19 B.髓内纤维多为不完全性损伤合并附近组织的损伤,各种交叉综合征20 红核水平损伤(Benedikt综合征):同侧动眼损伤和对侧偏身震颤,如果损伤累及内侧丘系,会出现对侧感觉障碍如果损伤锥体束,出现同侧动眼神经和对侧偏瘫(Weber综合征) C.脚间窝病变影响双侧动眼神经22 D.海绵窦动眼神经通过外侧壁海绵窦血栓静脉炎海绵窦-第3,4,6对脑神经-第5对脑神经的眼支 E.眶内病变分为上下两支眼肌不完全瘫痪25 (1)滑车神经核性病变对侧上斜肌瘫痪核性病变少见,多累及动眼神经核滑车神经--动眼神经交叉瘫病变同侧动眼神经瘫病变对侧上斜肌瘫26 (2)滑车神经核以下的神经纤维病变A.一侧滑车神经损伤上斜肌麻痹病人向前注视时,患眼轴位高于健侧眼当向外下方注视时,眼球旋转,复视明显27 B.前髓帆病变双侧滑车神经交叉处双侧滑车神经瘫痪双侧上斜肌瘫(眼球向上、并略向内偏斜)28 (1)外展神经核性病变多合并面神经损害表现为:外直肌瘫+周围性面瘫29 (2)外展神经核以下的神经纤维病变在颅底行程长,受累机会多表现为:外直肌瘫痪病人直视前方时,患眼内收,不能向外方转复视30 1.瞳孔括约肌的神经支配中脑缩瞳核发出的神经纤维,这种纤维包括在动眼神经中,直到眶内进入睫状神经节在其中交换神经元发出节后纤维,形成睫状短神经,支配瞳孔括约肌功能:使瞳孔缩小 2.瞳孔扩大肌的神经支配交感神经支配一级:丘脑和脑干网状结构二级:C8、T1脊髓侧索三级:颈上交感神经节脑桥病变出现双侧针尖样瞳孔,系脑桥部网状结构受损所致,脑桥出血时常见 3.对光反射光照一侧,双侧收缩视网膜视神经视交叉两侧视束上丘臂顶盖前区两侧动眼神经副核动眼神经睫状神经节节后纤维瞳孔括约肌33 距状沟质光顶盖前区动眼神经副交感核睫状N节视觉传导路对光反射外侧膝状体枕叶何国栋瞳孔括约肌感光细胞双极细胞节细胞视网膜ⅠⅡⅢⅢ视束视交叉视神经双侧内囊后肢视辐射34 35 总结:视神经:左眼全盲视交叉外侧:双眼鼻侧视交叉:双眼颞侧视束:右侧同向性偏盲视辐射:右侧同向性偏盲视辐射下部(颞叶):双眼右侧同向性上象盲视辐射上部(顶叶):双眼右侧同向性下象盲枕叶皮质:右侧同向性偏盲,黄斑回避36 C语言程序设计TheCProgrammingLanguage华中科技大学计算机学院 曹计昌8/2/202137华中科技大学计算机学院 C语言程序设计第4章流程控制8/2/202138华中科技大学计算机学院 主要内容4.1C语句分类4.2表达式语句4.3复合语句4.4if语句4.5switch语句4.6while语句4.7for语句4.8do-while语句4.9goto语句和标号语句4.10break语句、continue语句和return语句4.11嵌套循环程序设计**4.12推理机程序设计8/2/202139华中科技大学计算机学院 C语句4.1C语句分类说明语句可执行语句变量说明、函数说明、常量定义、类型定义、……表达式语句、复合语句、选择语句(if和switch)、循环语句(while,do-while和for)、转移语句(break,continue,goto和return)、标号语句8/2/202140华中科技大学计算机学院 在任何C表达式的末尾加一个分号都可以构成一个语句,即表达式语句。表达式语句的一般形式:表达式;其中,“;”是C语句不可缺少的组成部分,它表示一个语句的结束。在C语言中,赋值、输入和输出都由表达式语句实现。例:x=y+1x=y+1;x+=yx+=y;i=j=ki=j=k;printf(”hello”)printf(”hello”);scanf(”%d”,&x)scanf(”%d”,&x);4.2表达式语句8/2/202141华中科技大学计算机学院 再如:a–b;也是一个表达式语句,但是由于在表达式求值的过程中并没有改变任何变量的值,这样的表达式语句并没有实际意义。仅由一个分号构成的语句称为空语句,即:;它不执行任何操作。在程序设计中,如果某处在语法上需要一条语句,而在实际功能上不需要执行任何操作时,可以使用空语句。4.2表达式语句(续)8/2/202142华中科技大学计算机学院 1.复合语句的一般形式用花括号“{}”括起来的一组语句,语法上等价于单个语句,语法格式为:{说明部分语句部分}说明部分可包含0至多个说明语句;语句部分可包含0至多个执行语句。复合语句又称块。函数体是一个块。4.3复合语句8/2/202143华中科技大学计算机学院 例4.3:不含说明语句的复合语句{t=a;a=b;b=t;}例4.4:包含说明了语句的复合语句。{intt;t=a;a=b;b=t;}复合语句举例8/2/202144华中科技大学计算机学院 2.嵌套的复合语句复合语句中包含复合语句,从而形成嵌套的复合语句。例如:{inta=0,b=1;{inta=1;printf(”a=%dn”,a);printf(”b=%dn”,b+=1);}printf(“a=%dn”,a);printf(“b=%dn”,b);}4.3复合语句(续)8/2/202145华中科技大学计算机学院 3.复合语句的用途复合语句在程序设计中主要有以下两种用途:(1)用于语法上只允许出现单个语句而处理上需要执行多个语句的地方,例如作为if语句的子句及循环语句的循环体。(2)用于改变嵌套if-else语句的配对规则。此外,当需要说明临时使用的局部变量时,也可使用复合语句。4.3复合语句(续)8/2/202146华中科技大学计算机学院 1.if语句的一般形式if语句有两种形式:(1)if格式:if(表达式)语句1;(2)if-else格式:if(表达式)语句1;else语句2;4.4if语句8/2/202147华中科技大学计算机学院 2.嵌套的if语句1)嵌套if语句的形式当if子句或else子句中又包含if语句时,则形成嵌套的if语句。例如,可以用下面的一个嵌套的if语句求a,b,c三个数中最大值:if(a>b)if(a>c)max=a;elsemax=c;elseif(b>c)max=b;elsemax=c;4.4if语句(续)8/2/202148华中科技大学计算机学院 2)嵌套if语句中else的配对规则对嵌套if语句中else与if的配对必须制定一个规则,否则会造成理解上的二义性。例如:if(n>0)if(a>b)z=a;elsez=b;编译程序约定:else与其前面最靠近的还未配对的if配对,即内层优先配对原则。4.4if语句(续)8/2/202149华中科技大学计算机学院 例4.6:解方程ax+b=0,a和b从终端输入。#includevoidmain(void){floata,b,x;printf(”inputa,b:n”);scanf(”%f%f”,&a,&b);if(!a)printf(”errorininputdatan”);else{x=-b/a;printf(”x=%.4fn”,x);}}3.程序设计举例8/2/202150华中科技大学计算机学院 1.switch语句的形式switch语句的一般形式为:switch(表达式){case常量表达式1:语句序列1;case常量表达式2:语句序列2;…case常量表达式n:语句序列n;default:语句序列n+1;}4.5switch语句8/2/202151华中科技大学计算机学院 2.switch语句的使用要点使用switch语句时,第一要注意列出的case应能包括选择表达式所有的取值情况,如果不能全部包括,则应使用default子句处理余下的情况。第二应特别注意break在switch中的作用,如果希望执行完某一case下的语句之后便跳出switch语句,则必须使用break或return转移语句。break跳出switch语句之后继续执行switch语句后面的一个语句(如果有),return语句则立即结束函数并返回到调用处(如果是主函数,则结束程序)。4.5switch语句(续)8/2/202152华中科技大学计算机学院 例如:下面是一个不含转移语句的switch语句,注意观察该语句执行时的输出。i=1;switch(i){case0:printf("%dt",i);case1:printf("%dt",i++);case2:printf("%dt",i++);case3:printf("%d",i++);default:printf("n");}printf("%dn",i);4.5switch语句(续)输出:12348/2/202153华中科技大学计算机学院 例4.8:学生考试成绩按以下标准分等(x为学生考试分数):分数范围等级英文名90≤x≤100excellent(优)80≤x<90good(良)60≤x<80middle(中)x<60bad(差)输入某学生的考试分数,输出该学生的考试成绩的英文等级。要求用switch语句来实现。3.程序设计举例8/2/202154华中科技大学计算机学院 分析:switch语句可用来解决多分支问题,但每个case后面的常量都是一个离散的值,不能表示一个数值范围。为此,将分数范围[0,100]每10分划为一段,则可划分为[0,10),[10,20),[20,30),[30,40),[40,50),[50,60),[60,70),[70,80),[80,90),[90,100)十个分数段。进一步对分数值进行除以10然后取整的处理,可以发现上面同一分数段内的分数经处理后得到相同的一个整数。比如,[0,10)范围内的数除以10然后取整,结果都是0;[10,20)范围内的数除以10然后取整,结果都是1;……这样一来,就可以用一个离散值代表一个分数段内的所有分数值。p98例4.8源程序代码ex4.8.c。3.程序设计举例(续)8/2/202155华中科技大学计算机学院 p99例4.9:输入某年某月,输出该月的天数。注意:switch语句允许多种情况执行相同的语句,执行相同语句的case可以写成一行,其间可以用空格或制表符分隔,但不能用逗号分隔。例如:case4:case6:case9:case11:days=30;正确case4,case6,case9,case11:days=30;错误case4,6,9,11:days=30;错误4.5switch语句(续)8/2/202156华中科技大学计算机学院 1.while语句的形式while语句的一般形式为:while(表达式)语句while语句流程图:4.6while语句8/2/202157华中科技大学计算机学院 i=0;while(i<5){printf(”i=%dt”,i);i++;}printf(”i=%dn”,i);注意:如果循环体中没有改变循环变量的值,或循环变量值的变化不能使循环控制表达式的结果为0,则循环将永不终止(通常称之为“死循环”)。如果循环控制表达式的值一开始就为0(条件为假),则循环体一次都不执行。解释:p101-p102例4.11,例4.12,例4.13例4.10while循环语句示例8/2/202158华中科技大学计算机学院 例4.14:将来自标准输入文件的正文复制到标准输出文件,每次输入和复制一个字符。分析:以EOF(系统常量,值为-1)为结束标志的字符流称为一个正文,可以包含空白字符,例如空格符、制表符和换行符。根据题目要求,输入函数应使用getchar(每次输入一个字符),输出函数应使用putchar(每次输出一个字符);复制过程是一个重复地调用getchar读和调用putchar写的过程,因此程序的流程结构是一个循环语句;读入的字符是否为EOF则是循环控制条件。2.程序设计举例8/2/202159华中科技大学计算机学院 例4.14:算法步骤:(1)调用getchar读入一个字符并赋给字符变量c。(2)如果c不是EOF,则执行(3);否则结束执行。(3)输出c;(4)读下一字符并赋给字符变量c;(5)转步骤(2)。p102例4.14源程序代码ex4.14.c2.程序设计举例(续)8/2/202160华中科技大学计算机学院 例4.15输入一个C程序(一段正文),按原来格式复制输出,复制过程中删去输入程序中所有的注释。分析:为了删去C程序中所有的注释,关键在于如何区分注释部分和需要复制的部分。为此,可将复制过程划分为4种状态:复制状态(COPY)、开始注释状态(START)、注释状态(COMMENT)和结束复制状态(END),初始状态为COPY。每种状态下的处理方法如下:(1)在COPY状态下,若读入字符为’/’(可能为注释开始符号),则将状态改为START;否则将读入的字符复制到输出。2.程序设计举例(续)8/2/202161华中科技大学计算机学院 (2)在START状态下,若读入字符为’*’(确定注释开始),则将状态改为COMMENT;否则(不是注释),将上一次读入的字符’/’复制到输出;然后检查本次读入的字符是否为’/’,若是,则状态保持START不变,否则将本次读入的字符复制到输出并将状态改为COPY。(3)在COMMENT状态下,若读入字符为’*’(可能为注释结束符号),则将状态改为END。(4)在END状态下,若读入字符为’/’(确定注释结束),则将状态恢复成COPY;否则(不是注释结束),如果读入字符是’*’,则状态保持END不变,否则将状态改为COMMENT。(p104源程序4.15)2.程序设计举例(续)8/2/202162华中科技大学计算机学院 1.for语句的形式for语句的一般语法形式表示为:for(e1;e2;e3)sfor语句流程图:等价于:e1;while(e2){s;e3;}4.7for语句8/2/202163华中科技大学计算机学院 使用for语句时须注意表达式e1,e2,e3的用法:(1)三个表达式可以全部或部分缺省,但无论缺省e1,e2或e3,它们之间的分号不能省。(2)缺省e1和e3时的for语句形如for(;e2;)s,等价于一个形如while(e2)s的while语句。(3)缺省e2时的for语句for(e1;;e3)s和三个表达式都缺省的for语句for(;;)s都是无限循环语句。被省略的e2缺省值恒为非0(e1和e3没有缺省值)。4.7for语句(续)8/2/202164华中科技大学计算机学院 例4.16:for循环语句示例。inti;for(i=1;i<4;i++)printf(”i=%ds=%dn”,i,2*i);几种等价的形式:i=1;for(;i<4;i++)printf(”i=%ds=%dn”,i,2*i);或for(i=1;i<4;){printf(”i=%ds=%dn”,i,2*i);i++;}4.7for语句(续)8/2/202165华中科技大学计算机学院 或i=1;for(;i<4;){printf(”i=%ds=%dn”,i,2*i);i++;}或i=1;for(;;){printf(”i=%ds=%dn”,i,2*i);i++;if(!(i<4))break;}4.7for语句(续)8/2/202166华中科技大学计算机学院 例4.19:输入一批整数,以0为结束。输出其中最大的一个值。分析:从若干个数中找出最大的一个数可用"打擂台"的方法,即两两相比,大者留下;当所有的数比完时留下的那个数为最大。比较过程采用每次输入一个数立即与上一次留下的那个较大的数比较的方法,因此程序中只需用两个变量:一个变量x用于保存每次输入的一个数据,另一个变量max用于保存每两个数相比中较大的一个数。这种方法可以用于从任意多个输入数据中找出其中的最大值。2.程序设计举例8/2/202167华中科技大学计算机学院 例4.19:算法步骤:(1)输入第一个数(x)。(2)置最大数max初值为x。(3)如果x不等于0,则执行(4);否则,执行(7)。(4)输入下一个数(x)。(5)如果maxn),转步骤(5)。(4)将i值增加1,转步骤(3)。(5)输出累乘结果fac,结束。p108例4.20源程序代码ex4.20.c。2.程序设计举例(续)8/2/202170华中科技大学计算机学院 1.do-while语句的形式do-while语句的一般形式为:do语句while(表达式);do-while语句流程图:4.8do-while语句8/2/202171华中科技大学计算机学院 do-while语句:do语句while(表达式);可以用以下等价的while循环语句来代替。语句while(表达式){语句}4.8do-while语句(续)8/2/202172华中科技大学计算机学院 例4.21:把输入的整数按反方向输出。例如,输入的数是12345,要求输出结果是54321。分析:在输入一个整数时,是从高位到低位(或者说从左到右)依次输入各位上的数字。要按反方向输出,就是从低位到高位(或者说从右到左)连续地输出该数的各位数字。具体来说,就是先输出个位数字,再输出十位数字,直到最高位数字。获取一个整数的个位数字的算法是将该整数除以10取余(模10)。去掉一个整数的个位数字(使十位数字变个位数字,百位数字变十位数字,直到最高位数字变次高位数字)的算法是将该整数除以10(整数除)。这样,可以用循环语句从低位到高位依次输出原整数的数字。(源程序代码ex4.21.c)2.程序设计举例8/2/202173华中科技大学计算机学院 2.程序设计举例(续)例4.24:输入任意一个大于或等于2的整数n,判断该数是否为素数并输出相应结果。分析:根据数学定义,一个大于2的整数n,如果除1和n外不能被任何数整除(即n不含1和n以外的任何因子),则n是素数;此外,整数2不符合上述定义,但规定2是最小素数。为了确定n是否含有1和n以外的因子,只需用2至(也可以用2至n-1或2至n/2)作除数除n。如果均不能整除n,则n是素数,否则(即只要发现一个因子)n不是素数。显然,用2至作除数时所做的除法次数比用2至n-1或2至n/2作除数时少得多。8/2/202174华中科技大学计算机学院 2.程序设计举例(续)例4.24:算法步骤:(1)输入n,直到n符合要求为止(循环语句);(2)确定除数i的初值(i=2)及终值j(j=sqrt(n));(3)检查2~sqrt(n)的每一个数是否都不是n的因子(循环语句),方法是,i从2开始,用i除n,若余数非0且i<=j,则使i值增加1再重复该过程;若余数为0(找到一个因子)或i<=j不成立,则结束循环。(4)如果循环结束后余数为非0,则说明2~sqrt(n)范围内的整数都不是n的因子,因此可以判定n是素数;否则(发现一个因子),n不是素数。例4.24源程序代码ex4.24.c。8/2/202175华中科技大学计算机学院 3.循环语句小结(略)三种循环语句的区别及使用要点归纳如下(s是循环体;e,e1,e2,e3是表达式):(1)while(e)s和for(e1;e2;e3)s先测试e或e2,后执行s,若第一次测试时e或e2结果为0,则s一次也不执行;doswhile(e);先执行s,后测试e,所以s总是至少被执行一次。使用时应根据具体情况选用,一般说来,必定要执行的循环可以用三种循环语句中任何一种;可能不被执行的循环则不能用do-while。(2)第一次测试循环条件(e或e2)之前,循环变量必须赋初值,初值只赋一次;在循环体(s)或e3(对于for语句)中必须有能够改变循环变量值的语句或表达式。写循环条件时,应注意避免无限循环、永不执行的循环或执行次数不正确的循环等情况。8/2/202176华中科技大学计算机学院 3.循环语句小结(续)(略)(3)for语句控制部分的e1可以包含给循环变量赋初值以及其他与循环有关的运算,即在循环开始之前仅执行一次的运算;e2不要求一定是关系表达式或逻辑表达式,只要能正确控制循环体的执行(非0值执行循环体,0值结束循环),任何表达式都可以;e3是每次执行循环体后紧接着要执行的表达式,通常用于改变循环变量的值,如i++之类,e3也可以包括某些属于循环体部分的内容,也可将e3放到循环体最后。可见,for语句使用非常灵活,其控制部分的三个表达式可以容纳除循环变量赋初值、测试循环条件和修改循环变量值的运算以外的其他与循环有关的运算。(4)任何循环语句当循环体含有一个以上语句时,必须写成复合语句(用{}括起来);当循环体为空语句时不要掉了分号(;)。8/2/202177华中科技大学计算机学院 goto语句又称为无条件转移语句,它的一般形式为:goto标号;任何可执行C语句都可以加标号前缀成为标号语句。标号语句的形式为:标号:语句goto语句中的标号是对标号的引用,标号语句中的标号是对标号的定义。被goto语句引用的标号必须有且仅有一个对应的标号语句,对应的标号语句称为称为该goto语句的目标语句;而允许标号语句没有对应的goto语句。概而言之,有标号的引用必须有惟一的标号定义,而有标号的定义不必有标号的引用。4.9goto语句和标号语句8/2/202178华中科技大学计算机学院 4.9goto语句和标号语句(续)goto语句的目标语句允许出现的范围称为标号的作用域。C语言中标号的作用域是goto语句所在的函数,即goto语句不能从一个函数转移到另一个函数中,但可以在一个函数内从嵌套结构的内层直接转到最外层。使用标号语句时,要注意同一函数内的标号不能同名。goto语句和标号语句在函数中出现的先后位置没有约束,即对标号的定义和对标号的引用没有先后次序的规定。8/2/202179华中科技大学计算机学院 goto语句和标号语句的用法例4.25:输入一个算式,模拟袖珍计算器的加、减、乘、除四则运算。假定计算时不考虑运算符的优先级,也不允许输入圆括号(),而是按照运算符出现的先后顺序执行运算。例如,输入10.8+0.13*100计算结果为1093.000000例4.25源程序代码ex4.25.c。8/2/202180华中科技大学计算机学院 注意:goto语句不是必需的语言成分。因为用goto语句实现的任何控制转移,都可以通过循环语句、if语句和其他转移语句的适当配合以及用整型变量标记状态的方法实现。goto语句的惟一好处是可以从嵌套结构的最内层(switch语句或循环语句)直接转到最外层(隔层转移),用起来较方便.但如果随意地使用goto语句则会破坏程序的结构化特性,使程序的逻辑结构不清,因此应尽量少用或不用goto语句。8/2/202181华中科技大学计算机学院 1.break语句break语句的形式为:break;break是关键字。break语句有以下两种用途:(1)用于switch语句中,从中途退出switch语句;(2)用于循环语句中,从循环体内直接退出当前循环。注意:对于嵌套的循环语句和switch语句,break语句的执行只能退出直接包含break的那一层结构。4.10break语句、continue语句和return语句8/2/202182华中科技大学计算机学院 4.10break语句(续)例4.27:打印ASCII字符集中字符码为32~126的字符及其字符码的对照表,每行打印8对对应值。例4.27源程序代码ex4.27.c。例4.28:打印2~100之间的所有素数,每行输出10个数。分析:如4.8节例4.24的程序所示,判断一个数是否为素数(找因子)要用循环语句实现,因此判断2~100之间的每一个数是否为素数要用二重循环。例4.28源程序代码ex4.28.c。8/2/202183华中科技大学计算机学院 2.continue语句continue语句的形式为:continue;(continue是关键字)continue语句只能出现在循环语句中,用于终止循环体的本次执行(并非退出循环语句);即在循环体的本次执行中,跳过从continue语句之后直到循环体结束的所有语句,控制转移到循环体的末尾。对于while(e)s;和doswhile(e);,在执行continue语句之后马上执行对循环控制表达式(e)的计算和测试;对于for(e1;e2;e3)s则马上执行表达式e3,然后执行对表达式e2的计算和测试。8/2/202184华中科技大学计算机学院 2.continue语句(续)例4.29:输入10个整数,输出其中正数的个数及平均值。例4.29源程序代码ex4.29.c。本例不用continue语句也能实现同样的功能,改写工作作为练习请读者自己完成。8/2/202185华中科技大学计算机学院 3.return语句return语句有下面两种形式:(1)不带表达式的return语句:return;(2)带表达式的return语句:return表达式;return语句的功能是从被调用函数返回到调用函数。不带表达式的return语句只能返回控制、不能返回值,因此只能用于从无返回值的函数中返回。带表达式的return语句(表达式可以用()括起来)在返回控制的同时,将表达式的值返回到调用处,函数调用表达式的值就是这个返回值。8/2/202186华中科技大学计算机学院 3.return语句(续)例4.30:写一个函数sign,返回浮点数x的符号。如果x小于0,则返回-1;如果x等于0,则返回0;如果x大于0,则返回1。例4.30源程序代码ex4.30.c。8/2/202187华中科技大学计算机学院 嵌套循环指循环体是一个循环语句,或循环体包含循环语句。嵌套循环又称为多重循环,三种循环语句可以相互任意嵌套。具有两层嵌套的循环称为二重循环,具有n重嵌套的循环称为n重循环;二重以上的循环统称为多重循环。C语言对循环的嵌套层数没有限制,其中二重循环应用最为普遍,其次是三重循环。4.11嵌套循环程序设计8/2/202188华中科技大学计算机学院 例4.31:计算s=11+22+33+...+nn,n由终端输入。分析:设每一项的底用整型变量i表示,i从1开始每次增1直至n。考虑到溢出,ii及各项之和分别用长整型变量term和s表示。计算term是用循环对同一个i累乘i次;计算s也是用循环对每个term累加n次,而且计算term的循环是嵌套在计算s的循环体内的,所以计算s的算法是一个二重循环语句。外层循环(简称外循环)控制项数,内层循环(简称内循环)控制每项i的累乘次数。4.11嵌套循环程序设计(续)8/2/202189华中科技大学计算机学院 例4.31:程序4.31的流程图。例4.31源程序代码ex4.31.c。4.11嵌套循环程序设计(续)8/2/202190华中科技大学计算机学院 4.11嵌套循环程序设计(续)例4.32:输入一个字母,在屏幕正中输出由这个字母决定其高度的字符"金字塔"。例如输入小写字母d,则输出下列左边图形,如果输入大写字母D,则输出右边图形。aabaabcbaabcdcbaAABAABCBAABCDCBA8/2/202191华中科技大学计算机学院 (1)输入字符c;(2)如果c是小写字母则置塔顶top为’a’,如果c是大写字母则置top为’A’,如果c是非字母字符,则置top为’\0’;(3)如果top非0,则输出图形(3)-1置c1为top(外循环变量初值);(3)-2如果c1≤c则输出一行:(3)-2-1输出一行左边的所有空格,空格数目为40-2*(c1-top);(3)-2-2输出一行的前半段(包括正中的一个字符);(3)-2-3输出一行的后半段;(3)-2-4输出换行;(3)-2-5c1=c1+1,转(3)-2(循环,输出下一行);如果c1>c则结束循环。(例4.32源程序代码ex4.32.c。)例4.32:算法步骤:8/2/202192华中科技大学计算机学院 (1)对于多重循环,特别要注意给与循环有关的变量赋初值的位置。以程序4.31为例:只需赋一次初值的操作应放在最外层循环开始执行之前,例如,赋值表达式s=0位于外循环for语句控制部分的表达式1;给内循环的有关变量赋初值应放在外循环体内、内循环开始执行之前,例如,赋值表达式语句term=1;和j=1;位于内循环do-while语句的前面,是外循环for语句循环体的一部分。(2)内、外循环变量不应同名,否则,将造成循环控制混乱,导致死循环或计算结果错误。多重循环语句的使用要点(略)8/2/202193华中科技大学计算机学院 (3)应正确书写内、外循环的循环体:需要在内循环中执行的所有语句必须用{}括起来组成复合语句作为内循环体;属于外循环的语句应放在内循环体之外、外循环体之中。例如,程序4.31的赋值语句term=1;j=1;和sum+=term;都是组成外循环体的语句,其中term=1;和j=1;位于内循环do-while语句之前,sum+=term;语句位于do-while语句之后,它们均位于内循环体之外。(4)不应在循环中执行的操作应放在进入最外层循环之前或最外层循环结束之后。例如,程序4.31中对输入提示(inputn:)的输出及读入项数(n)是在程序运行过程中仅需执行一次的操作,且需在循环开始之前执行;最后输出整个计算结果(sum)只需执行一次,且应在循环结束之后执行。多重循环语句的使用要点(续)8/2/202194华中科技大学计算机学院 本章习题4.1,4.3,4.5,4.6,4.7,4.9,4.11,4.13,4.15,4.168/2/202195华中科技大学计算机学院'