C语言总复习课件_第1页
C语言总复习课件_第2页
C语言总复习课件_第3页
C语言总复习课件_第4页
C语言总复习课件_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

2.2数据类型概述常量变量符号常量实型常量整型常量数据类型字符常量字符串常量结构体变量实型变量整型变量字符变量指针变量按数据的数值是否可变分为:2.3常量

2、数值常量:整型常量:12、-3实型常量:13.45、-2.34字符常量字符串常量如:#definePRICE30定义:程序运行时其值不能改变的量(即常数)分类:1、符号常量:用一个符号代表常量定义格式:#define符号名常量值例2-1:符号常量举例#definePRICE30main(){intn,t;n=10;t=n*PRICE;printf("t=%d",t);}运行结果:total=3002.4变量变量:在程序运行过程中,其值可以改变的量;有关变量的规定:

变量通过变量名来标识,变量名和内存中存储单元相对应。编写程序时通过变量名来存、取存储单元。变量名memorya881000H1001H1002H25512inta=12;

变量必须先定义,后使用。2.4变量变量名的命名规则变量名必须是一个C语言合法的标识符!标识符名称定义:用来标识变量名、符号常量名等的字符序列;组成:由字母、数字、下划线组成,且第一个字符必须是字母或下划线;区分大小写;不能使用关键字;最长32个字符;命名原则:1)见名知意;

2)不宜混淆,如:l与I,o与0;

3)符号常量习惯全用大写字母;2.4变量变量名的命名规则例2-2:判断下列标识符号合法性:sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1233days#33char$123a>bM.D.John下面列出的是合法的标识符,也是合法的变量名:sum1,average,_total,month下面是不合法的标识符和变量名:y123,#33,3’d64,263.com2.4变量变量名的命名规则

下一页call_ntest39_string1abccall..n39test-string1c2.0

例2-3:判断下列标识符号合法性:C语言的基本字符集

数字:0123456789

字母:abc……zABC……Z

运算符:+-*/%=<><=>=!===<<>>&|&&||^~()[]{}->.!?:,;“‘特殊符号:_(下划线)回车(\r)换行(\n)制表符(\t)ASCII字符集基本字符集返回C语言的关键字返回32个关键字:

autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile关键字——由系统定义的具有特殊含义的符号,不能作其它定义2.4变量变量定义的格式定义变量的一般格式:

数据类型变量名1[,变量名2,…,变量名n];决定分配字节数和数的表示范围合法标识符如:

inta,b,c;floatdata;2.4变量变量的赋初值定义变量之后可以给变量赋初值,可将一个同类型的常量赋值给变量;inta=2,b,c=4;floatdata=3.67;inta,b,c;floatdata;a=2;c=4;data=3.67;如:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;2.4变量变量的使用规则如:

intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain

变量定义位置:一般放在函数开头main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}变量的使用:先定义,后使用main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}变量定义可执行语句3.1整型数据3.1.2整型常量与整型变量1.整型常量整型常量即整常数

如:123、453.1整型数据3.1.2整型常量与整型变量2.整型变量的种类有三种整型变量:

(1)基本整型,以int表示;

(2)短整型,以shortint表示,或以short表示;

(3)长整型,以longint表示,或以long表示;3.1整型数据3.1.2整型常量与整型变量2.整型变量的种类在实际应用中,变量的值常常是正的(如学号、库存量、年龄、存款额等);为了充分利用变量的表数范围,此时可以将变量定义为“无符号”类型;对以上三种都可以加上修饰符unsigned,以指定是“无符号数”;如果加上修饰符signed,则指定是“有符号数”;如果既不指定为signed,也不指定为unsigned,则隐含为有符号(signed);实际上signed是完全可以不写的;3.1整型数据3.1.2整型常量与整型变量2.整型变量的种类归纳起来,可以用以下6种整型变量;即:

有符号基本整型[signed]int

无符号基本整型unsignedint

