1、 . C语言复习提纲 第一章 C语言程序设计概述 一、Visual C++6.0开发环境 1、了解Visual C++6.0的安装过程; 2、了解Visual C++6.0的工作界面,菜单和工具栏的使用; ▲二、掌握C语言程序运行的过程 1、编辑:是指把按照C语法规那么编
2、写的程序代码通过编辑器〔Visual C++ 6.0,Turbo C 3.0〕输入计算机,并存盘。在存盘时,C源文件的扩展名为 .c 2、编译:将C语言源程序编译成目标程序,即对源程序进展编译,并将源程序转换为扩展名为.obj的二进制目标代码〔即把已经编辑好的源程序翻译成二进制目标代码的过程〕。 3、连接:将用户程序生成的目标代码文件〔.obj〕和系统提供的库文件〔.lib〕中的某些代码连接在一起,生成一个可执行文件〔.exe〕。 4、执行:执行生成的可执行代码,并输出结果。 5、调试:是将编制的程序投入实际运行前,用手工或编译程序等方法进展测试,修正语法错误和逻辑错误的过程。
3、▲三、构造化程序设计的根本概念 1、概念 以模块化设计为中心,将待开发的软件系统划分为假设干个相互独立的模块,将原来较为复杂的问题化简为一系列简单模块的设计,任何模块都可以使用一些根本的构造来实现,任何复杂的程序,都可以使用这些根本构造按一定的顺序组合起来,这些根本构造的特点都是只有一个入口、一个出口,这样的程序设计方法称为构造化程序设计。 2、根本思想 构造化程序设计的根本思想是采用"自顶向下,逐步细化、模块化设计、构造化编码"的程序设计方法和"单入口单出口"的控制构造。 3、三种根本构造 ⑴顺序构造⑵选择构造⑶循环构造 4、三种根本构造的特点 ⑴只有一个入口⑵只有一个出口
4、 ⑶每一个根本构造中的每一局部都有时机执行到 ⑷构造内不存在“死循环〞 5、设计原那么 ⑴自顶向下⑶逐步细化⑶模块化设计 ⑷构造化编码 ▲四、C程序的根本组成: C程序是由假设干个函数构成的,至少有一个主函数main(),main()的位置可以任意,其他各函数在程序中的前后位置也是可以任意的。程序的执行总是从主函数开场,在主函数中完毕。主函数是可以调用其他任何非主函数的函数,任何非主函数也可以调用其它任何非主函数。 C程序的根本组成:声明区、主程序区、函数定义区。 1、声明区 处在程序文件的所有函数的外部,一般包含:包含头文件、宏定义、类定义、构造体定义、函数声明、全局变量声
5、明、条件编译等。 2、主程序区 主程序以main()函数开场,main()函数〔主函数〕是程序运行时的入口,包含局部变量的声明、函数调用、一般运算、构造控制、对象与构造的处理、文件处理等。 3、函数定义区 函数的定义包含函数说明和函数体两局部。 4、注释 //或/* */为注释,不能嵌套 不产生编译代码,不影响程序的执行效率。 ▲五、标识符 1、标识符的定义:用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。 2、标识符的命名规那么:由字母、数字或下画线组成,并且第1个字符必须为字母或下画线。 注意:标识符区分大小写,即大写字母和小写字母的
6、通常意义不同,且不能与关键字重名。 练习1_1:以下变量标识符哪些是正确的,哪些是不正确的? a3bcifa!bc _abc abc_3abca_bc 3abc 3、标识符分类:关键字、预定义标识符、用户自定义标识符。 第二章 数据类型、运算符和表达式 图2_1 C语言的数据类型 数据类型 根本类型 空类型〔无值类型〕void 构造类型 指针类型 实型〔浮点型〕 联合型类型union 单字符型char 整型int 单精度型float 双精度型double 字符型 宽字符型w-char 逻辑型bool 类类型clas
7、s 枚举类型enum 构造类型struct 数组类型 ▲一、C语言的数据类型 C语言中根本数据类型包括整型、实型、字符型、枚举类型,构造类型有数组、构造体、共用体等。 ⑴、根本数据类型〔见P17〕 ⑵、构造类型又称为组合类型,它是由根本类型按照某种规那么组合而成的。 n 数组:是由具有一样数据类型的元素组成的集合。 n 构造体:是由不同的数据类型构成的一种混合的数据构造,构成构造体的成员的数据类型一般不同,并且在内存中分别占据不同的存储单元。 n 共用体:是类似于构造体的一种构造类型,与构造体不同的是构成共同体的数据成员共用同一段内存单元。 n 枚举:是将变量的值一一列举
8、出来,变量的值只限于列举出来的值的X围内。 ⑶、指针类型变量用于存储另一变量的地址,而不能用来存放根本类型的数据。它在内存中占据一个存储单元。 ⑷、类是一种数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。 二、常量和变量 ⑴、常量:在程序运行的整个过程中,其值始终保持不变的量。 n 整型常量:表示形式有十进制、八进制〔以0开头〕和十六进制〔以0x或0X开头〕。整型常量可以后缀字母L〔或l〕表示长整数,后缀字母U〔或u〕表示无符号整数。 n 实型常量〔浮点型常量〕:表示形式有一般形式和指数形式。实型常量缺省为double型〔双精度型〕,如后缀f
9、或F,那么为float型〔单精度型〕。 n 字符常量:用单撇号括起来的一个字符。如'A','*'等。 转义字符:用反斜杠引导的,具有特定含义的字符(见P22表2-4),如 '\n','\367','\x8a'。 注:C语言字符集中的任何一个字符均可用转义字符来表示。 n 字符串常量:用双撇号括起来的字符序列。如"student","XXXX"等。 n 布尔常量:false,true。 n 符号常量: ² #define 宏名 常数 练习2_1:以下哪些是合法的常量: ①12.7f②0986③0986.012④、0625L⑤87U ⑥-0x98C2⑦01a⑧-6.87E
10、2 ⑨1.2e0.5 ⑩E-3 ⑾0xFF ⑿2L⒀'\72' ⒁160 ⒂-0xffff ⒃5E2.0⒄-0xcdf⒅1.3E⒆2E0⒇0668 〔21〕011 〔22〕0xe 〔23〕-01 〔24〕-0x48a 〔25〕0x ⑵变量:指程序在运行时其值可改变的量。 n 变量应先定义〔声明其类型和名称〕后使用; n 变量定义的一般形式为: u < 数据类型 > <变名1>,<变名2>,…,<变名n>; n 在定义一个变量的同时,也可以给它赋以初值。 练习2_2以
11、下正确的变量标识符是 ①3abc②$amount③Num_of_Student④if⑤a!bc ⑥_above ⑦_abc⑧a>b⑨sin ⑩day ▲三、运算符和表达式 1、算术运算符和算术表达式 注意:int i=1.2*3; //结果为3,而不是3.6。 int i=5/3结果为1。 表达式17/5的结果是3,表达式17%5的结果是2。 2、赋值运算符和赋值表达式 注意: n 赋值运算符的结合性是从右至左的 n 复合赋值运算符:int a=12; a+=a-=a*=a;〔a=a+(a=a-(a=a*a)),结果为0〕 注意: 在C语言中,定
12、义int a=b=c=3;是错误的,而定义int a,b,c;a=b=c=3;是正确的。 练习2_3设m=9,i=3,那么执行运算m%=i+1后,m的值是多少?结果1。 m=m%(i+1)→m=9%(3+1)→m=1。 3、关系运算符和关系表达式 注意: n 关系运算符的优先级低于算术运算符。例如:a+b>c 等价于 (a+b)>c,a!=b>c 等价于 a!=(b>c) n “=〞与“==〞的区别 4、逻辑运算符与逻辑表达式 注意: n 逻辑非的优先级最高,逻辑与次之,逻辑或最低 练习2_4 假设有inta=3,b=0;那么表达式a&&!b的值为1。 练习2_5
13、设有变量说明:int a=8,b=7;那么执行语句:printf("%d,%d \n",++a,b--),输出的结果是9,7 练习2_6设a,b,c均为int型变量,那么执行语句a=b=3;c=++a||++b;后,b的值为3。 练习2_7设x、y和z都是int型变量,且x=8, y=3, z=5, 那么表达式x*y/z+6-14%z的值为6。 练习2_8设有定义:int x=1,y=-1;那么执行语句printf("%d\n",(x--&++y);后的输出结果是0。 练习2_9 设x,y,z,t均为int型变量,那么执行以下语句x=y=z=1;t=++x||++y&&++z; 后,x
14、y、z、t的值分别为2,1,1,1。 6、条件运算符 表达式1?表达式2:表达式3 注意: n 结合性是自右向左。a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d) n 条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。如: a>b?a-b:b-a相当于a>b?(a-b):(b-a) 练习2_10设有变量说明:int x=3,y=5;那么表达式:z=x>y?x:y运算后,z的值是5。 7、位运算符 位运算符是对其操作数按其二进制形式逐位进展运算,参加位运算的操作数必须为整数。 练习2_11 int a=5,b=6;a&b=4;a|b=7;a^b
15、3;~b=-7;b<<2=24;b>>2=1。 注:在位运算中,操作数左移三位,其结果相当于操作数乘以8。 8、逗号运算符 表达式1, 表达式2, ……, 表达式n 注意: 自左至右,依次计算各表达式的值,“表达式n〞 的值即为整个逗号表达式的值。如:a = 3 * 5, a * 4, a + 5的值为20。 ▲四、运算符的优先级与结合性 1、所谓结合性是指,当一个操作数两侧的运算符具有一样的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。 自左至右的结合方向,称为左结合性。反之,称为右结合性。 结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运
16、算符是右结合性外,其它运算符都是左结合性。 2、表达式求值 n 按运算符的优先级上下次序执行。例如,先乘除后加减。 n 如果在一个运算对象〔或称操作数〕两侧的运算符的优先级一样,那么按C语言规定的结合方向〔结合性〕进展。 例如,算术运算符的结合方向是“自左至右〞,即:在执行“a – b + c〞时,变量b先与减号结合,执行“a - b〞;然后再执行加c的运算。 练习2_12 设int x=2,y=3,z=4; 执行语句行x++;y+=1;z=x+y--以后,x,y和z的值分别是多少? 答案:3,3,7 练习2_13假设有定义int m=2;那么逻辑表达式(m=3)&&(m= =3
17、)的值是1。 练习2_14 如果a=5,b=3,c=7,d=9,那么条件表达式ab) && (n=c>d);后,n的值为2。 练习2_16 如果a=5,b=3,c=7,d=9,那么条件表达式a
18、〔可以没有,有多个时以“,〞分隔〕 ² 格式控制串:包含两种信息 格式说明: %[修饰符]格式字符,用于指定输出格式 如:格式控制字符“%c〞表示的含义是输出一个字符型数据。 普通字符或转义序列:原样输出。 n 格式控制字符: 表3_1 printf()函数格式字符 格式转换字符 含义 举例 %d,%i 以十进制整数输出 int a=65;printf(“%d〞,a)//65 %c 输出一个字符型数据 int a=65;printf(“%c〞,a)//A %s 输出一个字符串 printf(“%s〞,“abcd〞)//abcd %e,%E 以指数形式输
19、出一个浮点型数据〔小数位数缺省值为6位〕 float x=984.235497426; printf("%e",x);//9.842355e+002 %f(有效数字6-7位) 以十进制小数形式输出一个浮点型数据〔小数位数缺省值为6位〕 float x=984.235432426; printf("%f",x);//984.235413 %g,%G 按照%e,%f输出宽度较短的格式输出,不输出无意义的0 float x=23.240; printf("%g",x);//23.24 n 修饰符: 表3_2 printf()函数修饰符 修饰符 功能 例如 m 数据最
20、小宽度. >m,正常输出; 21、输出长度为6位,有2位小数的实数。printf("s=%-5.3s","student");的输出结果是s=stu 。
2、格式化输入——scanf()函数
scanf()函数的一般格式
scanf("格式字符串", 输入项首地址表);
注:
①格式输入函数scanf()可以从键盘上接收不同数据类型的数据。
②格式化输出函数〔printf()〕和格式化输入函数〔scanf()〕都包含在头文件“stdio.h〞中。
n 格式字符串。格式字符串可以包含3种类型的字符:格式指示符、空白字符〔空格、Tab键和回车键〕和非空白字符〔又称普通字符〕。
格式指示符与printf()函数的相 22、似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。
n 输入项首地址表──由假设干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。
输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。
变量首地址的表示方法: &变量名
其中“&〞是地址运算符。
n 数据输入操作
² 如果相邻2个格式指示符之间,不指定数据分隔符〔如逗号、冒号等〕,那么相应的2个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入1个数据后,按回车,然后再输入下1个数据。
例如,scanf("%d%d",&num1,&num2); 23、
假设给num1输入12,给num2输入36,那么正确的输入操作为:12□36↙
或者:12↙
36↙
注:使用“↙〞符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作完毕。
² “格式字符串〞中出现的普通字符〔包括转义字符形式的字符〕,务必原样输入。
例如,scanf("%d,%d",&num1,&num2);
假设给num1输入12,给num2输入36,正确的输入操作为:12,36↙
练习3_1已有定义double d,f;,数据的输入方式为:3.69 24、lf",&d,&f)。
〔scanf("%4.2lf%3.1lf",&d,&f) 或scanf("%4.2f%3.1f",&d,&f)都是错误的〕
练习3_2 有以下程序段
int m=2, n=2;n = m++ -1;printf("%d %d\n", m ,n); 输出结果是3,1。
第四章 选择构造程序设计
▲一、算法
1、算法的概念:算法是指为解决一个问题而采取确实定的、有限的方法和步骤。
2、算法的描述方法最常用的有自然语言、流程图、N-S流程图、PAD图和伪代码等。
▲二、顺序构造程序设计
顺序构造是构造化程序设计中最简单、最常见的一种程序构造。顺序构造 25、中的语句是按照书写的先后次序执行的,并且每个语句都会被执行到。
练习4_1编写一个程序,从键盘上输入一个学生5门课的成绩,计算出该学生的总成绩和平均成绩,并用自然语言描述算法。
解:设变量 a、b、c、d、e分别表示学生5门课的成绩,sum表示总成绩,aver表示平均成绩, 那么用自然语言描述算法如下:
①输入学生5门课的成绩a、b、c、d、e;
②求总成绩sum=a+b+c+d+e;
③求平均成绩: aver =sum/5.0;
④输出总成绩和平均成绩。
程序如下:
#include 26、r;
printf("请输入学生5门课的成绩\n");
scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);
sum=a+b+c+d+e;
aver=sum/5.0;
printf("总成绩=%0.2f,平均成绩=%.2f\n",sum,aver);
}
练习4_2 编写一个程序,从键盘输入梯形的上底、下底和高的值〔浮点数〕,计算并输出其面积〔保存两位小数〕,并用N-S构造图表示算法。
解:设变量a、b、h、area分别表示梯形的上底、下底、高和面积,那么用N-S构造图表示算法如下:
输入梯形的上底a、下底b和高h
计算梯形的面积:
27、
area=(a+b)*h/2.0
输出结果。
程序如下:
#include 28、积,那么用伪代码表示算法如下:
BEGIN
input r
length=2*3.14*r
area=3.14*r*r
print length,area
END
程序如下:
#include 29、\n",area);
}
▲三、选择构造程序设计
1、if语句
⑴、if语句的一般格式
if(表达式)
{语句组1;}
[else
{语句组2;} ]
n if语句中的“表达式〞必须用“(〞和“)〞括起来。表示程序执行的条件,常用关系运算符、逻辑运算符等表示的条件表达式,其结果只有两个值“1”或“0”〔成立或不成立〕。
如:表示字符型变量ch是大写英文字符的C语言表达式是ch>='A'&&ch<='Z',要判断字符变量ch中的值是否为数字字符,那么其表达式是ch>='0'&&ch<='9'。
n else 30、子句〔可选〕是if语句的一局部,必须与if配对使用,不能单独使用。
n 当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式〔即去掉花括号〕。
⑵、if语句的执行过程
n 缺省else子句时
n 当“表达式〞的值不等于0〔即判定为“逻辑真〞〕时,那么执行语句组1,否那么直接转向执行下一条。
n 指定else子句时
n 当“表达式〞的值不等于0〔即判定为“逻辑真〞〕时,那么执行语句组1,然后转向下一条语句;否那么,执行语句组2。
⑶、if语句的嵌套与嵌套匹配原那么
n if语句允许嵌套。所谓if语句的嵌套是指,在“语句组1”或〔和〕“语句组2”中,又包含有if 31、语句的情况。
n if语句嵌套时,为防止嵌套的if-else语句的二义性,C语言规定:else总是与在其之前最近的未配对的if语句组成配对关系。
练习4_4:铁路托运行李,假设每X车票可按每公斤0.3元托运40公斤以内的行李,如果超过40公斤时,超过的局部每公斤加价0.5元,试编写一道计算行李托运费的程序。
解:/*程序功能:计算行李托运费*/
#include 32、 x=40.0*0.3+(w-40.0)*0.8;
else
x=w*0.5;
printf("行李重量w=%.2f公斤,托运费x=%.2f元\n",w,x);
}
2.switch语句
⑴、switch语句的一般形式
switch(表达式)
{ case 常量表达式1:语句组;break;
case 常量表达式2:语句组;break;
......
case 常量表达式n:语句组;break;
[default:语句组;[break; ]]
}
⑵ 33、执行过程
n 当switch后面“表达式〞的值,与某个case后面的“常量表达式〞的值一样时,就执行该case后面的语句〔组〕;当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。
n 如果没有任何一个case后面的“常量表达式〞的值,与“表达式〞的值匹配,那么执行default 后面的语句〔组〕。然后,再执行switch语句的下一条。
⑶说明
n switch后面的“表达式〞,可以是int、char和枚举型中的一种。
n 每个case子句后面的“常量表达式〞的值,必须各不一样,否那么会出现相互矛盾的现象〔即对表达式的同一值,有两种或两种以上的执行方案 34、〕。
n case后面的常量表达式仅起语句标号作用,并不进展条件判断。系统一旦找到入口标号,就从此标号开场执行,不再进展标号判断,所以要退出switch语句,方法是使用break语句。
n 各case及default子句的先后次序,不影响程序执行结果。
n 多个case子句,可共用同一语句〔组〕
n 用switch语句实现的多分支构造程序,完全可以用if语句或if语句的嵌套来实现。
练习4_5以下程序段的输出结果是
intx=7,y=8,z=9;
if(x>y)
x=y,y=z;z=x;
printf("%d,%d,%d\n",x,y,z);
结果:7,8,7
练习4 35、6以下程序的输出结果是
#include 36、
结果x=2,y=1
第五章 循环构造程序设计
▲一、循环程序设计
1、while语句
⑴、一般格式
while(循环继续条件)
{ 循环体语句组;}
⑵、执行过程
①求解“循环继续条件〞表达式。如果其值为非0,转②;否那么转③。
②执行循环体语句组,然后转①。
③执行while语句的下一条。
练习5_1:/*程序功能:求1~100的累计和*/
#include 37、 i<=100 )
{ sum += i;/*实现累加*/
i++;/*循环控制变量i增1*/
}
printf(“sum=%d\n〞,sum);
}
程序运行情况如下:
sum=5050
2、do-while语句〔直到型循环〕
⑴、一般格式
do
{ 循环体语句组; }
while(循环继续条件);/*本行的分号不能缺省*/
当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
⑵、执行过程
①执行循环体语句组。
②计算“循环继续条件〞表达式。如果“循环继续条件〞表达式的值为非 0〔真〕,那么转 38、向①继续执行;否那么,转向③。
③执行do-while的下一条语句。
⑶、do-while循环语句的特点是:先执行循环体语句组,然后再判断循环条件。
因此do......while语句不管条件是否成立,至少要执行一次循环体。
练习5_2:用do-while语句求解1~100的累计和。
/*程序功能:求1~100的累计和*/
main()
{ int i=1, sum=0; /*定义并初始化循环控制变量,以及累计器*/
Do
{
sum += i; /*累加*/
i++;
}
while(i<=100);/*循环继续 39、条件:i<=100*/
printf(“sum=%d\n〞,sum);
}
3、for语句
⑴、for语句的一般格式
for([变量赋初值];[循环继续条件];[循环变量增值])
{ 循环体语句组;}
⑵、for语句的执行过程
①求解“变量赋初值〞表达式。
②求解“循环继续条件〞表达式。如果其值非0,执行③;否那么,转至④。
③执行循环体语句组,并求解“循环变量增值〞表达式,然后转向②。
④执行for语句的下一条语句。
⑶、说明
①“变量赋初值〞、“循环继续条件〞和“循环变量增值〞局部均可缺省,甚至全部缺省,但其间的分 40、号不能省略。
②当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
③“循环变量赋初值〞表达式,既可以是给循环变量赋初值的赋值表达式,也可以是与此无关的其它表达式〔如逗号表达式〕。
例如,for(sum=0;i<=100;i++) sum += i;
for(sum=0,i=1;i<=100;i++) sum += i;
④“循环继续条件〞局部是一个逻辑量,除一般的关系〔或逻辑〕表达式外,也允许是数值〔或字符〕表达式。
如:while(!E)等价于while(0),while(E)等价于while(1)。
for语句最为灵活,不仅可用于循环次数已 41、经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。
练习5_3:求n的阶乘n!〔n!=1*2*……*n〕。
/*程序功能:求n!*/
main()
{ int i, n;
long fact=1;/*将累乘器fact初始化为1*/
printf(“Input n: 〞);
scanf(“%d〞, &n);
for(i=1; i<=n; i++)
fact *= i;/*实现累乘*/
printf("%d ! = %ld\n", n, fact);
}
程序运行情况如下:
Input n: 5↙
42、
5 ! = 120
练习5_4 有以下程序
#include 43、in()
{
int m;
for(m=1;m<=50;m++)
{
if(m%12!=0)
continue;
printf("%4d",m);
}
printf("\n");
}答: 12 24 36 48
4、循环的比拟
⑴、While和 for都是先判断后循环,而do-while是先循后判断。即do-while语句在条件不成立时循环体也要被执行一次。
⑵、while和do-while语句的条件表达式只有一个,只起到控制循环完毕的作用,循环变量的初值等都用其他语句完成;for语句那么有3个表达式,不仅能起到控制 44、循环完毕的作用,还可给循环变量赋初值。
练习5_7对于以下程序段
int m=-1;
do
{
m=m*m;
}
while(!m);
循环执行的次数为多少?答:1次。
练习5_8对于以下程序段
int k=5;while (k=0) k=k-1; printf("%d\n",k);,循环体执行的次数为多少次?答:0次。
练习5_9 对于以下程序段
int a=5;while(a>=1) a--;程序执行后,a的值是0。
练习5_10以下程序
#include 45、);
printf("%d",i);
}输出结果是10。
5、循环的嵌套
⑴、循环语句的循环体内,又包含另一个完整的循环构造,称为循环的嵌套。循环嵌套的概念,对所有高级语言都是一样的。
⑵、for语句和while语句允许嵌套,do-while语句也不例外。
练习5_11:编程:
输出以下图形 *
***
*****
*******
*********
解:/*程序功能:打印5行"*",第一行1个 46、第二行3个,第三行5个...*/
#include 47、 break;
continue;
⑵、功能
①break:强行完毕循环,转向执行循环语句的下一条语句。
②continue:对于for循环,跳过循环体其余语句,转向循环变量增量表达式的计算;对于while和do-while循环,跳过循环体其余语句,但转向循环继续条件的判定。
⑶、说明
①break能用于循环语句和switch语句中,而continue只能用于循环语句中。
②break是终止整个循环的执行,而continue只是完毕本次循环。
③循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。
练习5_12 求Fibonacci数列前1 48、2项的和。
解:
每月新增兔子数Fn={1,1,2,3,5,8,13,21,34,…}〔斐波那契数列〕
月份n 兔子数Fn
1 F1=1
2 F2=1
3 F3=2=F1+F2
4 F4=3=F2+F3
…
n Fn=Fn-1+Fn-2
由此可写出递推公式
1 (n=1)
F(n)= 1 (n=2)
F〔n-1〕+ F〔n-2〕 (n>3)
程序代码如下:
49、
#include 50、
n “常量表达式〞必须用方括号括起来,指的是数组的元素个数〔又称数组长度〕,它是一个整型值,其中可以包含常数和符号常量,但不能包含变量。
n 数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开场顺序编号。
n 数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。
注:数组名能与其他变量名一样,数组名后是用方括号括起来的常量表达式,不能和圆括号。
2、数组元素的引用
引用数组中的任意一个元素的形式:数组名[下标表达式]
n “下标表达式〞可以是任何非负整型数据,取值X围是0~〔元素个数-1〕。
n 1个数组






