c语言永真循环输出什么,C语言的基本控制结构.ppt

第2章C语言的基本控制结构,算法进行某一工作的方法和步骤称为算法算法的组成要素操作算术运算、关系运算、逻辑运算、函数运算等控制结构顺序结构选择结构循环结构,算法的图形表示,流程图图形元素,算法的描述,2.1顺序结构,语句格式:常见表达式包含:算术运算、关系运算、逻辑运算表达式,赋值表达式,函数调用表达式,,顺序结构是指按照语句的书写顺序依次执行每条语句的语句结构,2.2选择结构,应用问题根据不同条件,完成不同的计算处理语言支持条件判断的支持关系运算、逻辑运算选择结构选择结构的描述对选择条件的描述对处理分支的描述,例1:分析整数绝对值的计算过程。,#includemain(){intinput,output;printf(“\nEnterainteger:”);scanf(“%d”,},,条件:关系运算表达式,条件分支(真、假),#includemain(){intx,y;printf(“请输入两个整数:”);scanf(“%d%d”,}},说明x和y是整数,条件:关系运算表达式,条件分支(真、假),例2:要求:输入两个整数,进行比较;输出比较结果(“等于”,“大于”或“小于”),main(){intx,y;printf(“Enterx:”);scanf(“%d”,},算法:s1:输入一个整数s2:若x>0,执行yxs3:若x=0,执行y2s4:若x小于=小于等于b==c等价于(a>b)==ca>b!=bb)!=(b‘a’值为0(假)(a的ASCII码是97)z=(1+3)=0printf("\nEnter3integersseparatedbyspace:");scanf("%d%d%d",},if语句的嵌套使用,if语句的嵌套问题:if语句的分支形式,可以嵌套,但容易产生问题。问题出在条件后直接又出现分支语句。例:if(x>0)if(y>1)z=1;elsez=2;/*这个部分属于哪个if?*/C规定:每个else部分总与它前面最近的(没有配对的)if配对。,上例写法不好,易被误解。如果想else部分属于外层的if,可以采用下面加花括号的写法:if(x>0){if(y>1)z=1;}elsez=2;,多情况选择的实现,题目:输入一个格式为x+y的二元算术运算表达式,输出这个表达式的计算结果。,switch的使用,#includemain(){floatx,y;charop;scanf(“%f%c%f”,}},多路选择,结束case分支,程序读解,新的语言现象switch语句:按照条件表达式求值结果,决定转向哪个case的执行case分支:当条件式的值等于开关值(必须是常量)时,执行default分支:在所有case不匹配时,执行(可缺省)break语句:用于结束case分支的执行,转向switch后续语句的执行,switch语句,一般形式:switch(e)/*条件式*/{casec1:/*常量*/stmt1…。。。casecnstmtn…default:stmt0…/*语句组*/}/*语句组中常使用break*/,注意:switch语句的每一个case判断,都只负责指明流程分支的入口点,而不负责指定分支的出口点,出口点由编程人员用相应的跳转语句来表明。break是流程跳转语句。,2.3循环结构,考虑计算任务从键盘读入5个整数,输出它们的和;设计思路设置一个整型变量,保存整数的和设置另一个变量,保存刚读入的整数每读入一个整数,将它累加到整数和实现需求为5个整数的处理提供循环控制,程序例,为实现循环,设置变量i,保存循环次数(计数器)。while语句检查条件i<5控制循环终止循环条件成立时执行循环体中语句循环条件不成立时执行后面的语句,#includemain(){intsum,x;inti;/*循环变量*/sum=0;i=0;while(i<5){scanf(“%d”,},循环语句,格式while(条件表达式)语句/*循环体*/控制逻辑表示为流程图循环主要用于在指定条件下重复执行某些操作的情形,上例的另一种实现方法(实现2),讨论内存空间的使用实现1:3个整型变量实现2:6个整型变量算法实现1:存储概念实现2:数学概念程序运行和数学计算区别:存储器和赋值的概念提倡用实现1方法,#includemain(){intx1,x2,x3,x4,x5,sum;scanf(“%d%d%d%d%d”,},例2-5:从键盘输入10个整数,计算它们的平均值。,#includemain(){intsum=0,i=1;intx;/*保存当前输入的数据*/printf(“\nEnter10integers:”);while(i<=10){scanf(“%d”,},,还可写成:(double)sum/(i-1),while语句的特点,表达式为“真”则执行循环体一次;为“假”则结束循环先判断表达式的值,后执行循环体循环体内应有改变循环条件的语句,并且有机会执行如果循环中使用的某些变量需要有初始值,则初始值的赋值应在while语句之前完成,for语句,语法格式:for(初值表达式;条件表达式;改变量表达式)/*循环体*/,只在循环开始时计算一次,在每次执行循环体之前先计算,再根据计算结果决定是否执行循环体,在循环体执行完一次后计算,用于修改循环条件,for语句三要素初值条件改变量执行过程,for循环常见的应用形式,for(循环变量赋初值;循环条件;循环变量增量)例如s=0;for(i=1;i<=100;i++)s=s+i;可以计算1+2+3+…+100,结果在s中再如t=1;n=5;for(i=1;i<=n;i++)t=t*i;可以计算5!,结果在t中,思考题:循环体有可能一次都不执行吗?,分析本题实际是求最大值用一个变量存放最大值;一个变量接收键盘输入思路先假设1个当前最大值,再依次与其他字符比较,若某个字符更大,则以该字符为当前最大,继续与后面的字符比较,直到全部比较完毕,例2-6从键盘读入5个字符,找出其中ASCII值最大的字符,将其输出10次,#includemain(){inti,x,max=0;for(i=0;imax)max=x;}for(i=0;i0,可以选一个比所有字符ASCII码都小的值做为初始的最大值,要点用当前最大值max与所有x比较,若某个x更大,则把该x放到max中设置的max初始值必须有机会被实际的最大值取代,for语句的说明:,for后面括号中的表达式可以部分或全部省略,但两个分号不能省省略表达式1或表达式3,则同while省略表达式2,则为死循环(条件永真)循环体语句可以是一条语句,也可以是一条复合语句,循环语句--do-while,语法dostmtwhile(e);stmt循环体e循环条件C语言中的逻辑值0代表‘假’非0代表‘真’,stmt,e,=0,,Y,N,,,,,循环语句----dowhile,说明:循环体至少被执行一次循环体仅有一条语句时,可不用{},多条语句一定要用{},例2-7:从键盘输入一行字符,统计其中包含的数字字符个数,并输出。,,分析输入的字符个数不确定,按回车后输入结束,所以程序中要判断输入的是否为回车符需对输入的字符计数,字符不必保存需要变量:一个用于计数;一个用于接收输入的字符思路在循环中输入字符每次输入的字符都判其是否为回车符,若是,则结束循环判输入的字符是否是数字,是则计数器变量加1,#includemain(){intch,num=0;printf(“Enteralinetext:”);do{ch=getchar();if(‘9’>=ch},,要点计数器num要赋初始值,且初始值为0只有符合条件的字符才计数判输入是否为回车符决定是否继续循环,三种循环的比较,共同点:都具备三要素不同点for、while的循环体有可能一次也不执行do-while循环体中的语句至少执行一次do...while语句的最后要有一个分号,2.4循环控制语句,break语句出现在循环体中,用于终止循环(最内层);出现在switch语句中,用于终止多路选择;continue语句出现在循环体中,用于终止循环体的本次执行(最内层)goto语句gotolabel;转向执行label指定的语句label:定义在某个语句前;破坏程序的结构化,不推荐使用;,break语句,break语句用来从循环体内跳出,即提前结束循环。main(){inti;for(i=100;i>=0;i--)if((i%13)==0)break;printf(“%d\n”,i);},结果:91,continue语句,continue语句只能用在循环语句中,遇到continue语句,则结束这次循环,结果:7910,main(){intx;for(x=7;x=<=等于不等大于小于大于等于小于等于逻辑运算for(y=2001;y<2100;y++){/*枚举每年*/if(0!=y%4)continue;/*不能整除4*/if(0==y%400)printf(“%d\n”,y);/*能整除400*/elseif(0!=y%100)printf(“%d\n”,y);/*能整除4不能整除100*/}},第二章作业,阅读第一章、第二章练习题54~55页2、355页5、6、7、10上机作业P55页1、P56页2,选作上机题,编写程序:输入一位同学的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1)。输出该同学的年龄(周岁)。设计测试用例,上机调试。提示:设存放年龄的变量为age。如当前日期中月份大于出生时的月份,则age=y1-y0。若当前日期中月份等于出生时的月份,且当前日期中的日等于或大于出生时的日,则age=y1-y0。否则,以上两种情况均不成立时,则该生的年龄为age=y1-y0-1。,

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值