有符号短整型[signed]short[int]

无符号短整型unsignedshort[int]

有符号长整型[signed]long[int]

无符号长整型unsignedlong[int]3.1整型数据3.1.2整型常量与整型变量2.整型变量的种类

数据类型

所占位数

取值范围int32-231...............(231-1)unsignedint320...................(232-1)short16-215................(215-1)unsignedshort160...................(216-1)long32-231................(231-1)unsignedlong320..................(232-1)

十进制小数如12.,.12,2.34

指数形式如1.2e3

123e3(123×103)

,1e3(1×103)

,10E2(10×102)

规范化形式:小数部分数字小于1,小数点后第一个数字必须是非0数字(必有小数点)(e或E前必须有数,且后必为整数)3.2.1实型常量的表示形式3.2实型数据数符(+-)小数部分指数部分3.2实型数据3.2.2实型变量1.实型变量的分类float、doubleANSIC并没有具体规定每种类型数据的长度、精度、数值范围,由编译系统自行决定;一般编译系统规定如下表:数据类型

数据的长度精度有效位单精度(float)4字节6~7位有效数字双精度(double)8字节15~16位有效数字3.2.2实型变量3.把实数按双精度数处理系统默认将实型常量当作双精度处理,加上f或F后就作单精度处理;一个实型常量可对其它实型变量赋值,但要根据变量的类型截取常量中相应的有效位数如:如:Floata;doublea;a=123456.7a=123456.789接受7位有效数字9位有效数字全部接受3.2实型数据3.3.1字符常量和字符变量1.字符常量定义:用单引号括起来单个普通字符或转义字符.

如‘a’‘A’‘?’‘\n’字符常量的值:该字符的ASCII码值如‘A’——65,‘a’——97‘0’——48,‘\n’——123.3字符型数据3.3.1字符常量和字符变量2.转义字符转义字符含义转义字符含义\n换行,下行开头\t水平制表,跳到下一输出区\f换页,下页开头\b退格,消除前一个字符\r回车,本行开头\\反斜线\‘单引号\“双引号\ddd3位8进制数代表的字符\xhh2位16进制数代表的字符方式:反斜线后面跟一个字符或一个代码值;意义:表示将反斜杠后面的字符或代码转换成另外的意义,这这些字符一般不能显示具体的字符形状出来,只表示特殊的含义;3.3字符型数据3.3.1字符常量和字符变量2.转义字符注意:转义字必须以反斜杠作为开头标志,而且在其后只能有一个字符(或代表字符的八进制或十六进制数)如:‘\nn’是不合法的

‘\101’‘\x41’‘\A’‘\012’‘\n’

字符常量只包含一个字符,例如‘a’,‘n’(合法);‘ax’,‘food’(不合法);字符常量区分大小写;‘’(单引号)是定界符,表示内部是一个字符常量,引号本身不属于字符常量;3.3字符型数据3.3.1字符常量和字符变量3.字符变量

字符型变量是通过关键字char来说明的,格式如下:

如:charc1,c2;

每个字符型变量可用来存放一个字符常量;

如:c1=‘A’;c2=‘B’;

可合并为:charc1=‘A’,c2=‘B’;

3.3字符型数据3.3.1字符常量和字符变量4.字符数据与整型数据在一定条件下可以通用1个字符型数据在内存用1个字节来存储,存储的是字符对应的ASCII码值,将ASCII码值用二进制形式存储;

如:

A65

B66

01000001

01000010

字符变量和整型变量是通用的,可以互相赋值;

如:charc=‘a’;charc=97;3.3字符型数据3.3.1字符常量和字符变量4.字符数据与整型数据在一定条件下可以通用字符变量可以使用两种形式输出,既可以字符(%c)的形式输出,也可以整型(%d)的形式输出;例2.3字符数据的赋值和输出

#include<stdio.h>voidmain(){charc1=97,c2=98;/*charc1=‘a’,c2=‘b’*/printf(“%c,%c\n”,c1,c2);printf(“%d,%d\n”,c1,c2);}运行结果

