c语言讲义第三章课件

PPT
  • 阅读 66 次
  • 下载 0 次
  • 页数 26 页
  • 大小 177.500 KB
  • 2022-11-13 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档8.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
c语言讲义第三章课件
可在后台配置第一页与第二页中间广告代码
c语言讲义第三章课件
可在后台配置第二页与第三页中间广告代码
c语言讲义第三章课件
可在后台配置第三页与第四页中间广告代码
c语言讲义第三章课件
c语言讲义第三章课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 26
  • 收藏
  • 违规举报
  • © 版权认领
下载文档8.00 元 加入VIP免费下载
文本内容

【文档说明】c语言讲义第三章课件.ppt,共(26)页,177.500 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-7154.html

以下为本文档部分文字说明:

第四章C语言程序设计•C语句概述•数据的输入与输出•if语句•多路分支语句•循环控制语句本章提要:§1C语句概述•表达式语句:最典型的是由赋值表达式构成的赋值语句,如a=3;•函数调用语句:如printf(“hello!”);•控制语句:如if

…else…、for…、do…while•复合语句:用一对{}括起来的语句。如:if(a>b){a=a-b;printf(“a=%d”,a);}else{a=a+b;printf(“a=%d”,a);}•空语句:只有一个分号的语句。§2数

据的输入与输出函数1、字符输出函数:putchar()功能:向屏幕输出一个字符。调用格式:putchar(ch);//注:ch可以是字符型变量或常量。如:#include<stdio.h>main(){charc=„A‟;pu

tchar(c);putchar(„\101‟);}§2数据的输入与输出函数2、字符输入函数:getchar()功能:从键盘上输入一个字符。调用格式:ch=getchar();//其中ch为字符型变量注:getchar()函数没有参数!#include<stdio.h>main(){ch

arc;c=getchar();putchar(c);}§2数据的输入与输出函数3、格式化输出函数:printf()功能:向屏幕输出各种信息。一般形式:printf(“格式控制”,输出表列);格式控制包含三种信息:1.提示的字符串,原样输出。例如:printf(

“Hello”);2.转义字符。3.格式转换控制符。由“%”和格式字符组成,如“%d”、“%f”。注:在C中,数据的输出形式是由格式符决定的。格式符则应与数据类型相匹配,同一数据用不同的格式符得到的将是不同的结

果。例如:若有定义charch=„a‟;则printf(“a=%c,a=%d”,ch,ch);得到两个不同结果。•字符宽度修饰符§2数据的输入与输出函数cchar以字符形式输出sstring以字符串形式输出ddigit以十进制形式输出ffloatuunsignedo八进制x十六进制e

按指数形式输出g按e或f中较短的一种输出•常用的格式控制符如下表所示:字母l用于long型数据m数据最小宽度.n输出n位小数-输出的数据左对齐注:m、n不是字符,而是数字例如:(1)、%s(2)、%ms(3)、-%ms(4)、%

m.ns(5)、-%m.ns§2数据的输入与输出函数4、格式化输入函数:scanf()功能:用于从键盘上接收各种类型的数据。一般形式:scanf(“格式控制”,输入项地址表列);说明:1)格式控制的含义同

prinf函数。除%u外,其它在prinf中能用的,在scanf中都能用。2)可以指定输入数据所占的列数,系统将按它进行截取。3)函数中“格式控制”后面应当是变量的地址,而绝对不能写成变量名。4)在格式控制字

符串中,最好只使用格式字符。不要把其它字符加进来。5)在使用“%c”格式符输入字符时,空格不再作为分隔符而同样是有效的输入。6)输入long、double型数据时,应用“%ld”、“%lf”格式符。§

2数据的输入与输出函数5、使用scanf和printf函数时常见错误:1)在使用scanf输入数据时忘记取地址运算符,如:scanf(“%d,%d”,a,b);2)在输入数据时,数据间的分隔符与scanf中的不匹配,如:sca

nf(“%d,%d”,&a,&b);而在输入数据时,输入的是35↙3)在scanf中加入了其它的提示信息,如:scanf(“pleaseinputa,b:%a,%b”,&a,&b);4)在scanf中加入了“\n”,如:scanf(“%d\n”,&a);其实这不是错误,但在输入数据时,要多敲一个回

