《C语言配套资源》-任务1-8:循环实现菜单项人机交互响应_第1页
《C语言配套资源》-任务1-8:循环实现菜单项人机交互响应_第2页
《C语言配套资源》-任务1-8:循环实现菜单项人机交互响应_第3页
《C语言配套资源》-任务1-8:循环实现菜单项人机交互响应_第4页
《C语言配套资源》-任务1-8:循环实现菜单项人机交互响应_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

CONTENTS1任务1-8:循环实现菜单项人机交互响应操作步骤2知识点1-20while,do...while,for循环语句结构34知识点1-21循环体中使用break语句和continue语句循环的例题演示知识点1-22函数的递归调用及例题演示5任务1-8:循环实现菜单项人机交互响应操作步骤1C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授1.创建工程项目及项目主文件(main.c)

(1)打开d盘上的d:\CLanguageProgram\StuScoreManagementSystem文件夹,在文件夹下找到StuScoreManagementSystem.dsw工作空间文件。任务1-8:循环实现菜单项人机交互响应操作步骤

(2)创建项目工程

选择“File”→“New”菜单命令,新建一个项目类型为“Win32ConsoleApplication”项目,项目名称为:task1_8,注意选择将task1_8项目添加到当前的工作空间(StuScoreManageSystem),即单击“Addtocurrentworkspace”单选按钮。新建的task1_8项目为活动的项目,为保险起见,可以在task1_8项目上单击右键,将该项目设置为活动的项目(SetasActiveProject快捷菜单)。

(3)创建C源代码文件在VC++集成开发环境下选择“File”→“New”菜单命令,在出现新建文件对话框中输入main.c文件名,然后单击“OK”按钮,则新建了C语言的main.c源文件。

任务1-6和任务1-7虽然能实现菜单项人机交互响应,但是只能人机交互响应一次,不能满足多次人机交互响应,要实现多次菜单项人机交互响应,必需多次运行程序,很不方便,本任务通过学习C语言的循环知识点,可以解决多次菜单项人机交互响应的问题。C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授任务1-7:用switch语句替换if-else-if操作步骤2.编写程序源代码、编译、组建、运行程序(1)编辑main.c源程序文件

在工作空间视图中task1_8项目“SourceFiles”文件夹中双击main.c文件,打开main.c文件,在空的代码编辑窗口中输入如下代码:即将任务1-7中task1_7项目中的main.c的源代码全部复制到该项目中的main.c空文件中。(3)编译源文件(4)连接应用程序(5)运行应用程序(2)然后在main.c中,将main()函数体中定义变量的下面加上while(1)循环语句(while括号中的1,表示循环条件永远为真),所以需要在循环体最后加上下面一行代码,用于当选择菜单编号为0,退出菜单选择的同时退出循环。

if(MenuValue==0)break;while(-1)//while(1)循环语句(while括号中的1(非零),表示循环条件永远为真){

菜单显示代码前加上面的循环语句if(MenuValue==0)break;//当选择菜单编号为0,退出菜单选择的同时退出循环}知识点1-20while,do...while,for循环语句结构2一、任务1-8如果不用循环,要实现多次菜单项人机交互响应计算加、减、乘、除运算,必需多次运行程序,很不方便,所以需要学习C语言的循环知识点,解决一次运行多次菜单项人机交互响应。知识点1-20while,do...while,for循环语句结构C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授为什么需要循环?二、如何计算全班50个学生每个学生5门功课的平均成绩?

1.不采用循环的顺序结构程序设计:分别重复50次相同的输入操作及重复50次相同的计算操作scanf(″%f,%f,%f,%f,%f″,&score1,&score2,&score3,&score4,&score5);//输入一个学生5门课的成绩printf(″aver=%7.2f″,(score1+score2+score3+score4+score5)/5);//输出该学生平均成绩

……重复写49次同样上述的代码段

2.采用循环结构程序设计:不需要重复写49次同样上述的代码段

int

i=1; //设整型变量i初值为1while(i<=50)//当i的值小于或等于50时执行花括号内的语句{