a,b97,983.3字符型数据C语言中的运算符(15类)算术运算符:+-*/%++--关系运算符:<<===>>=!=逻辑运算符:!

&&||位运算符:<<>>~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:[]其它:()学习运算符应注意:与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型1算术运算符和算术表达式基本算术运算符:+-*/%结合方向:从左向右优先级:++------>*/%----->+-

(2)(3)(4)

说明:“-”作为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据+-*/中任意数类型为实型,结果均为实型例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2例5/2=2

-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()inta,b,c;floatd;a*b/c-1.5(a*b)/c*1.5a-b*c

a-(b*c)a-b+c(a-b)+c自增、自减运算符++--作用:使变量值加1或减1优先级与-相同,(2)级,从右向左结合种类:前置++i,--i(先执行i+1或i-1,再使用i值相当于i=i+1)后置i++,i--(先使用i值,再执行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4说明:++--不能用于常量和表达式,如5++,(a+b)++++--结合方向:由右向左优先级:-++-------->*/%----->+-(2)(3)(4)2赋值运算符和赋值表达式简单赋值运算符符号:=

格式:变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3复合赋值运算符种类:+=-=*=/=%=《=》=&=^=|=

含义:var1op=exp2var1=var1opexp2说明:

结合方向:由右向左优先级:(14)左侧必须是变量,不能是常量或表达式例inti;i=2.56;//结果i=2;例:a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2

赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型赋值表达式的值与变量值相等,且可嵌套例:3=x-2*y;

()a+b=3;

()关系运算符种类:<<===>=>!=

结合方向:自左向右优先级别:(6)----(7)

运算结果为:1

或0例inta=3,b=2,c=1,d,f;a>bc==a>bb+c<ad=a>bf=a>b>c表达式值1表达式值1表达式值0d=1f=0<<=>>===!=优先级(高)(6)优先级(低)(7)3关系运算符和关系表达式关系运算注意事项:例若a=0;b=0.5;x=0.3;则a<=x<=b的值为0例inti=1,j=7,a;a=i+(j%4!=0);则a=2例‘a’>0结果为‘A’>100结果为10例注意区分“=”与“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);aequaltob(a==b)anotequaltob

注意数学上的关系运算符和C语言中的关系运算符的区别!!ab!a!ba&&ba||b真假真假假假真真逻辑运算符种类:!&&||逻辑运算真值表C语言中,运算量:

0表示“假”,非0表示“真”,

运算结果:

0表示“假”,1表示“真”,真假假假假假真真假假真真真假真真4逻辑运算符和逻辑表达式!&&

||

高低例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b优先级:(2)(11)(12)结合方向:!:从右向左&&:从左向右||:从左向右/*(a<=x)&&(x<=b)*//*(a>b)&&(x>y)*//*(a==b)||(x==y)*//*(!a)||(a>b)*/例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值为1值为0值为1值为1值为1值为1(5>3)&&2||(8<(4-(!0)))值为1逻辑运算的短路特性:逻辑表达式求解时,按从左向右的顺序计算运算符两侧的操作数,一旦得到表达式的结果,就停止计算,后面的运算符和表达式都被“短路”!例a&&b&&c/*只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值*/例a||b||c/*只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值*/例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)/*结果m=0,n=1*/一般形式:expr1?expr2:expr3执行过程功能:相当于条件语句,但不能取代一般if语句例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);结合方向:自右向左

如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3类型可不同,表达式值取较高的类型例x?‘a’:‘b’//x=0,表达式值为‘b’;x‡0,表达式值为‘a’x>y?1:1.5//x>y,值为1.0;x<y,值为1.55条件运算符和条件表达式形式:表达式1,表达式2,……表达式n结合性:从左向右