车,增加了麻烦。5)对于long(double)型数据,在调用scanf和printf函数时应使用“%ld”(“%lf”)格式符,否则,输入、输出结果将不正确,如:longa;scanf(“%d”,&a);printf(“%d”

,a);§3if语句if语句是非顺序执行语句,它根据判断给定条件的结果(真或假)来选择执行相应的操作。有三种形式:1)最简形式:if(表达式)语句;其执行过程是:先求解表达式的值,若为真(非0),则执行if后的语句。若为假(0),就跳过整个if语句。例:求一个整数的绝对

值。#include<stdio.h>main(){inta;scanf(“%d”,&a);if(a<0)a=-a;printf(“a的绝对值是%d\n”,a);}注:在C中,所有的非0值都是作为真处理的,因此,在if后的

表达式就绝不限于只是逻辑表达式。在具体使用中,一定要注意“=”和“==”的区别!§3if语句2)if-else结构:if(表达式)语句1;else语句2;其执行过程是:先求解表达式的值,若为真(非0),则执行语句1,否则,执行语句2。例:接收一个字

符,若为大写,则将之转换为小写,否则,转换为大写。#include<stdio.h>main(){charc;scanf(“%c”,&c);if(c>=„a‟&&c<=„z‟)c-=32;elsec+=32;printf(“%c”,c);}§3if语句3)else-if结构:1(x>0)先看这个例

子:y=0(x=0)-1(x<0)这时用前面的两种if结构显然不能直接求解,而必须使用if的嵌套。这种结构最常见的形式是else-if结构。例如,对于上例,我们可以写出如下的程序片断:if(x>0)y=1;elseif(x==0)y=0;elsey=-1;else-if语句的一般形式是:if(表

达式1)语句1;elseif(表达式2)语句2;else(表达式3)语句3;:§3if语句在使用if语句的嵌套时,应注意的是:else总是与它上面最近的、同一复合语句内的if相匹配!例如:if()if()语句1;else

if()语句2;else语句3;if()if()语句1;elseif()语句2;else语句3;因此,在使用if的嵌套时,一定要注意所写语句有无二义性的问题。考虑前面的那个函数的例子,能否写成以下形式:y=0;if(x>=0)

if(x>0)y=1;elsey=-1;§3if语句4)条件运算符:是C中唯一的一个三目运算符。它的一般形式为:表达式1?表达式2:表达式3它的执行过程是:先求解表达式1的值,若为非0,则求解表达式2的值并将之作为整个表达式的值;

若为0,则求解表达式3的值并将之作为整个表达式的值。看下面这个表达式:max=((a>b)?a:b)则它的作用相当于以下两条语句的作用:if(a>b)max=a;elsemax=b;注意:条件运算符的优先级大于赋值语句而小于算术运算符,而其结合方向为“右结合”。因此,语句(a>b)?a-b:a+

b(a>b)?(a-b):(a+b)§4多路分支语句使用if-else语句,在某些具体问题的处理上显得过于繁锁。例如,对学生成绩进行等级评定,可以写出以下程序:if(成绩>=90)等级=‘优’;if(成绩<90&&成绩>=80)等级=‘良

’;if(成绩<80&&成绩>=70)等级=‘中’;if(成绩<70&&成绩>=60)等级=‘合格’;if(成绩<60)等级=‘不合格’;当然,这样写出的程序,其执行效率是比较低的,更改后为:if(成绩>=90)等级=‘优’;elseif(成绩>=80)等级=‘良’;//成绩<90e

lseif(成绩>=70)等级=‘中’;//成绩<80elseif(成绩>=60)等级=‘合格’;//成绩<70elseif(成绩<60)等级=‘不合格’;//成绩<60§4多路分支语句但这样修改后又使程序的可读性降低。为此,C中提供了多路分支语句,它的一般形式是:

switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;:case常量表达式n:语句n;default:语句n+1;}说明:1.执行顺序:先计算表达式的值;当该值与某一个case后的常量表达式的值相等时,就执行此case后的语句。若所有的case值与表达式

的值均不匹配,则执行default后的语句。2.执行完一个case语句后,并不会跳过其它的case语句,而是顺序执行它下面的case语句。若想终止switch结构的执行,可以用一个break语句来中断switch结构的执行。3.各case和default的出现次序不会影响结果。§4多路分支

语句例:从键盘上接收一个成绩,输出对应的等级#include<stdio.h>voidmain(){intcj;chargrade;printf(“请输入成绩:”);scanf(“%d”,&cj);_____________;sw

