版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Chap 2 用用C语言编写程序语言编写程序 2.1 在屏幕上显示在屏幕上显示 Hello World!2.2 求华氏温度求华氏温度 100F 对应的摄氏温度对应的摄氏温度2.3 计算分段函数计算分段函数2.4 输出华氏输出华氏摄氏温度转换表摄氏温度转换表2.5 生成乘方表与阶乘表生成乘方表与阶乘表 本章要点本章要点v怎样编写程序,在屏幕上显示一些信息?怎样编写程序,在屏幕上显示一些信息?v怎样编写程序,实现简单的数据处理,例如怎样编写程序,实现简单的数据处理,例如将华氏温度转换为摄氏温度?将华氏温度转换为摄氏温度?v怎样使用怎样使用 if 语句计算分段函数?语句计算分段函数?v怎样用怎样用
2、for 语句求语句求 1+2+100?v如何定义和调用函数生成一张乘方表?如何定义和调用函数生成一张乘方表?2.1 在屏幕上显示在屏幕上显示Hello World! 例例2-1 在屏幕上显示一个短句在屏幕上显示一个短句:Hello World!2.1 在屏幕上显示在屏幕上显示Hello World/* 显示显示“Hello World!” */ 注释文本注释文本 # include 编译预处理命令编译预处理命令,不加分号不加分号int main(void) 主函数主函数 printf(“Hello World! n”); 语句结束语句结束 return 0; 输出函数输出函数 换行符换行符1.
3、任何程序都有主函数任何程序都有主函数2.程序由若干语句组成程序由若干语句组成3.语句由;结束语句由;结束2.1 在屏幕上显示一些信息在屏幕上显示一些信息例例2-2 在屏幕上显示在屏幕上显示:Programming is fun!And Programming in C is even more fun!# include 编译预处理命令编译预处理命令int main(void) printf(Programming is fun! n); printf(And Programming in C is even more fun! n); return 0; 2.2 求华氏温度求华氏温度 100
4、F 对应的摄氏温度对应的摄氏温度 摄氏温度摄氏温度 C=(5/9)(F-32)2.2.1 程序解析程序解析2.2.2 常量、变量和数据类型常量、变量和数据类型2.2.3 算术运算和赋值运算算术运算和赋值运算2.2.4 格式化输出函数格式化输出函数printf2.2.1 程序解析程序解析例例2-3 求华氏温度求华氏温度 100F 对应的摄氏温度。对应的摄氏温度。摄氏温度摄氏温度 C=(5/9)(F-32) #include int main(void) int celsius, fahr; 变量定义变量定义 fahr = 100; 变量使用变量使用 celsius = 5 * (fahr - 3
5、2) / 9; printf(fahr = %d, celsius = %dn, fahr, celsius);输出结果输出结果 return 0;输出输出: : fahr =100, celsius = 372.2.2 常量、变量和数据类型常量、变量和数据类型int celsius, fahr; celsius = 5 * (fahr - 32) / 9;v数据数据常量:在程序运行过程中,其值不能被改变常量:在程序运行过程中,其值不能被改变 变量:在程序运行过程中,其值可以被改变变量:在程序运行过程中,其值可以被改变 v数据类型数据类型常量:常量:5 和和 9是整型常量(整数)是整型常量(整
6、数)变量:在定义时指定变量:在定义时指定变量的定义变量的定义变量定义的一般形式:变量定义的一般形式:类型名类型名 变量名表;变量名表;例如:例如:int celsius, fahr; 定义整型变量定义整型变量float x; 定义单精度浮点型变量定义单精度浮点型变量double area, length; 定义双精度浮点型变量定义双精度浮点型变量double型数据比型数据比float精度高,取值范围大精度高,取值范围大 变量名:小写字母;见名知义变量名:小写字母;见名知义变量的定义变量的定义v定义变量时要指定变量名和数据类型定义变量时要指定变量名和数据类型类型名类型名 变量名表;变量名表;in
7、t celsius, fahr; float x;double area, length;v变量名代表内存中的一个存储单元变量名代表内存中的一个存储单元存放该变量的值存放该变量的值v该存储单元的大小由变量的数据类型决定该存储单元的大小由变量的数据类型决定vC语言中的变量代表保存数据的存储单元语言中的变量代表保存数据的存储单元v数学中的变量代表未知数数学中的变量代表未知数 x = x+1变量的定义与使用变量的定义与使用变量必须先变量必须先定义定义,后,后使用使用。#include int main(void) int celsius, fahr; fahr = 100; celsius = 5
8、* (fahr - 32) / 9; printf(fahr = %d, celsius = %dn, fahr, celsius); return 0;一个变量名只能定义一次一个变量名只能定义一次变量一般都定义在程序的头上变量一般都定义在程序的头上不能不能定义在程序的中间或后面定义在程序的中间或后面应该先赋值,后引用应该先赋值,后引用2.2.3 算术运算和赋值运算算术运算和赋值运算fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算术运算、算术运算双目算术运算符:双目算术运算符:+ - * / %算术表达式:用算术表达式:用算术运算符算术运算符将将运算
9、对象运算对象连接起来的连接起来的符合符合C语言语法规则的式子语言语法规则的式子 数学式:数学式:(5/9)(F-32) C表达式:表达式:5 * (fahr - 32) / 9 或者:或者:数学式:数学式:s(s-a)(s-b)(s-c)C表达式:表达式:?算术运算算术运算双目算术运算符:双目算术运算符:+ - * / %算术表达式:用算术表达式:用算术运算符算术运算符将将运算对象运算对象连接起连接起来的符合来的符合C语言语法规则的式子语言语法规则的式子 注意注意v/ 整数除整数,得整数整数除整数,得整数如:如:1/2 0,9/4 2 ?5 * (fahr - 32) / 9 和和 5 / 9
10、 * (fahr - 32) 等价吗等价吗v% 针对整型数据针对整型数据如:如: 565,941,10040v双目运算符两侧操作数的类型要相同双目运算符两侧操作数的类型要相同赋值运算赋值运算v赋值运算符赋值运算符 =v赋值表达式:用赋值表达式:用 = 将一个将一个变量变量和一个和一个表达表达式式连接起来的式子连接起来的式子 变量变量 表达式表达式例如:例如:fahr = 100; celsius = 5 * (fahr - 32) / 9; 计算赋值运算符右侧计算赋值运算符右侧表达式表达式的值的值将赋值运算符右侧将赋值运算符右侧表达式表达式的值赋给左侧的的值赋给左侧的变量变量的左边必须是一个变
11、量的左边必须是一个变量2.2.4 格式化输出函数格式化输出函数printf数据输出:格式化输出函数数据输出:格式化输出函数 printf #include printf(Hello World! n);printf(fahr = %d, celsius = %dn, fahr, celsius);printf(格式控制字符串格式控制字符串, 输出参数输出参数1, , 输出参数输出参数n);用双引号括起来,表示输出的格式要输出的数据printf格式控制字符串格式控制字符串printf(Hello World! n); printf(fahr = %d, celsius = %dn, fahr,
12、celsius);printf(Hin, fahr);格式控制字符串格式控制字符串:普通字符:原样输出普通字符:原样输出格式控制说明格式控制说明:按指定的格式输出数据按指定的格式输出数据,%与数据类型有关与数据类型有关vint型型 :%dvfloat double型:型:%fprintf(fahr = %d, celsius = %dn, fahr, celsius);输出输出: :fahr =100, celsius = 372.3 计算分段函数计算分段函数 2.3.1 程序解析程序解析2.3.2 关系运算关系运算2.3.3 if-else语句语句2.3.4 格式化输入函数格式化输入函数sc
13、anf2.3.5 常用数学库函数常用数学库函数2.3.1 程序解析程序解析例例2-4 分段计算水费分段计算水费要解决的问题:要解决的问题:输入输入计算分段函数计算分段函数输出,并保留输出,并保留2位小数位小数 415( )32.510.515xxyf xxx求分段函数 #include int main(void) double x, y; printf(Enter x (x=0):n); /* 输入提示输入提示 */ scanf(%lf, &x); /* 调用调用scanf函数输入数据函数输入数据 */ if(x =0):9.5f(9.500000)=12.67Enter x (x=
14、0):15f(15.000000)=20.00数据必须输入吗?数据必须输入吗?Enter x (x=0):21.3f(21.300000)=42.752.3.2 关系运算关系运算x = 15比较比较 x 和和 15 的大小的大小比较的结果:真比较的结果:真 假假当当 x 取值取值9.5时,时, x = 15的结果是:?的结果是:?当当 x 取值取值21.3时,时, x = 15的结果是:?的结果是:? 关系运算关系运算 比较运算,比较两个操作数比较运算,比较两个操作数v关系运算符关系运算符x y x y x = y x != yv关系表达式:用关系表达式:用关系运算符关系运算符将将2个个表达式
15、表达式连接起来的连接起来的式子。式子。如:如:x = 1区分区分= 和和=运用关系表达式运用关系表达式表示比较的数学式表示比较的数学式 C关系表达式关系表达式x10 x10 x10 x = 10 x = 10 x != 10 x = 10用关系表达式描述条件用关系表达式描述条件判断判断 x 是否为负数是否为负数x 0判断判断 x 是否不为零是否不为零x != 02.3.3 if - else语句语句if (表达式表达式) 语句语句1else 语句语句2if(x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5;语句语句1表达式表达式语句语句2真真假假计算
16、二分段函数计算二分段函数 if (表达式表达式) 语句语句1else 语句语句2if(x != 0) y = 1/x;else y = 0;10( )00 xf xxx源程序源程序#include int main(void) double x, y; printf(Enter x:n); scanf(%lf, &x); if(x != 0) y = 1/x; else y = 0; printf(f(%.2f) = %.1fn, x, y); return 0;#include /*例例2-4 */int main(void) double x, y; printf(Enter x
17、(x=0):n); scanf(%lf, &x); if(x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf(f(%f) = %.2fn, x, y); return 0;运行结果运行结果#include int main(void) double x, y; printf(Enter x:n); scanf(%lf, &x); if(x != 0) y = 1/x; else y = 0; printf(f(%.2f) = %.1fn, x, y); return 0;input x:2.5f(2.50)=0.4inp
18、ut x:0f(0.00)=0.0软件测试的基本思想软件测试的基本思想 软件测试软件测试精心设计一批精心设计一批测试用例测试用例 输入数据,预期输出结果输入数据,预期输出结果 ,然后分,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。出结果是否一致。input x:2.5f(2.50)=0.4input x:0f(0.00)=0.0if(x != 0) y = 1/x;else y = 0;if(x =0):9.5f(9.500000)=12.67Enter x (x=0):15f(15.000000)=20.0
19、0Enter x (x=0):21.3f(21.300000)=42.752.3.4 格式化输入函数格式化输入函数scanf数据输入:格式化输入函数数据输入:格式化输入函数 scanf #include scanf(%lf, &x);scanf(格式控制字符串格式控制字符串, 输入参数输入参数1, , 输入参数输入参数n);用双引号括起来,表示输入的格式用双引号括起来,表示输入的格式变量地址变量地址scanf格式控制字符串格式控制字符串格式控制字符串格式控制字符串:格式控制说明格式控制说明: 按指定的格式输入数据按指定的格式输入数据, %与数据类型有关与数据类型有关vint型型 :%d
20、vfloat型:型:%fvdouble型:型:%lf普通字符:原样输入普通字符:原样输入例如:例如:scanf(%lf, &x);输入输入: : 9.5scanf(x=%lf, &x);输入输入: x=9.5尽量不要出现普通字符尽量不要出现普通字符改进例改进例2-3的程序的程序例例2-3 求华氏温度求华氏温度 100F 对应的摄氏温度。对应的摄氏温度。摄氏温度摄氏温度 C=(5/9)(F-32) #include int main(void) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf
21、(fahr = %d, celsius = %dn, fahr, celsius); return 0;scanf(%d, &fahr);printf(“Enter fahr: n);Enter fahr:100fahr =100, celsius = 372.3.5 常用数学库函数常用数学库函数v库函数库函数C语言处理系统提供事先编好的函数,供用户在语言处理系统提供事先编好的函数,供用户在编程时调用。编程时调用。scanf(), printf(), exp()在相应的系统文件(头文件)中定义一些必需的在相应的系统文件(头文件)中定义一些必需的信息。信息。v#include命令命令用户
22、调用库函数时,将相应的头文件包含到源程用户调用库函数时,将相应的头文件包含到源程序中。序中。例如例如调用调用scanf, printf,需要需要 #include 调用调用sqrt,需要需要 #include 常用数学库函数常用数学库函数v平方根函数平方根函数 sqrt(x) v绝对值函数绝对值函数 fabs(x)fabs(-3.56) 的值为的值为3.56v幂函数幂函数 pow(x, n) :xnpow(1.1, 2) 的值为的值为1.21(即(即1.12)v指数函数指数函数 exp(x):exexp(2.3) 的值为的值为e2.3v以以e为底的对数函数为底的对数函数 log(x):ln x
23、log(123.45) 的值为的值为4.815836v以以10为底的对数函数为底的对数函数 log10(x):log10 xlog10(123.45) 的值为的值为2.091491。 例例2-5 计算存款的本息计算存款的本息输入存款金额输入存款金额 money、存期存期 year 和年利率和年利率 rate,根据公式计算存款到期时的本息合计根据公式计算存款到期时的本息合计sum(税前),输出时保留税前),输出时保留2位小数。位小数。sum = money ( 1 + rate)yearsum = money * pow(1 + rate), year)例例2-5 程序程序# include #
24、 include int main(void) int money, year; double rate, sum; printf(“Enter money:); scanf(%d, &money); printf(“Enter year: ); scanf(%d, &year); printf(“Enter rate:); scanf(%lf, &rate); sum = money * pow(1 + rate), year); printf(sum = %.2f, sum); return 0;Enter money: 1000Enter year: 3Enter
25、 rate: 0.025sum = 1076.89scanf(%d%d%lf, &money, &year, &rate);调用调用scanf函数输入多个数据函数输入多个数据scanf(%d%d%lf, &money, &year, &rate); 输入:输入:1000 3 0.025vscanf需要多个输入参数和多个格式控制说明需要多个输入参数和多个格式控制说明输入参数的类型、个数和位置要与格式控制说明一输入参数的类型、个数和位置要与格式控制说明一一对应一对应 ? scanf(%d%lf%d , &money, &year, &
26、amp;rate);v程序运行时,输入的多个数据之间必须有间隔。程序运行时,输入的多个数据之间必须有间隔。scanf(%d%lf%d , &money, &rate , &year);如何输入?如何输入?输入参数、格式控制说明、输入数据输入参数、格式控制说明、输入数据2.4 输出华氏摄氏温度转换表输出华氏摄氏温度转换表2.4.1 程序解析程序解析2.4.2 for语句语句2.4.3 指定次数的循环程序设计指定次数的循环程序设计2.4.1 程序解析程序解析例例2-6 输入输入2个整数个整数lower和和 upper,输出一,输出一张华氏摄氏温度转换表,华氏温度的取值范张华
27、氏摄氏温度转换表,华氏温度的取值范围是围是lower, upper,每次增加,每次增加1F。 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.72.4.1 程序解析程序解析-温度转换表温度转换表#include int main(void) int fahr, lower, upper; double celsius; printf(Enter lower:); scanf(%d, &lower); printf(Enter upper:); scanf(%d, &upper); printf(fahr celsiu
28、sn);Enter lower: 30Enter upper: 35fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.72.4.1 程序解析程序解析-温度转换表温度转换表for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32); printf(%d %6.1fn, fahr, celsius); return 0; fahr = fahr+1Enter lower: 30Enter upper: 35fahr celsius 30 -1.1
29、 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7例例2-8中中for语句的流程语句的流程for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32); printf(%d %6.1fn, fahr, celsius); fahr = fahr+2输出?输出?Enter lower: 30Enter upper: 35fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7forfor( (表达式表达式1 1;表达式表达式2
30、2;表达式表达式3 3) ) 循环体语句循环体语句实现实现C语句的重复执行语句的重复执行2.4.2 for语句循环语句语句循环语句3个表达式、循环体语句个表达式、循环体语句!书写顺序和执行顺序不同书写顺序和执行顺序不同!表达式表达式1只执行一次只执行一次循环循环(控制控制)变量变量:for语句中,通过改变或判断某个语句中,通过改变或判断某个变量的值来控制循环的执行变量的值来控制循环的执行for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, c
31、elsius); for语句中的循环变量语句中的循环变量赋初值赋初值判断其值判断其值改变其值改变其值for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, celsius); 表达式表达式1:给循环变量赋初值,给循环变量赋初值,指定循环的起点。指定循环的起点。fahr = lower表达式表达式2:给出循环的条件,决定循环的继续或结束。给出循环的条件,决定循环的继续或结束。fahr = upper表达式表达式3:设置循环的步长,改变循环变量的值
32、,从而可改设置循环的步长,改变循环变量的值,从而可改变表达式变表达式2的真假性。的真假性。fahr+语句:语句:被反复执行的语句,一条语句。被反复执行的语句,一条语句。for语句的说明语句的说明for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, celsius); for (fahr = lower ; fahr = upper; fahr = fahr + 1) celsius = (5.0 / 9.0) * (fahr - 32.0);
33、 printf(%d %6.1fn, fahr, celsius); 复合语句复合语句 和空语句和空语句 ;for (fahr = lower ; fahr = upper; fahr = fahr + 1); celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, celsius); !不要在!不要在for语句中随意加分号语句中随意加分号求求 1+2+100抽取具有共性的算式:抽取具有共性的算式:sum = sum + i sum初值为初值为0,该算式重复,该算式重复100次,次,i从从1变到变到100设设i为循环变量,则
34、:为循环变量,则:指定循环起点的表达式指定循环起点的表达式1:i = 1给出循环条件的表达式给出循环条件的表达式2:i = 100设置循环步长的表达式设置循环步长的表达式3:i+循环体语句:循环体语句:sum = sum + i;for(i=1; i=100; i+)sum =sum+i;2.4.3 指定次数的循环程序设计指定次数的循环程序设计/* 计算计算1 + 2 + 3 + + 100 */#include int main(void) int i, sum; sum = 0; /* 置累加和置累加和sum的初值为的初值为0 */ for ( i = 1; i = 100; i+ ) /
35、* 循环重复循环重复100次次 */ sum = sum + i; /* 反复累加反复累加 */ printf( “sum = %dn”, sum); /* 输出累加和输出累加和 */ return 0;源程序求源程序求 1+2+100for(i=1; i=100; i+) sum=0; sum=sum+i;sum=5050#include int main(void) int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn”, sum); return 0;例例2-7:求求 1+1/2
36、+1/3+ 1/100for(i=1; i=100; i+) sum=sum+1.0/i;int i;double sum;printf( “sum = %fn”, sum);一般包含四个部分:一般包含四个部分:v初始化:初始化:指定循环起点指定循环起点给循环变量赋初值,如给循环变量赋初值,如i = 1;进入循环之前,设置相关变量的初值,如进入循环之前,设置相关变量的初值,如sum = 0。v条件控制:条件控制:只要只要i 100,循环结束。,循环结束。指定次数的循环程序设计指定次数的循环程序设计输入一个正整数输入一个正整数n,求前,求前n项和,即循环项和,即循环n次次#include int
37、 main(void) int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn”, sum); return 0;例例2-7 求求 1+2+3+n for(i=1; i=n; i+) sum=sum+i;printf(“Enter n:); scanf(%d, &n); Enter n: 100Sum = 5050求前n项和,即循环n次,每次累加1项。for (i = 1; i = n ; i+) sum = sum + item (第i项)item = 1.0 / (2 * i
38、 - 1)示例:求求 1+1/3+1/5+ 的前的前n项和项和#include int main(void) int i, n; double item, sum; printf(“Enter n: ); scanf (%d, &n);sum = 0 ; for ( i = 1; i = n; i+ ) item = 1.0 / (2 * i - 1); /* 计算第i项的值 */ sum = sum + item ; /* 累加第i项的值 */ printf ( sum = %fn, sum); return 0;示例:求求 1+1/3+1/5+ 源程序源程序求前求前n项和,即循环项
39、和,即循环n次,每次累加次,每次累加1项。项。for (i = 1; i = n ; i+) sum = sum + item (第第i项项)item = flag * 1.0 / denominator denominator = denominator + 2flag = -flag例例2-8:求求 1-1/3+1/5- 的前的前n项和项和item = flag*1.0/(2 * i - 1)#include int main(void) int denominator, flag, i, n; double item, sum; printf(“Enter n: ); scanf (%d
40、, &n);flag=1; denominator =1;sum = 0 ; for ( i = 1; i = n; i+ ) item = flag * 1.0/ denominator; /* 计算第i项的值 */ sum = sum + item ; /* 累加第i项的值 */ flag = -flag; /* 准备下一次循环 */ denominator = denominator +2; printf ( sum = %fn, sum); return 0;源程序源程序n! = 1*2*nfor (i = 1; i = n ; i+) product = product *
41、item (第i项)item=i例例2-9:求求n!product = ?#include int main(void) int i, n; double product; printf(input n: n); scanf (%d, &n) ; product=1; /* 置阶乘product的初值为1 */ for ( i = 1; i = n; i+ ) /* 循环重复n次,计算n! */ product = product * i ; printf ( product = %.0fn, product ); return 0;源程序源程序输入实数x和正整数n,计算xn = x
42、* x * * xfor (i = 1; i = n ; i+) power = power * item (第i项)item=?示例:求求 xn #include int main(void) int i, n; double x, power ; printf(“Enter x, n: n); scanf (%lf%d, &x, &n) ; power = 1; /* 置power的初值为1 */ for ( i = 1; i = n; i+ ) /* 循环重复n次,计算x的n次幂 */ power = power * x; printf( %0.fn, power);求求
43、 xn 源程序源程序2.5 生成乘方表与结成表生成乘方表与结成表例例2-10(1):程序解析 输入一个正整数输入一个正整数n,生成一张,生成一张2的乘方表,输出的乘方表,输出20 到到2n的值,可以调用幂函数计算的值,可以调用幂函数计算2的乘方。的乘方。for (i = 0; i = n ; i+) power = pow(2, i); /*调用幂函数调用幂函数pow(2,i)计算计算2的的i次方次方*/ 输出输出power的值的值;生成乘方表源程序#include #include int main(void) int i, n; double power; printf(Enter n:)
44、; scanf(%d, &n); for (i = 0; i = n ; i+) power = pow(2, i); /* 调用幂函数pow(2,i)计算2的i次方 */ printf(pow(2,%d)= %.0fn, i, power); return 0;Enter n: 4pow(2,0)= 1pow(2,1)= 2pow(2,2)= 4pow(2,3)= 8pow(2,4)= 16 例例2-10(1)生成阶乘表输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。 for (i = 0; i = n ; i+
45、)power = pow(2, i); /*调用幂函数调用幂函数pow(2,i)计算计算2的的i次方次方*/ 输出输出power的值的值;for (i = 0; i = n ; i+) product = fact(i); /* 调用自定义函数调用自定义函数fact(i)计算计算i! */ 输出输出product的值的值;#include double fact(int n); /* 自定义函数的声明 */int main(void) int i, n; double result; printf(Enter n:); scanf(%d, &n); for (i = 0; i = n
46、; i+) result = fact(i); /* 调用自定义函数fact(i)计算i! */ printf(%d!=%.0fn, i, result); return 0;生成阶乘表源程序Enter n: 30!=11!=12!=23!=6double fact(int n) /* 函数首部 */ int i; double product; product = 1; for (i = 1; i = n; i+) product = product * i; return product; /* 将结果回送主函数 */2.5.2 结构化程序设计思想结构化程序设计思想v结构化程序设计结构化程
47、序设计(Structured Programming)程序设计技术程序设计技术C语言是结构化程序设计语言语言是结构化程序设计语言v强调程序设计的风格和程序结构的规范化,提倡强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理。易被理解和处理。按自顶向下的方法对问题进行分析、模块化按自顶向下的方法对问题进行分析、模块化设计和结构化编码等设计和结构化编码等3个步骤。个步骤。自顶向下的分析方法自顶向下的分析方法v把大的复杂
48、的问题分解成小问题后再解决把大的复杂的问题分解成小问题后再解决v面对一个复杂的问题,首先进行上层(整体)的面对一个复杂的问题,首先进行上层(整体)的分析,按组织或功能将问题分解成子问题,如果分析,按组织或功能将问题分解成子问题,如果子问题仍然十分复杂,再做进一步分解,直到处子问题仍然十分复杂,再做进一步分解,直到处理对象相对简单,容易处理为止。理对象相对简单,容易处理为止。v当所有的子问题都得到了解决,整个问题也就解当所有的子问题都得到了解决,整个问题也就解决了。决了。v每一次分解都是对上一层的问题进行细化和逐步每一次分解都是对上一层的问题进行细化和逐步求精,最终形成一种类似树形的层次结构,来描求精,最终形成一种类似树形的层次结构,来描述分析的结果。述分析的结果。学生成绩统计程序学生成绩统计程序成绩输入成绩输入数据计算数据计算数据查找数据查找输出成绩输出成绩计算学生平均分计算学生平均分计算课程平均分计算课程平均分学生成绩统计程序的层次结构图学生成绩统计程序的层次结构图 模块化设计模块化设计v将模块组织成良好的层次系统,顶层模块调用其下层将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个下层模块再调用更模块以实现程序的完整功能,每个下层模块再调用更下层的模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代商学概论 课件
- 肺癌靶向药物护理措施
- 金融文献汇报总结
- 六年级读书心得300字10篇
- 文体活动策划方案【9篇】
- 美丽的西双版纳教案5篇
- 大学学习生活规划
- 食品安全培训9
- 公司员工周工作计划
- 教育实习报告范文汇编4篇
- 购物中心安全风险评估报告
- “思想政治工作”与“思想政治教育”概念辨析
- ISO22000-2018食品安全管理体系内审及管理评审全套资料
- 国开中国当代文学专题形考任务2-3-5-6答案
- 合同法期末复习资料
- 物业项目信报收发员作业规程
- 千年伟人马克思光辉的一生简介课件
- 地下水与环境课件
- 国开电大本科《管理英语3》机考真题(第二套)
- 计算机辅助药物分子设计说明课件
- 叉车修理安全作业标准
评论
0/150
提交评论