优先级:(15)逗号表达式的值:等于表达式n的值用途:求多个表达式的连续计算,常用于循环for语句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表达式值60//a=15,表达式值20//赋值表达式,表达式值18,x=18//逗号表达式,表达式值18,x=3//1,2,3//3,2,36逗号运算符和逗号表达式5.3C语句的分类

1.控制语句

2.函数调用语句

3.表达式语句

4.空语句

5.复合语句下一页5.3C语句的分类条件语句多分支选择语句9种控制语句循环语句循环语句循环语句结束本次循环语句中止执行switch或循环语句1.if()…else…2.switch3.for()…4.while()…5.do…while()6.continue7.Break8.Return9.goto转向语句从函数返回语句返回5.3C语句的分类由一次函数调用加一个分号构成的语句函数调用语句例如:

printf(“ThisisaCprogram!”);

scanf(“%d”,&a);

又如:若自定义函数intmax(inta,intb){……}

则有函数调用语句

x=max(2,5);返回5.3C语句的分类由一个表达式后接一个分号构成表达式语句常见的如:赋值表达式a=3

赋值语句a=3;注意:分号是语句中不可缺少的一部分任何表达式加上分号后都可以成为语句

如:i=i+1i=i+1;

n++n++;

x+yx+y;(合法但无意义)

z=max(2,5)z=max(2,5);“函数调用语句”也属于表达式语句

C程序中大多数语句是表达式语句,有人把C称为“表达式语言”返回5.3C语句的分类只有一个分号的语句,它什么也不做空语句如:

;常用于被转向点、或循环语句的循环体如:

if(x>=0);

elsey=x;

while(x==1);返回5.3C语句的分类用{}把一些语句括起来成为复合语句复合语句如:if(x>0){i++;

sum=sum+x;

}else{j++;

sub=sub+x;

}注意:★复合语句中最后一个语句末尾的分号不能漏掉;

★C语言可以一行写几个语句,也允许一个语句拆开写在几行上;返回5.4输入和输出语句一、字符的输入和输出格式:getchar()功能:从键盘读一字符字符输入函数格式:putchar(c)参数:c为字符变量功能:把字符c输出到显示器上字符输出函数5.4输入和输出语句一、字符的输入和输出

可以赋给一个字符变量或整型变量例:#include<stdio.h>main(){charc;c=getchar();putchar(c);}aa5.4输入和输出语句二、格式化输入和输出格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据格式输出函数输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%[修饰符]格式字符,用于指定输出格式

普通字符或转义序列:原样输出5.4输入和输出语句二、格式化输入和输出例如:printf(“%d%d”,a,b);

格式控制输出列表printf(“a=

%d

b=

%d”,a,b)

格式说明普通字符输出列表

可以是表达式5.4输入和输出语句十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身d,ix,Xoucse,Efg%%inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%(1)格式字符表:5.4输入和输出语句(2)修饰符表:.n对实数,指定小数点后位数(四舍五入)修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l对字符串,指定实际输出位数5.4输入和输出语句例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);0、+例inta=123;printf(“%o,%#o,%X,%#X\n”,a,a,a,a);

例#例longa=65536;printf(“%d,%8ld\n”,a,a);

例l//00001234//0000123.45//000+1234//173,0173,7B,0X7B//0,65536例5.4输入和输出语句%m.nf

指定输出的数据占m列,其中n位小数;右对齐;%-m.nf

同上;

左对齐;

例:

main()

{floatf=123.456;

printf(“%10f%10.2f%-10.2f%.2f\n”,f,f,f,f);}

结果:123.455994123.46123.46123.465.4输入和输出语句二、格式化输入和输出格式输入函数格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);

输入:10

则a=10例scanf(“%x”,&a);

输入:11

则a=17程序的三种基本结构结构化程序设计基本思想:任何程序都可以用三种基本结构表示结构化程序:由三种基本结构反复嵌套构成的程序叫结构化程序;优点:结构清晰,易读,提高程序设计质量和效率三种基本结构一、顺序结构AB程序的三种基本结构二、选择结构二分支选择结构PAB真假kA1A2AiAnk=k2k=k1k=knk=ki......多分支选择结构注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构程序的三种基本结构当型循环结构直到型循环结构PA假真AP假真三、循环结构第6讲顺序程序结构顺序结构是最基本的一种程序结构!