itch(cj){case______;case9:grade=“A”;case8:grade=“B”;case7:grade=“C”;case6:grade=“D”;default:gread=“E”;}printf(“该生等级为

%c”,grade);}#include<stdio.h>voidmain(){intx,y,z;charp;scanf("%d%c%d",&x,&p,&y);switch(p){case'+':z=x+y;break;case'-

':z=x-y;break;case'*':z=x*y;break;case'/':z=x/y;break;default:p='$';}if(p=='$')printf("此程序没有此功能");elseprintf("%d%c%

d=%d",x,p,y,z);}§5循环控制语句循环控制语句是任何高级语言都提供的,它也是发挥计算机性能的重要语句。几乎所有的计算机程序中都使用了循环。c中常用的循环控制语句有三种:1)while循环其一般形式为:while(表达式)语句;当表达式的值为真(非0)时执行whil

e后的语句,直到为假时退出循环。(先判断后执行)例:求1+3+5+……+99=?#include<stdio.h>main(){inti=1,sum=0;while(i<100){sum=sum+i;i=i+2;}printf(“%d”,sum);}§5循环控制语句2)do-while循环其一般

形式为:do语句while(表达式);执行过程:先执行一次do后的语句,再判断表达式的值;若其值为真(非0),则返回重新执行该语句,如此反复,直到表达式的值为假(0)时循环结束。(先执行后判断)例:求1+3+5+……+99=?#i

nclude<stdio.h>main(){inti=1,sum=0;do{sum=sum+i;i=i+2;}while(i<100);printf(“%d”,sum);}§5循环控制语句while循环与do-while循环的区别:用while循环和do-w

hile循环编同一程序时,程序结构非常相似;在大多数时候,其结果也相同。但因while循环是“先判断后执行”,而do-while循环则是“先执行后判断”,因此它们还是有区别的。请看下面的两个程序:#include<stdio.h>main(

){inti=11,sum=0;while(i<=10){sum=sum+i;i++;}printf(“sum=%d\n”,sum);}#include<stdio.h>main(){inti=11,sum=0;do{sum=sum+i;i++;}while(i<=10

);printf(“sum=%d\n”,sum);}§5循环控制语句3)for循环:for循环是C中使用得最多的循环语句,因为它充分体现了C的灵活多变、功能强大的特点。其一般形式为:for(表达式1;表达式2;表达式3)语句;for循环的执行过程为:1)先求解表达式1的

值。(只执行一次)2)求解表达式2的值,若其值为真,则执行for后的语句,执行完毕后转至3)。若表达式2的值为假,则循环结束。3)求解表达式3的值4)转至2)处继续循环。例如,从1到100求和的例子:for(sum=0,i=1;i<=100;i++)s

um=sum+i;通常,表达式1用于进行一些初始化工作;表达式2用于判断循环条件是否成立;表达式3则用于循环变量的增量。§5循环控制语句对for循环的几点说明:i.for中的三个表达式可以省略其中的任意一个,甚至全部,但对应的分号却不能省。例如:for(;;)……ii.三个表达式可以是任

意的,并不一定有何内在的关联。如:for(i=1;i<100;j++)也一样能编译通过。这也是很多时候造成死循环的原因之一。例:求所有的水仙花数(所谓的水仙花数,是这样的一个三位数:这个数等于它的各个位的立方之和。如153=13+53+33)#include<stdi

o.h>voidmain(){inti,gw,sw,bw;for(i=100;i<1000;i++){gw=i%10;bw=i/100;sw=(i%100)/10;if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)printf(“%5d”,i);}

}§5循环控制语句4)循环的嵌套:就是在一个循环体内又包含有循环。内嵌的循环还可以再嵌套其它的循环,这是所谓的“多层循环”。一般来说,内嵌了几层循环,就称之为几重循环,如:二重循环、三重循环等。例:输出九九乘法表#include<stdio.h>main(){inti,j;for(i=1

;i<10;i++){for(j=1;j<10;j++)printf(“%d*%d=%2d”,i,j,i*j);printf(“\n”);}}百钱分百鸡问题#include<stdio.h>voidmain(){inti,j,z;for(i=0;i<20;

i++)for(j=0;j<25;j++)for(z=0;z<300;z=z+3)if((i+j+z=100)&&(5*i+4*j+z/3=100))printf("%d%d%d/n",i,j,z);}

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?