scanf(″%f,%f,%f,%f,%f″,&score1,&score2,&score3,&score4,&score5);//输入一个学生5门课的成绩

printf(″aver=%7.2f″,(score1+score2+score3+score4+score5)/5);//输出该学生平均成绩i++;//每执行完一次循环使i的值加1}while循环语句的一般结构格式:while(表达式){

循环体}C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授知识点1-20while,do...while,for循环语句结构while循环语句结构用来实现“当型”循环,其结构形式中的表达式,也称为循环控制表达式或循环条件表达式,根据此表达式值的真(非0)或假(0),可以控制循环体是否被重复执行。while循环语句功能是:当循环条件表达式为真(非0)时,重复执行循环体,循环体被重复执行的次数取决于循环体中语句对条件表达式值的影响。执行执行过程:1.先计算条件表达式值。2.如果条件表达式的值为真(非0),则执行循环体语句。3.若条件表达式的值为假(0),则不执行循环体,跳出while循环,继续执行while语句循环结构的下一条语句。while循环语句的执行流程图见左边do…while循环语句的一般结构格式:do{

循环体}while(表达式);C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授知识点1-20while,do...while,for循环语句结构do…while循环语句是用来实现“直到型”循环,其功能特点是:首先执行循环体一次,然后再计算循环条件表达式,若循环条件表达式为真(非0),则重复执行循环体,否则终止循环。执行过程:1.先执行循环体语句;2.再计算循环条件表达式的值,如果循环条件表达式的值为真(非0),则重复1和2。3.若循环条件表达式值为假(0),则终止循环。do-while循环语句的执行流程图见左边for循环语句的一般格式:for(表达式1;表达式2;表达式3){

循环体}C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授知识点1-20while,do...while,for循环语句结构for循环语句的执行流程图见左边,执行过程如下:1.先求解表达式1(循环变量赋初值)的值,通常为循环变量指定初值(在整个循环过程中它只求解一次)。2.判断表达式2(循环条件)的值。若表达式2值为真(非0),则进入循环体,执行for语句中指定的循环体语句,然后转到第3步;若表达式2值为假(0),则终止循环,转到第5步。3.求解表达式3(循环变量增量)。4.转回到上面第2步继续执行。5.循环结束,执行for循环语句结构下面的语句。知识点1-21循环体中使用break语句和continue语句3一、循环体中使用break语句break语句通常用在循环语句结构和开关语句结构中。当switch开关语句中使用break语句被执行时,则程序跳出switch开关语句结构而执行switch开关语句结构后面的语句。当while、do...while、for循环语句的循环体中使用break语句被执行时,则程序跳出循环语句结构而执行循环语句结构后面的语句(俗称“断路”);通常在循环体中使用break语句总是与if条件语句相关联,即在循环体中满足一定的条件时便跳出循环语句结构(“断路”)。知识点1-21循环体中使用break语句和continue语句C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授当break语句出现在switch条件语句中时,break语句作用是终止某个case并跳出switch结构;当break语句出现在循环语句中,break语句是终止整个循环,不再判断执行循环的条件是否成立,执行循环体外的第一条语句。while(表达式1){……if(表达式2)break;……}prime(intm){inti;for(i=2;i<=m-1;i++){if(m%i==0)break;}

if(i<=m-1)printf(“%d不是素数!\n“,m);elseprintf("%d是素数!\n“,m);}main(){intm;scanf("%d",&m);prime(m);}二、循环体中使用continue语句continue语句只用在for、while、do...while等循环语句结构的循环体中,通常在循环体中使用continue语句总是与if条件语句相关联,即在循环体中满足一定的条件时便跳过循环体中剩余的语句而强行执行下一次循环(俗称“短路”),用来加速循环,所以continue语句可以理解为:“跳过循环体中剩余的语句,继续循环”(“短路”)。在while和do...while循环中,continue语句使流程直接跳到循环控制条件的测试部分,然后决定循环是否继续执行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的表达式3求值,然后进行表达式2的条件测试,最后决定for循环是否执行。知识点1-21循环体中使用break语句和continue语句C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授continue语句只终止本次循环,而不是终止整个循环。while(表达式1){……if(表达式2)continue;……}#include<stdio.h>intmain(){ intn; for(n=100;n<=200;n++) { if(n%3==0) continue; printf("%d",n); } printf("\n"); return0;}循环的例题演示4【例1-8-1】1+2+3+...+9累加函数及1×2×3×...×9累乘函数循环的例题演示C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授任务求累加和求累乘积分析过程累加器sum(初值一定要置0)累乘器factorial(初值一定要置1)一个计数器count一个计数器countsum=sum+1;sum=sum+2;…sum=sum+count…sum=sum+9factorial=factorial×1;factorial=factorial×2;…factorial=factorial×count…factorial=factorial×9sum=sum+count重复9遍在重复的过程中,count的值是从1到9不断递增factorial=factorial×count重复9遍在重复的过程中,count的值是从1到9不断递增程序代码#include<stdio.h>voidsummator();voidmain(){summator();//调用累加函数}voidsummator(){intsum=0;//累加器置0intcount=1;//计数器的初始化(循环变量)while(count<=9)//循环控制条件{ sum=sum+count;//累加 count++;//修改循环变量}printf("\n1+2+3+…+9=%d\n",sum);}#include<stdio.h>voidproduct();voidmain(){ product();//调用累乘函数}voidproduct(){intfactorial=1;//累乘器置1intcount=1;//计数器的初始化(循环变量)while(count<=9)//循环控制条件{ factorial=factorial*count;//累乘 count++;//修改循环变量}printf("\n1×2×3×…×9=%d\n",factorial);}结果1+2+3+…+9=451×2×3×…×9=362880【例1-8-2】用3种循环语句格式实现同一任务:用3种循环语句格式实现同一任务:编写输出50-60之间不能被3整除的函数。循环的例题演示C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授用while循环语句实现用do-while循环语句实现用for循环语句实现#include<stdio.h>voiddivideby3();main(){divideby3();}voiddivideby3(){inti=50;printf("不能被3整除的数:\n");while(i<=60){

if(i%3!=0)printf("%4d",i); i++;}printf("\n");}#include<stdio.h>voiddivideby3();main(){divideby3();}voiddivideby3(){inti=50;printf("不能被3整除的数:\n");do{if(i%3!=0)printf("%4d",i);i++;}while(i<=60);printf("\n");}#include<stdio.h>voiddivideby3();main(){divideby3();}