特点:程序中的语句完全按照语句出现的先后顺序依次执行前面的例子都是顺序结构,顺序结构的程序主要由4部分构成:

1、变量说明部分;

2、数据输入部分;

3、运算部分;

4、运算结果输出部分7.1if语句

一、单分支选择if语句if语句有三种形式:单分支选择if语句、双分支面具选择if语句、多分支选择if语句。

语句形式:

if(表达式)语句;

语句执行流程:

表达式语句真(非0)假(0)例7-1:从键盘输入两个整数a和b,如果a大于b则交换两数,最后输出两个数。

7.1if语句#include<stdio.h>输入a,ba>b交换a、b输出真假voidmain(){inta,b,t;scanf("%d,%d",&a,&b);

if(a>b){t=a;a=b;b=t;}

printf("a=%d,b=%d\n",a,b);

}7.1if语句注意:(1)if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号{}将需要执行的多个语句括起,形成一个复合语句。(2)if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数等。只要表达式的值为非零值,条件就为真,反之条件为假。7.1if语句2、双分支选择if语句语句形式:if(表达式)语句1;else语句2;语句执行流程:表达式语句1真(非0)假(0)语句27.1if语句例7-2:输入两个整数,输出其中较大的数。

#include<stdio.h>#include<math.h>voidmain(){

intx,y,max;scanf("%d,%d",&x,&y);

if(x>y)max=x;elsemax=y;

printf("max=%d\n",max);}输入x,yx>ymax=x输出最大值结束真假max=y7.1if语句注意:if和else语句之间只能有一个语句,当if~else之间的语句不只一句时,应用一对{}将语句括起。if(a>b){a++;b++;}else{a=0;b=10;}

7.1if语句3、多分支选择if语句语句形式:if(表达式1)语句1;elseif(表达式2)语句2;

……elseif(表达式n)语句n;

else语句n+1;7.1if语句语句执行流程:表达式1语句1真(非0)假(0)语句2表达式2真(非0)表达式n语句n语句n+1假(0)假(0)真(非0)7.1if语句提示:(1)当if语句中出现多个“if”与“else”的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。“else”与“if”的匹配原则是“就近一致原则”,即“else”总是与它前面最近的“if”相匹配。if(……)if(……)if(……)else…...else…...else…...7.1if语句if()

if()语句1

else

if()语句2

else语句3

内嵌ifif()

{if()语句1}

else

{if()语句2

else语句3

}内嵌if内嵌if7.1if语句例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if~else正确配对方法:加{}如果if与else的数目不一样,可以加花括号{}来确定配对关系。7.2switch语句1、语句形式:switch(表达式)

{ case常量1:语句1;

case常量2:语句2;

case常量3:语句3;

.......case常量n:语句n;

default:语句n+1;

}根据表达式的不同值,选择不同的程序分支,又称开关语句。数值型或字符型常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。千万不能接;7.2switch语句2、语句执行流程:指语句的最后一条是否为break简单语句或复合语句breakbreak有无break有无有计算表达式常量1常量2常量n=语句1…===语句2语句n其它=语句n+1无值case语句出现的次序并不影响执行结果。8.1while循环控制语句一般格式

while(表达式)

语句

一般为关系表达式或逻辑表达式,也可以是C语言其他类型的合法表达式

用来控制循环体是否执行称为内嵌语句,可以是基本语句、控制语句,也可以是复合语句是循环重复执行的部分功能:计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0时结束循环,转去执行while后面的语句。NY流程图表达式非0?语句循环控制条件循环体例如:【例5.1】编写程序,求100个自然数的和即:

s=1+2+3+…+100思路:寻找加数与求和的规律

