C语言编写程序

上传人:e****s 文档编号:243692193 上传时间:2024-09-28 格式:PPT 页数:58 大小:733KB
返回 下载 相关 举报
C语言编写程序_第1页
第1页 / 共58页
C语言编写程序_第2页
第2页 / 共58页
C语言编写程序_第3页
第3页 / 共58页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第2章 用C语言编写程序,本章内容,2.1 在屏幕上显示 Hello World!,2.2 求华氏温度 100F 对应的摄氏温度,2.3 计算分段函数,2.4 输出华氏摄氏温度转换表,2.5 生成乘方表与阶乘表,2.1 在屏幕上显示Hello World!,/* 显示“Hello World! */ 注释文本,# include ,int main(void) 主函数,printf (“Hello World! n); 语句结束,return 0;,1.任何程序都有主函数,2.程序由假设干语句组成,3.语句由;结束,输出函数,换行符,2.1 在屏幕上显示一些信息,例2-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;,n表示换新行,2.2 求华氏温度 100F 对应的摄氏温度,摄氏温度 C=( 5/9 )( F-32 ),2.2.1 程序解析,例2-3 求华氏温度 100F 对应的摄氏温度,#include ,int main(void),int celsius, fahr;,变量定义,fahr = 100;,变量使用,celsius =,5 * (fahr - 32) / 9;,printf(fahr =,%d, celsius =,%d,n,fahr,celsius,);,return 0;,fahr =,100, celsius =,37,输出结果,2.2.2 常量、变量和数据类型,讨论:,int celsius, fahr;,celsius = 5 * (fahr - 32) / 9;,数据,常量:在程序运行过程中,其值不能被改变,变量:在程序运行过程中,其值可以被改变,数据类型,常量:5 和 9是整型常量以书写形式确定,变量:在定义时指定( 如:int),常量,变,量,变量的定义,变量定义的一般形式:,类型名 变量名表;,例如:,int,celsius, fahr;,定义整型变量,float,x;,定义单精度浮点型变量,double,area, length;,定义双精度浮点型变量,变量名代表保存数据的,一个单元,存放该变量的值,单元的大小由变量数据类型决定,小写字母;见名知义,double型数据比,float精度高,取值范围大,变量的定义与使用,#include ,int main(void),int celsius, fahr;,fahr = 100,;,celsius = 5 * (,fahr,- 32) / 9;,printf(fahr = %d, celsius = %dn, fahr, celsius);,return 0;,定义变量在程序的开始,一个变量名只能定义一次,先赋值,后引用,先定义,后使用,2.2.3 算术运算和赋值运算,1、算术运算,双目算术运算符:+ - * / %,算术表达式:用算术运算符将运算对象连接起来的符合C语言语法规那么的式子,数学式:(5/9)(F-32),数学式:s(s-a)(s-b)(s-c),C表达式:5,*,(fahr - 32) / 9,C表达式:,s*(s-a)*(s-b)*(s-c),1. 算术运算,注意,/,整数/整数,得,整数,如:1/2 0,9/4 2,5 * (fahr - 32) / 9,?,5 / 9 * (fahr - 32),%,针对,整型,数据,如: 565,941,10040,双目,运算符两侧操作数的,类型要相同,2. 赋值运算 =,赋值表达式,:,用,=,将一个,变量,和一个,表达式,连接起来的式子,例如:,fahr = 100;,celsius =,5 * (fahr - 32) / 9,;,计算=运算符右侧表达式的值,赋给左侧 (必须是),变量,2.2.4 格式化输出函数printf,printf(fahr = %d, celsius = %fn, fahr, celsius);,printf(,格式控制字符串,输出参数1, , 输出参数n,);,用双引号括起来,表示输出的格式,要输出的数据,printf格式控制字符串,普通字符:原样输出,格式控制说明:按指定的格式输出数据,%,int型 :,%d,float double型:,%f,printf(fahr =,%d, celsius =,%d,n, fahr, celsius);,输出:,fahr =,100, celsius =,37,2.3 计算分段函数,2.3.1 程序解析,2.3.2 关系运算,2.3.3 if-else语句,2.3.4 格式化输入函数scanf,2.3.5 常用数学库函数,2.3 计算分段函数,2.3.1 程序解析,例2-4 分段计算水费,分析:,x: 用水量吨/月输入,y: 水费元输出,并保存2位小数,2.3.1 程序解析求分段函数,#include ,int main(void), double x, y;,printf(Enter x (x=0):n);,scanf(,%lf, ,if,(x =0):,9.5,f(9.500000)=12.67,Enter x (x=0):,15,f(15.000000)=20.00,Enter x (x=0):,21.3,f(21.300000)=42.75,2.3.2 关系运算,x = 15的结果? 真 x 取值9.5时,x 、=、 、=、 =、!=,关系表达式用关系运算符将2个表达式连接起来的式子,区分,=,和,=,运用关系表达式,表示比较的数学式,x10,x10,x10,x = 10,C关系表达式,x = 10,x != 10,x = 10,用关系表达式描述条件,判断 x 是否为负数,x 0,判断 x 是否不为零,x != 0,2.3.3 if - else语句,if,(表达式),语句1,else,语句2,if,(x = 15),y = 4 * x / 3;,else,y = 2.5 * x - 10.5;,语句1,表达式,语句2,真,假,计算二分段函数,if( x,!=,0),y = 1/x;,else,y = 0;,源程序,#include ,int main(void),double x, y;,printf(Enter x:n);,scanf(,%lf, ,if(x != 0),y = 1/x;,else,y = 0;,printf( f(,%.2f,) = %.1fn , x, y);,return 0;,Enter x:,2.5,f(2.50)=0.4,Enter x:,0,f(0.00)=0.0,软件测试的根本思想,软件测试,设计一批,测试用例,输入数据,预期输出结果,,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。,if(x != 0),y = 1/x;,else,y = 0;,Enter x:,2.5,f(2.50)=0.4,Enter x:,0,f(0.00)=0.0,2组用例含盖,2.3.4 格式化输入函数scanf,#include ,scanf,(,格式控制字符串,输入参数1, , 输入参数n,);,用双引号括起来,表示输入的格式,变量地址,例:scanf( %lf,&,x);,scanf格式控制字符串,格式控制字符串:,格式控制说明: 按指定的格式输入数据,int型 :,%d,float型:,%f,double型:,%lf,普通字符:原样输入,例如,:,scanf( ,%lf, ,输入:,9.5,scanf( ,x=%lf,&x,);,输入:,x=9.5,尽量不要出现普通字符,改进例2-3的程序,例2-3 求华氏温度 100F 对应的摄氏温度。,#include ,int main(void), int celsius, fahr;,fahr = 100;,celsius = 5 * (fahr - 32) / 9;,printf(fahr = %d, celsius = %dn, fahr, celsius);,return 0;,scanf(%d, ,printf(“Enter fahr: n);,Enter fahr:,100,fahr =100, celsius = 37,2.3.5 常用数学库函数,I/O库函数使用: #include,数学库函数使用: #include,头文件中定义一些必需的信息,头文件包含到源程序中,2.3.5 常用数学库函数,x ,sqrt(x),|x|,fabs(x),fabs(-3.56) 为3.56,x,n,pow(x, n),pow(1.1, 2) 为1.21,e,x,exp(x),exp(2.3) 为e,2.3,ln x,log(x),log(123.45) 为4.815836,log,10,x,log10(x),log10(123.45) 为2.091491。,例2-5 计算存款的本息,money存款金额,year 存期,rate 年利率,sum 到期时本息合计税前,输出保存2,位小数,sum = money ( 1 + rate) year,sum = money * pow(,(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;,Enter money:,1000,Enter year:,3,Enter rate:,0.025,sum = 1076.89,scanf(,%d,%d,%lf,&money, &year,&rate,);?,调用 scanf 函数输入多个数据,scanf(,%d,%d,%lf,&money, &year,&rate,);,输入,:,1000,3,0.025,输入的数,类型,、,个数,和,位置,要与格式控制说明一一对应,scanf( ,%d,%lf,%d,&money,&rate, ,如何输入?,数据间隔符:,一个或多个空格,、回车n,t,2.4.1 程序解析,例2-6 输入2个整数lower和 upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是lower, upper,每次增加,1F,。,fahr celsius,30 -1.1,31 -0.6,32 0.0,33 0.6,34 1.1,35 1.7,2.4 输出华氏摄氏温度转换表,2.4.1 程序解析-温度转换表,#include ,int main(void),int fahr, lower, upper;,double celsius;,printf(Enter lower:);,scanf(%d, ,printf(Enter upper:);,scanf(%d, ,printf(fahr celsiusn);,for (,fahr= lower,;,fahr =upper,;,fahr,+ ), celsius = (5.0 / 9.0) * (fahr - 32);,printf(%d %6.1fn, fahr, celsius); ,return 0;,fahr = fahr+1,重复转换:,从lower开始,到upper结束,每次增加1F,Enter lower:,30,Enter upper:,35,fahr celsius,30 -1.1,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输出?,2.4.2 for语句 循环语句,for ( fahr = lower; fahr = upper; fahr +), celsius = (5.0 / 9.0) * (fahr - 32);,printf(%d %6.1fn, fahr, celsius);,N,y,循环变量赋初值,,仅做一次,赋值表达式,条件表达式,fahr = lower,fahr=upper,转换计算、输出,fahr +,fahr = fahr+2输出?,2.4.2 for语句 循环语句,格式:for ( exp1; exp2; exp3 ),statement,N,y,与终,值比较,增量,步长,循环变量置初值,赋值表达式,仅做一次,赋值表达式,改变控制值,条件表达式,决定循环的继续或结束,exp1,exp2,statement,exp3,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);,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);,?,?,例2-7 求 1+2+100,共性的算式:sum = sum + i,sum初值为0, i从1变到100,重复100次,设i为循环变量,那么:,表达式1:i = 1,表达式2:i = 100,表达式3:i+,循环体语句:sum = sum + i;,for(i=1; i=100; i+),sum =sum+i;,2.4.3 指定次数的循环程序设计,#include ,int main(void), int i, sum;,sum = 0; /* 置累加和sum的初值为0 */,for ( i = 1; i = 100; i+ ) /* 循环重复100次 */,sum = sum + i; /* 反复累加 */,printf( “sum = %dn, sum); /* 输出累加和 */,return 0;,源程序 求 1+2+100,输出:,sum=5050,for( i=1; i=100; i+), sum=0;,sum=sum+i;,?,#include ,int main(void),int i, sum;,sum = 0;,for ( i =1; i = 100; i+ ),sum = sum + i;,printf(“sum=%dn, sum);,return 0;,求 1+1/2+1/3+ 1/100,for( i=1; i=100; i+),sum=sum+,1.0/i,;,int i;,double,sum;,printf( “sum = %fn,sum);,输入一个正整数n,求前n项和,即循环n次,#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+2+3+n,for(i=1; i=,n,; i+),sum=sum+i;,printf(Enter n:);,scanf(%d, ,Enter n:,100,sum = 5050,#include ,int main(void), int i, sum;,printf(Enter n: );,scanf(%d, ,sum = 0;,for ( i = 1;,i = n,; i+ ),sum = sum +,i,;,printf(sum=%dn, sum);,return 0;,求1+1/2+1/3+ 1/n,都需输入n,#include ,int main(void), int i;,double sum;,printf(“Enter n: );,scanf(%d, ,sum = 0;,for ( i = 1;,i= n,; i+ ),sum = sum +,1.0/i,;,printf( sum = %fn, sum);,return 0;,求前n项和,即循环n次,每次累加1项。,for ( i = 1; i = n ; i+),sum = sum +,item,(第i项),item,=,1.0,/ (2 * i - 1),求 1+1/3+1/5+ 的前n项和,#include ,int main(void), int i, n;,double item, sum;,printf(Enter n: );,scanf (%d, ,sum = 0 ;,for ( i = 1; i = n; i+ ) ,item = 1.0 / (2 * i - 1);,sum = sum + item ;,printf ( sum = %fn, sum);,return 0;,源程序求1+1/3+1/5+,for (i = 1; i = n ; i+),sum = sum +,item,;,(,第i项,),例2-8 求 1-1/3+1/5- 的前n项和,或重复:,flag = -flag,item = flag*1.0/(2 * i - 1),重复:,item,= flag * 1.0 / denominator,flag = -flag,denominator = denominator + 2,#include ,int main(void),int denominator, flag, i, n;,double item, sum;,printf(Enter n: );,scanf (%d, ,flag=1;,denominator =1;,sum = 0 ;,例2-8 源程序,#include ,int main(void), int denominator, flag, i, n;,double item, sum;,printf(“Enter n: );,scanf (%d, ,flag=1; denominator =1; sum = 0 ;,for ( i = 1; i = n; i+ ),item = flag * 1.0/ denominator;,sum = sum + item ;,flag = -flag;,denominator = denominator +2;,printf ( sum = %fn, sum);,return 0;,例2-8 源程序,为下次重复准备,n! = 1*2*n,for ( i = 1; i = n ; i+),product = product,*,item,(第i项),例2-9 求 n !,product 初值 = ?,item为 i,1,#include ,int main(void), int i, n;,double product;,printf(input n: n);,scanf (%d, ,product=1;,/* 置阶乘product的初值为1 */,for ( i = 1; i = n; i+ ),/* 循环重复n次,计算n! */,product = product * i ;,printf ( product = %.0fn, product );,return 0;,例2-9 源程序,输入实数x和正整数n,,计算 x,n,= x * x * * x,for (i = 1; i = n ; i+),power = power,*,item,(第i项),求 x,n,?,item=?,#include ,int main(void), int i, n;,double x, power ;,printf(Enter x, n: n);,scanf (%,lf,%d, ,power = 1;,/* 置power的初值为1 */,for ( i = 1; i = n; i+ ),/*重复循环n次*/,power = power * x;,printf( %0.fn, power);,return 0;,源程序求 x,n,2.5 生成乘方表和阶乘表,2.5.1 程序解析,例2-101,输入一个正整数n,生成一张2的乘方表,输出,20, 21, 22,2n的值,可以调用幂函数pow(2,i),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:);,scanf(%d, ,for (i = 0; i = n ; i+), power =,pow(2, i),;,printf(,pow(2, %d)= %.0fn, i, power);,return 0;,Enter n:,4,pow(2,0)= 1,pow(2,1)= 2,pow(2,2)= 4,pow(2,3)= 8,pow(2,4)= 16,例2-102生成阶乘表,输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数,fact(n),计算n!,函数类型是double。,for (i = 0; i = n ; i+),product = fact(i);,/* 调用自定义函数fact(i)计算i! */,输出product的值;,Enter n:,3,0!=1,1!=1,2!=2,3!=6,源程序生成阶乘表,#include ,double fact(int n); /* 自定义函数的声明 */,int main(void), int i, n;,double result;,printf(Enter n:);,scanf(%d, ,for (i = 0; i = n ; i+),result =,fact(i);,/* 调用自定义函数fact(i)计算i! */,printf(,%d!=%.0fn, i, result);,return 0;,Enter n:,3,0!=1,1!=1,2!=2,3!=6,源程序生成阶乘表,double fact( int n) /* 函数首部 */, int i;,double product;,product = 1;,for (i = 1; i = n; i+),product = product * i;,return product; /* 将结果回送主函数 */,2.5.2 结构化程序设计思想,结构化程序设计 (Structured Programming),强调程序设计的风格,程序结构的标准化,提倡清晰的结构,自顶向下方法,分析问题,模块化设计,结构化编码,下层对上层问题细化、逐步求精,将模块组成层次系统:,顶层调用下层,最下层模块完成具体功能,选用,顺序、,选择、,循环控制结构,使程序具有良好的风格,自顶向下的分析方法,复杂的问题,子问题1,子问题2,简单子问题,简单子问题,分解,再分解,解决整个问题,解决所有简单问题,对上一层的问题进行细化和逐步求精,分解,再分解,学生成绩,统计程序,成绩输入,数据计算,数据查找,输出成绩,计算学生,平均分,计算课程,平均分,学生成绩统计程序的层次结构图,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!