欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c语言学习c语言.pptx

    • 资源ID:87125103       资源大小:204.09KB        全文页数:38页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言学习c语言.pptx

    2.if2.if语句的三种形式语句的三种形式形式一:(缺省else子句时)格式:if(表达式)语句当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句,否则直接转向执行下一条。如图4-1所示。例如:if(xy)printf(max=%d,x);真(非0)表达式语句假(0)图4-1 if语句的流程图第1页/共38页形式二:(指定else子句时)格式:if(表达式)语句1 else 语句2当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,然后转向下一条语句;否则,执行语句组2。如图4-2所示。例如:if(xy)printf(max=%d,x);else printf(max=%d,y);真(非0)表达式语句1假(0)语句2图4-2 ifelse语句的流程图第2页/共38页形式三:(形式三:(ifif语句嵌套)语句嵌套)格式:格式:ifif(表达式(表达式1 1)语句语句1 1 else if(else if(表达式表达式2)2)语句语句2 2 else if(else if(表达式表达式3)3)语句语句3 3 .else if(else if(表达式表达式m)m)语句语句m m else else 语句语句n n语句1 1语句2 2语句3 3语句m m语句n n真表达式1 1表达式2 2表达式3 3表达式m m真真真假假假假图4-3 if4-3 ifelseelse语句嵌套的流程图第3页/共38页例如:if(number500)const=0.15;if(number500)const=0.15;else if(number300)const=0.10;else if(number300)const=0.10;else if(number100)const=0.075;else if(number100)const=0.075;else if(number50)const=0.05;else if(number50)const=0.05;else const=0;else const=0;说明:(1)if(表达式)中的“表达式”一般为逻辑表达式或关系表达式,如:if(a=b&x=y)printf(a=b,x=y);也允许是其它类型的数据,如整型、实型、字符型等。如:if(3)printf(O.K.);if(3.5)printf(%f,3.5);if(a)printf(%d,a);第4页/共38页(2)“语句组1”和“语句组2”,可以只包含一个简单语句,也可以是复合语句。复合语句须在其第一个语句前用左花括号“”开头,最后一个语句后以右花括号“”结尾,如:if(a+bc&b+ca&c+ab)s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%8.2f,area);else printf(所输入的三边长不能构成三角形);第5页/共38页 【例例4-14-1】输入任意三个整数,求三个数中的最大值。【思思路路导导航航】定义三个变量num1、num2、num3,分别表示从键盘输入的任意三个数,再定义变量max表示三个数中的最大值。首先取一个数预置为max(最大值),然后再用max依次与其余的数逐个比较,如果发现有比max大的,就用它给max重新赋值,比较完所有的数后,max中的数就是最大值。对从3个或3个以上的数中找最大值的处理,上述方法是非常好用的。程序如下:单击此处第6页/共38页/*exam4_1*/*exam4_1*/int main(void)int num1,num2,num3,max;printf(Please input three numbers:);scanf(%d,%d,%d,&num1,&num2,&num3);max=num1;if(num2max)max=num2;if(num3max)max=num3;printf(The three numbers are:%d,%d,%dn,num1,num2,num3);printf(max=%dn,max);return 0;演示屏幕显示运行结果为:Please input three numbers:35,100,85Please input three numbers:35,100,85The three numbers are:35,100,85The three numbers are:35,100,85max=100max=100第7页/共38页【例例4-24-2】输入任意三个数输入任意三个数num1num1、num2num2、num3num3,按从,按从小到大的顺序排序输出。小到大的顺序排序输出。【思路导航思路导航】编程思路与例编程思路与例4-24-2基本上相同。不同的是:由于本例基本上相同。不同的是:由于本例题要求将所输入的三个数按从小到大的顺序排序输出,故在比较大小题要求将所输入的三个数按从小到大的顺序排序输出,故在比较大小时要注意小数排在前,大数排在后,位置不符时要交换两数的位置。时要注意小数排在前,大数排在后,位置不符时要交换两数的位置。程序如下:程序如下:/*exam4_2*/*exam4_2*/int main(void)int main(void)int num1,num2,num3,temp;int num1,num2,num3,temp;printf(Please input three numbers:);printf(Please input three numbers:);scanf(%d,%d,%d,&num1,&num2,&num3);scanf(%d,%d,%d,&num1,&num2,&num3);if(num1num2)temp=num1;num1=num2;num2=temp;if(num1num2)temp=num1;num1=num2;num2=temp;if(num2num3)temp=num2;num2=num3;num3=temp;if(num2num3)temp=num2;num2=num3;num3=temp;if(num1num2)temp=num1;num1=num2;num2=temp;if(num1num2)temp=num1;num1=num2;num2=temp;printf(Three numbers after sorted:%d,%d,%dn,printf(Three numbers after sorted:%d,%d,%dn,num1,num2,num3);num1,num2,num3);return 0;return 0;演示屏幕显示运行结果为:Please input three numbers:35,100,85Please input three numbers:35,100,85Three numbers after sorted:35,85,100Three numbers after sorted:35,85,100第8页/共38页3 3ifif语句的嵌套语句的嵌套 if语句允许嵌套。(1 1)ifif语句的嵌套形式语句的嵌套形式 所谓if语句的嵌套是指:if语句中包含另一个if语句,即:在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。if语句的嵌套的一般形式:if(表达式1)if(表达式2)语句组1 /*内嵌if语句*/else 语句组2else if(表达式3)语句组3 /*内嵌if语句*/else 语句组4第9页/共38页(2 2)ifif语句的嵌套与嵌套匹配原则 if语句嵌套时,从最内层开始,else总是与它上面距它最近、且尚未匹配的if配对。为明确匹配关系,避免if与else配对错位的最佳办法是将内嵌的if语句,一律用花括号括起来。为了便于阅读,使用适当的缩进,此时大括号能保证if和else不错位配对,而且适当的缩进便于阅读程序。例如以下两组循环的嵌套因加入大括号后,所表示的含义不同。if()if()if()if()if()if()语句1 1 if()if()语句11else else else else 语句2 2 语句2 2加改变配对关系:第10页/共38页【例4-34-3】有一函数如下,编程实现:输入一个x值,即可输出y值。下面以if语句嵌套的不同的方法来编写程序。方法一:/*exam431*/*exam431*/int main(void)int x,y;scanf(%d,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;printf(x=%d,y=%dn,x,y);return 0;演示屏幕显示运行结果为:-35-35x=-35,y=-1 3535x=35,y=-1 00 x=0,y=0 第12页/共38页方法三:/*exam433*/*exam433*/int main(void)int main(void)int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=-1;y=-1;if(x=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=0;else y=0;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);return 0;return 0;方法四:/*exam434*/*exam434*/int main(void)int main(void)int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=0;y=0;if(x!=0)if(x!=0)if(x0)y=1;if(x0)y=1;else y=-1;else y=-1;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);return 0;return 0;第13页/共38页4.4.条件运算符?运算符 在if语句中,当“表达式”的值为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值,例如:if(ab)max=a;elsemax=b;则可以用条件运算符构成 一个条件表达式来处理,如下所示:max=(ab)?a:b;其中,“(ab)?a:b”是一个条件表达式,其含义是:若条件(ab)成立,则条件表达式取值a;否则,取值b。第14页/共38页(1 1)条件表达式的一般格式:表达式1?表达式2:表达式3例如:int main(void)int x,y;x=80;y=x70?100:0;printf(y=%d,y);return 0;注注意意:条件运算符要求有三个操作对象,称为“三目运算符”(它是C语言中唯一的一个三目运算符)。条件表达式中的“表达式1”、“表达式2”、“表达式3”缺一不可,其类型可以各不相同。屏幕显示运行结果为:y=100y=100 演示第15页/共38页(2 2)条件表达式的运算规则 如果“表达式1”的值为非0(即逻辑真),则运算结果等于“表达式2”的值;否则,运算结果等于“表达式3”的值。条件表达式的流程图如图4-4所示。真(非0)表达式1条件表达式取表达式2的值假(0)条件表达式取表达式3的值图4-4 条件表达式的流程图第16页/共38页条件运算符的结合方向条件运算符的结合方向为“从右到左”(即右结合性)。如:ab?a:cd?c:d 等介于:(ab)?a:(cd?c:d)if语句一般都可以用条件表达式代替。如:if(ab)printf(%d,a);else printf(%d,b);等介于:(ab)?printf(%d,a):printf(%d,b);或:printf(%d,ab?a:b);条件运算符的优先级高于赋值运算符,但低于算术运算符和关系运算符。如:max=(ab)?a:b;等介于:max=ab?a:b;ab?a:b+1 等介于:(ab)?a:(b+1)(3)说明:)说明:演示第17页/共38页【例4-44-4】从键盘上输入一个字符,判别它是否为大写字母,如果是,则把它转换成小写字母输出;否则不转换,直接输出。【思路导航】字符在计算机内是用ASCII表示,大写字母的ASCII值正好比相应的小写字母小32,因此,若能判断出所输入的字符为大写字母,则将该字符的ASCII值加上32后,即转换为相应的小写字母。判断字符ch是否为大写字母的条件是:ch=A&ch=A&ch=Z)?(ch+32):ch;printf(ch=%cn,ch);return 0;演示屏幕显示运行结果为:Input a character:DInput a character:Dch=dch=d Return第18页/共38页4.2 switch4.2 switch语句语句1 1switchswitch语句的一般格式:语句的一般格式:switch(表达式)case 常量表达式1:语句(组)1;break;case 常量表达式2:语句(组)2;break;.case 常量表达式:语句(组)n;break;default:语句(组)n+1;break;C语言提供了switch语句直接处理多个分支的选择结构。第19页/共38页例如:switch(ch)case A:printf(85100n);break;case B:printf(7084n);break;case C:printf(6069n);break;case D:printf(60n);break;default:printf(errorn);第20页/共38页其他DDBBAAch输出“85100”输出“7084”输出“6069”switch的下一条语句输出“60”输出“error”CC图4-5 4-5 第21页/共38页2 2switchswitch语句的功能包括以下两方面。(1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,则跳出switch语句,转向执行switch语句的下一条。(2)如果没有任何一个case后面的“常量表达式”的值与switch后面“表达式”的值相同,则执行default 后面的语句(组)。然后,跳出switch语句,执行switch语句的下一条。第22页/共38页 3 3说明:(1)switch后面的“表达式”和case后面的“常量表达式”可以是整型、字符型和枚举型中的任意一种,程序执行时将自动计算其值。(2)为了避免程序执行时出现自相矛盾的现象,对switch后面的“表达式”的值只能有一种执行方案,因此,每个case后面“常量表达式”的值,必须各不相同。(3)case后的语句中break语句不能缺。case后面的“常量表达式”仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以在每个case的语句(组)后面必须加上break语句,以便结束switch语句。想一想第23页/共38页想一想:若switch后面的“表达式”的值为B,则下面这段程序输出的结果是什么?为什么?switch(ch)caseA:printf(85100n);caseB:printf(7084n);caseC:printf(6069n);caseD:printf(60n);default:printf(errorn);结果是7084606960n);break;在变量ch的值为A、B、C三种情况下,均执行相同的语句组“printf(60n);break;”。(6)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。第25页/共38页【例4-54-5】从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60score70,等级为D;score0时,一元二次方程有两个不等的实根。当b2-4ac0时,一元二次方程有两个共轭复根。为了编程方便,设变量disc表示一元二次方程判别式 b2-4ac,由于实数在计算机中运算和存储时,不可避免地有会有一些微小误差,因此在判别disc(为实数)是否为零时,不能直接与零比较,正确的方法是判断其绝对值小于一个很小的常数,如采用方法:if(fabs(disc)=1E-6),而不是:if(disc=0.0)。第28页/共38页N-S流程图如图4-7所示:图4-7 第29页/共38页/*exam4_6*/*exam4_6*/#include math.hint main(void)float a,b,c,disc,x1,x2,p,q;printf(Please input a,b,c=);scanf(“%f,%f,%f”,&a,&b,&c);/*输入一元二次方程系数*/printf(The equation:);printf(%fx*x+%fx+%f=0”,a,b,c);if(fabs(a)=1E-6)/*判断系数a=0*/printf(“is not quadraticn”);exit(0);/*输出不能构成方程的信息后,退出*/else程序如下:第30页/共38页disc=b*b-4*a*c;/*定义判别式*/if(fabs(disc)1e-6)/*判断0*/x1=(-b+sqrt(disc)/(2*a);/*求出两个不相等的实根*/x2=(-b-sqrt(disc)/(2*a);printf(has distinct real roots:n);printf(x1=%8.2f,x2=%8.2fn,x1,x2);else 第31页/共38页p=-b/(2*a);/*求出两个共轭复根,其中p表示实部*/q=sqrt(fabs(disc)/(2*a);/*q表示虚部*/printf(has complex roots:n);printf(“x1=%7.2f+%7.2f in“,p,q);/*输出两个共轭复根之一:x1*/printf(”x2=%7.2f-%7.2f in“,p,q);/*输出两个共轭复根之二:x2*/return 0;运行情况第32页/共38页Please input a,b,c=1Please input a,b,c=1,6 6,2 2 The equation:1.000000 x*x+6.000000 x+2.000000=0 has distinct real roots:The equation:1.000000 x*x+6.000000 x+2.000000=0 has distinct real roots:x1=-0.35x1=-0.35,x2=-5.56 x2=-5.56 Please input a,b,c=1Please input a,b,c=1,2 2,3 3 The equation:1.000000 x*x+2.000000 x+3.000000=0 has complex roots:The equation:1.000000 x*x+2.000000 x+3.000000=0 has complex roots:x1=-1.00+1.41ix1=-1.00+1.41ix2=-1.00-1.41i x2=-1.00-1.41i 若从键盘上输入方程系数a、b、c分别为:1,6,2,则屏幕显示程序运行情况如下:若从键盘上输入方程系数a、b、c分别为:1,2,3,则屏幕显示程序运行情况如下:演示想一想:如果将系数a、b、c定义成整数,能否直接判断一元二次方程判别式disc是否等于0?第33页/共38页【例4-74-7】已知某公司员工的保底薪水salary为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元):profit1000 没有提成;1000profit2000提成10%;2000profit5000提成15%;5000profit10000提成20%;10000profit 提成25%。编程实现:统计员工实际薪水。【思路导航】定义变量salary表示员工实际薪水,变量profit表示员工所接工程的利润,考虑到工程利润与利润提成的关系有五种情况,故采用多路分支结构编写程序。为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、),如果将利润profit整除1000,商用变量grade表示,则当:第34页/共38页profit1000grade可能为0、11000profit2000grade可能为1、22000profit5000grade可能为2、3、4、55000profit10000grade可能为5、6、7、8、9、1010000profitgrade可能为10、11、12、为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可。程序如下:/*exam4_8*/*exam4_8*/int main(void)long profit;int grade;float salary=500;printf(Input profit:);第35页/共38页scanf(%ld,&profit);grade=(profit1)/1000;/*将利润-1、再整除1000,转化成 switch语句中的case标号*/switch(grade)case 0:break;case 1:salary+=profit*0.1;break;case 2:case 3:case 4:salary+=profit*0.15;break;case 5:case 6:case 7:case 8:case 9:salary+=profit*0.2;break;default:salary+=profit*0.25;printf(salary=%.2fn,salary);return 0;屏幕显示运行结果为:Input profit:2600 Input profit:2600 salary=890.00 salary=890.00 演示第36页/共38页作业与实验作业:习题四的填空题中选3题,选择题中选3题。上机操作:实验四Return第37页/共38页感谢您的欣赏!第38页/共38页

    注意事项

    本文(c语言学习c语言.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开