加数i——从1变到100,每循环一次,使i增1,直到i的值超过100。i的初值设为1。求和——设变量sum存放和,循环求sum=sum+i,直至i超过100。

算法和程序:main(){inti,sum;i=1;sum=0;while(i<=100)

{sum=sum+i;i++;

}printf("sum=%d\n",sum);}程序输出结果:sum=5050i:循环控制变量sum:累加器8.2do-while语句语句一般格式

do语句

while(表达式);

功能:先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为0结束循环,转去执行while下面的语句。do-while循环的算法NY循环体表达式非0?流程图main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);}用do-while语句求100个自然数的和说明:while和do-while都能实现循环控制,while结构程序通常都可以转换成do-while结构区别:do-while语句先执行循环体再判断条件,循环体至少执行一次;while语句先判断条件再执行循环体,循环体有可能一次也不执行do—while循环体中一定要有能使表达式值趋于0的操作(如i++),否则会出现死循环。

8.3for语句语句一般格式

for(表达式1;表达式2;表达式3)

语句功能:计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句。for语句的算法NY流程图计算表达式1

语句计算表达式3表达式2为真?例如:main(){inti,sum;sum=0;

for(i=1;i<=100;i++)sum=sum+i;printf("sum=%d\n",sum);}9.2.1函数的定义函数定义的一般形式函数类型函数名(类型名形式参数1,…

){声明部分

执行语句}例如:求两个数的最大值。

int

max(intx,inty){intz;z=x>y?x:y;return(z);}类型省略时默认为int类型没有形式参数为无参函数

函数名(实参表列)在C语言中,把函数调用也作为一个表达式。因此凡是表达式可以出现的地方都可以出现函数调用。例如:①welcome();

②if(iabs(a)>max)max=iabs(a);

③m=max(c,max(a,b));9.2.2函数的调用函数调用的一般形式:voidswap(intx,inty){intz;z=x;x=y;y=z; printf("\nx=%d,y=%d",x,y);}main(){inta=10,b=20;swap(a,b);printf("\na=%d,b=%d\n",a,b);}9.2.3函数参数与函数的返回值1.函数的形式参数与实际参数程序输出结果:x=20,y=10a=10,b=20形式参数(形参)实际参数(实参)【例9.4】编一程序,将主函数中的两个变量的值传递给swap函数中的两个形参,交换两个形参的值。单向值传递有关形参和实参的说明:

①实参可以是常量、变量或表达式,但要求它们有确定的值。②实参与形参类型要一致,字符型与整型可兼容。③实参与形参的个数必须相等。在函数调用时,实参的值赋给与之相对应的形参。“单向值传递”。2.函数的类型与函数的返回值说明:①函数的类型决定了函数返回值的类型。若省略函数的类型,系统默认其为int型。②无返回值的函数应将其类型定义为void(空)类型。⑴函数的类型【例9.6】输出两个数中的大数。max(intx,inty){intz;z=x>y?x:y;return(z);/*返回z的值*/}main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("maxis%d\n",c);}函数的返回值是通过return语句带回到主调函数的功能:终止函数的运行,返回主调函数,若有返回值,将返回值带回主调函数。说明:①若函数没有返回值,return语句可以省略。②return语句中的表达式类型一般应和函数的类型一致,如果不一致,系统自动将表达式类型转换为函数类型。⑵函数的返回值return语句格式:return(表达式);

或return表达式

;或return;9.4局部变量和全局变量及其作用域9.4.1变量的作用域9.4.2局部变量及其作用域变量的作用域:变量在程序中可以被使用的范围。根据变量的作用域可以将变量分为局部变量和全局变量。局部变量(内部变量):在函数内定义的变量以及形参。作用域:函数内。问题:一个变量在程序的哪个函数中都能使用吗?9.4.3全局变量及其作用域全局变量(外部变量):在函数外部定义的变量。

温馨提示

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

评论

0/150

提交评论