首页 Chap 2 用C语言编写程序

Chap 2 用C语言编写程序

举报
开通vip

Chap 2 用C语言编写程序Chap 2 用C语言编写程序 Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度 2.3 计算分段函数 2.4 输出华氏—摄氏温度转换表 2.5 生成乘方表与阶乘表 本章要点 *​ 怎样编写程序,在屏幕上显示一些信息? *​ 怎样编写程序,实现简单的数据处理,例如将华氏温度转换为摄氏温度? *​ 怎样使用 if 语句计算分段函数? *​ 怎样用 for 语句求 1+2+……+100? *​ 如何定义和调用函数生成一张乘方表? 2.1 在...

Chap 2  用C语言编写程序
Chap 2 用C语言编写程序 Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度 2.3 计算分段函数 2.4 输出华氏—摄氏温度转换表 2.5 生成乘方表与阶乘表 本章要点 *​ 怎样编写程序,在屏幕上显示一些信息? *​ 怎样编写程序,实现简单的数据处理,例如将华氏温度转换为摄氏温度? *​ 怎样使用 if 语句计算分段函数? *​ 怎样用 for 语句求 1+2+……+100? *​ 如何定义和调用函数生成一张乘方表? 2.1 在屏幕上显示Hello World! 例2-1 在屏幕上显示一个短句: Hello World! /* 显示“Hello World!” */ 注释 圣经注释小学小古文100篇及注释小古文100篇及注释简短小古文100篇及注释译文小古文100篇及注释 文本 # include 编译预处理命令 int main(void) 主函数 { printf(“Hello World! \n”); 语句结束 return 0; } 输出函数 换行符 例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°F 对应的摄氏温度 摄氏温度 C=(5/9)(F-32) 2.2.1 程序解析 2.2.2 常量、变量和数据类型 2.2.3 算术运算和赋值运算 2.2.4 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 化输出函数printf 2.2.1 程序解析 例2-3 求华氏温度 100°F 对应的摄氏温度。 摄氏温度 C=(5/9)(F-32) #include int main(void) { int celsius, fahr; 变量定义 fahr = 100; 变量使用 celsius = 5 * (fahr - 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, celsius);输出结果 return 0; } 2.2.2 常量、变量和数据类型 int celsius, fahr; celsius = 5 * (fahr - 32) / 9; *​  数据 *​  常量:在程序运行过程中,其值不能被改变 *​  变量:在程序运行过程中,其值可以被改变 *​  数据类型 *​  常量:5 和 9 是整型常量(整数) *​  变量:在定义时指定 变量的定义 变量定义的一般形式: 类型名 变量名表; 例如: int celsius, fahr; 定义整型变量 float x; 定义单精度浮点型变量 double area, length; 定义双精度浮点型变量 double 型数据比float 精度高,取值范围大 *​ 定义变量时要指定变量名和数据类型 类型名 变量名表; int celsius, fahr; double area, length; *​  变量名代表内存中的一个存储单元 存放该变量的值 *​  该存储单元的大小由变量的数据类型决定 *​ C 语言中的变量代表保存数据的存储单元 *​  数学 数学高考答题卡模板高考数学答题卡模板三年级数学混合运算测试卷数学作业设计案例新人教版八年级上数学教学计划 中的变量代表未知数 x = x+1 变量的定义与使用 变量必须先定义,后使用。 #include int main(void) { int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, celsius); return 0; } 2.2.3 算术运算和赋值运算 fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算术运算 *​ 双目算术运算符:+ - * / % *​ 算术表达式:用算术运算符将运算对象连接起来的符合C语言语法规则的式子 数学式:(5/9)(F-32) C表达式:5 * (fahr - 32) / 9 或者: 数学式:s(s-a)(s-b)(s-c) C表达式:s *(s-a) *(s-b) *(s-c) 注意 *​ / 整数除整数,得整数 如:1/2 = 0 ,9/4 = 2 ?5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32) 等价吗 *​ % 针对整型数据 如: 5 %6 =5 ,9 %4 =1 ,100 %4 =0 *​  双目运算符两侧操作数的类型要相同 赋值运算 *​ 赋值运算符 = *​ 赋值表达式:用 = 将一个变量和一个表达式连接起来的式子 变量 = 表达式 例如: fahr = 100; celsius = 5 * (fahr - 32) / 9; *​  计算赋值运算符右侧表达式 的值 *​  将赋值运算符右侧表达式 的值赋给左侧的变量 2.2.4 格式化输出函数printf 数据输出:格式化输出函数 printf #include printf("Hello World! \n"); printf("fahr = %d, celsius = %d\n", fahr, celsius); printf(格式控制字符串, 输出参数1, … , 输出参数n); printf-格式控制字符串 printf("Hello World! \n"); printf("fahr = %d, celsius = %d\n", fahr, celsius); printf("Hi\n", fahr); 格式控制字符串: *​  普通字符:原样输出 *​  格式控制说明: 按指定的格式输出数据,%… 与数据类型有关 *​ int 型 :%d *​ float double 型:%f printf("fahr = %d, celsius = %d\n", fahr, celsius); 2.3 计算分段函数 2.3.1 程序解析 2.3.2 关系运算 2.3.3 if-else语句 2.3.4 格式化输入函数scanf 2.3.5 常用数学库函数 2.3.1 程序解析 例2-4 分段计算水费 要解决的问题: *​  输入 *​  计算分段函数 *​  输出,并保留2 位小数 2.3.1 程序解析-求分段函数 #include int main(void) { double x, y; printf("Enter x (x>=0):\n"); /* 输入提示 */ scanf("%lf", &x); /* 调用scanf函数输入数据 */ if(x <= 15) /* if – else语句 */ y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("y = f(%f) = %.2f\n", x, y); return 0; } 2.3.2 关系运算 x <= 15 比较 x 和 15 的大小 比较的结果:真 假 当 x 取值9.5时, x <= 15的结果是:? 当 x 取值21.3时, x <= 15的结果是:? 关系运算 — 比较运算,比较两个操作数 *​ 关系运算符 x < y x <= y x == y x > y x >= y x != y *​ 关系表达式:用关系运算符将2个表达式连接起来的式子。 如:x <= 1 运用关系表达式 表示比较的数学式 C关系表达式 x≤10 x≥10 x≠10 x = 10 2.3.3 if - else语句 if (表达式) 语句1 else 语句2 计算二分段函数 if (表达式) 语句1 else 语句2 源程序 #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) = %.1f\n", 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) = %.1f\n", x, y); return 0; } 软件测试的基本思想 软件测试 精心 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 一批测试用例 [输入数据,预期输出结果] ,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。 2.3.4 格式化输入函数scanf 数据输入:格式化输入函数 scanf #include scanf("%lf", &x); scanf(格式控制字符串, 输入参数1, … , 输入参数n); scanf-格式控制字符串 格式控制字符串: *​  格式控制说明: 按指定的格式输入数据, %… 与数据类型有关 *​ int 型 :%d *​ float 型:%f *​ double 型:%lf *​  普通字符:原样输入 例如: scanf("%lf", &x); 改进例2-3的程序 例2-3 求华氏温度 100°F 对应的摄氏温度。 摄氏温度 C=(5/9)(F-32) #include int main(void) { int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, celsius); return 0; } 2.3.5 常用数学库函数 *​ 库函数 *​ C语言处理系统提供事先编好的函数,供用户在编程时调用。scanf(), printf(), exp() *​ 在相应的系统文件(头文件)中定义一些必需的信息。 *​ #include 命令 *​  用户调用库函数时,将相应的头文件包含到源程序中。 例如 *​  调用scanf, printf, 需要 #include *​  调用sqrt, 需要 #include 常用数学库函数 *​ 平方根函数 sqrt(x) *​ 绝对值函数 fabs(x) fabs(-3.56) 的值为3.56 *​  幂函数 pow(x, n) :xn pow(1.1, 2) 的值为1.21 (即1.12 ) *​  指数函数 exp(x):ex exp(2.3) 的值为e2.3 *​  以e 为底的对数函数 log(x):ln x log(123.45) 的值为4.815836 *​  以10 为底的对数函数 log10(x):log10x log10(123.45) 的值为2.091491 。 例2-5 计算存款的本息 输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。 sum = money ( 1 + rate)year 例2-5 程序 # include # 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; } 调用scanf函数输入多个数据 scanf("%d%d%lf", &money, &year, &rate); 输入:1000 3 0.025 *​ scanf需要多个输入参数和多个格式控制说明 输入参数的类型、个数和位置要与格式控制说明一一对应 ? scanf("%d%lf%d ", &money, &year, &rate); *​  程序运行时,输入的多个数据之间必须有间隔。 2.4 输出华氏-摄氏温度转换表 2.4.1 程序解析 2.4.2 for 语句 2.4.3 指定次数的循环程序设计 2.4.1 程序解析 例2-6输入2个整数lower和 upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加1°F。 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7 2.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 celsius\n"); // 温度重复转换:华氏温度从lower开始,到upper结束,每次增加1°F for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } return 0; } 例2-8中for语句的流程 for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } 2.4.2 for语句-循环语句 for(表达式1;表达式2;表达式3) 循环体语句 实现C 语句的重复执行 for语句中的循环变量 循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行 for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); } for语句的说明 for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); } 复合语句{ }和空语句 ; for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); } 2.4.3 指定次数的循环程序设计 求 1+2+……+100 抽取具有共性的算式:sum = sum + i sum初值为0,该算式重复100次,i从1变到100 设i 为循环变量,则: 指定循环起点的表达式1 :i = 1 给出循环条件的表达式2 :i <= 100 设置循环步长的表达式3 :i++ 循环体语句:sum = sum + i; for(i=1; i<=100; i++) sum =sum+i; 源程序-求 1+2+……+100 /* 计算1 + 2 + 3 + …… + 100 */ #include int main(void) { int i, sum; sum = 0; /* 置累加和sum的初值为0 */ for ( i = 1; i <= 100; i++ ) /* 循环重复100次 */ sum = sum + i; /* 反复累加 */ printf( “sum = %d\n”, sum); /* 输出累加和 */ return 0; } 求 1+1/2+1/3+……+ 1/100 #include int main(void) { int i, sum; sum = 0; for ( i = 1; i <= 100; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0; } 指定次数的循环程序设计 一般包含四个部分: *​  初始化:指定循环起点 *​ 给循环变量赋初值,如i = 1; *​ 进入循环之前,设置相关变量的初值,如sum = 0。 *​  条件控制: *​ 只要i <= 100,循环就继续 *​  工作:指重复执行的语句(循环体)。 *​ 一条语句,可以是复合语句或空语句。如sum = sum + i。 *​  改变循环变量:在每次循环中改变循环变量的值 *​ 如 i++,以改变循环条件的真假。一旦i > 100,循环结束。 例2-7 求 1+2+3+……+n 输入一个正整数n,求前n项和,即循环n次 #include int main(void) { int i, sum; sum = 0; for ( i = 1; i <= 100; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0; } 求1+1/2+1/3+……+ 1/n #include int main(void) { int i, sum; printf(“Enter n: "); scanf("%d", &n); sum = 0; for ( i = 1; i <= n; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0; } 求 1+1/3+1/5+… 的前n项和 求前n项和,即循环n次,每次累加1项。 for (i = 1; i <= n ; i++) sum = sum + item ( 第i 项) item = 1.0 / (2 * i - 1) 源程序-求 1+1/3+1/5+… #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 = %f\n", sum); return 0; } 例2-8 求 1-1/3+1/5-… 的前n项和 求前n项和,即循环n次,每次累加1项。 for (i = 1; i <= n ; i++) sum = sum + item ( 第i 项) item = flag * 1.0 / denominator denominator = denominator + 2 flag = -flag 例2-8 源程序 #include int main(void) { int denominator, flag, i, n; double item, sum; printf(“Enter n: "); scanf ("%d", &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 = %f\n", sum); return 0; } 例2-9 求n! n! = 1*2*…*n for (i = 1; i <= n ; i++) product = product * item ( 第i 项) item=i 例2-9 源程序 #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 = %.0f\n", product ); return 0; } 求 xn 输入实数x和正整数n, 计算xn = x * x * … * x for (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.f\n", power); } 2.5 生成乘方表和阶乘表 2.5.1 程序解析 2.5.2 结构化程序设计思想 2.5.1 程序解析 例2-10(1) 输入一个正整数n,生成一张2的乘方表,输出20到2n的值,可以调用幂函数计算2的乘方。 源程序-生成乘方表 #include #include int main(void) { int i, n; double power; printf("Enter n:"); scanf("%d", &n); for (i = 0; i <= n ; i++){ power = pow(2, i); /* 调用幂函数pow(2,i)计算2的i次方 */ printf("pow(2,%d)= %.0f\n", i, power); } return 0; } 例2-10(2)生成阶乘表 输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。 源程序-生成阶乘表 #include double fact(int n); /* 自定义函数的声明 */ int main(void) { int i, n; double result; printf("Enter n:"); scanf("%d", &n); for (i = 0; i <= n ; i++){ result = fact(i); /* 调用自定义函数fact(i)计算i! */ printf("%d!=%.0f\n", i, result); } return 0; } 2.5.2 结构化程序设计思想 *​ 结构化程序设计(Structured Programming) *​ 程序设计技术 *​ C语言是结构化程序设计语言 *​  强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理。 按自顶向下的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 对问题进行分析、模块化设计和结构化编码等3 个步骤。 自顶向下的分析方法 *​ 把大的复杂的问题分解成小问题后再解决 *​ 面对一个复杂的问题,首先进行上层(整体)的分析,按组织或功能将问题分解成子问题,如果子问题仍然十分复杂,再做进一步分解,直到处理对象相对简单,容易处理为止。 *​ 当所有的子问题都得到了解决,整个问题也就解决了。 *​ 每一次分解都是对上一层的问题进行细化和逐步求精,最终形成一种类似树形的层次结构,来描述分析的结果。 学生成绩统计程序的层次结构图 模块化设计 *​ 将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。 *​ 遵循模块独立性的原则,即模块之间的联系应尽量简单。 *​  一个模块只完成一个指定的功能。 *​  模块之间只通过参数进行调用。 *​  一个模块只有一个入口和一个出口。 *​  模块内慎用全局变量。 结构化编码 选用顺序、选择和循环三种控制结构,使程序具有良好的风格。 *​  对变量、函数、常量等命名时,要见名知意,有助于对变量含义或函数功能的理解。 *​  在程序中增加必要的注释,增加程序的可读性。 *​  程序要清晰易懂,语句构造要简单直接,一行写一条语句,采用缩进格式。 *​  程序有良好的交互性,输入有提示,输出有说明,并尽量采用统一整齐的格式。
本文档为【Chap 2 用C语言编写程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_211561
暂无简介~
格式:doc
大小:119KB
软件:Word
页数:18
分类:计算机考试
上传时间:2011-09-18
浏览量:33