voiddivideby3(){inti;printf("不能被3整除的数:\n");for(i=50;i<=60;i++){if(i%3!=0)printf("%4d",i);

}printf("\n");}if语句没有加{},因if只有一条语句循环体中i++循环变量发生变化if语句没有加{},因if只有一条语句循环体中i++循环变量发生变化for循环语句中i++循环变量发生变化循环体可以不加{},因只有一条if语句运行结果知识点1-22函数的递归调用及例题演示5在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。知识点1-22函数的递归调用及例题演示C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授程序中不应出现无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用if语句来控制,只有在某一条件成立时才继续执行递归调用;否则就不再继续。intf(intx){ inty,z; z=f(y); //在执行f函数的过程中又要调用f函数

return(2*z);}f函数调用f函数直接递归f1函数 f2函数调用f2函数

调用f1函数间接递归【例1-8-4】编写计算n!的递归函数fact(intn)分析:由数学公式,可以知道任何正整数n的阶乘n!=n×(n-1)×(n-2)×(n-3)×…×2×11(n=0或n=1)可以理解为:n!=n×(n-1)!(n>1)知识点1-22函数的递归调用及例题演示C语言项目化教程(项目引领、任务驱动)主讲:朱香卫教授递归过程:main()fact(n)n=5fact(n)n=4fact(n)n=3fact(n)n=2fact(n)n=1a=fact(5)输出fact(5)f=fact(4)*5f=fact(3)*4f=fact(2)*3f=

温馨提示

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

评论

0/150

提交评论