资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第2章章 用用C语言编写程序语言编写程序主要内容主要内容温度值转换温度值转换计算分段函数计算分段函数输出华氏输出华氏-摄氏温度转换表摄氏温度转换表生成乘方表与阶乘表生成乘方表与阶乘表教学目标、重点和难点教学目标、重点和难点n教学目教学目标q掌握掌握 C 语言程序的一般言程序的一般结构及构及编写方法写方法q掌握掌握C语言中常量、言中常量、变量、数据量、数据类型、算型、算术运算、运算、赋值运算、关系运算符等,以及格式化运算、关系运算符等,以及格式化输入、入、输出函数的出函数的应用用q了解了解顺序、序、选择和循和循环三种基本的程序三种基本的程序结构构q理解函数的定理解函数的定义和函数的和函数的调用用n教学重点教学重点qC语言程序的基本构成言程序的基本构成q格式化格式化输入、入、输出函数的使用出函数的使用qC语言的基本言的基本语法、三种基本程序法、三种基本程序结构构n教学教学难点点q三种基本的程序三种基本的程序结构以及自定构以及自定义函数函数#include int main() 问题:求华氏温度问题:求华氏温度 100F 对应的摄氏温度对应的摄氏温度n算法:算法:摄氏温度氏温度 C=5*(F-32)/9。int ss, hs; /变量定义变量定义hs= 100; /变量赋值变量赋值ss = 5*(hs - 32) /9; printf(华氏华氏 = %d, 摄氏摄氏 = %dn, hs, ss);return 0;n程序能程序能处理的数据包括:理的数据包括:字符字符、数数值、声音声音、图像像等,等,不同的数据有不同的不同的数据有不同的编码规则和格式,从而形成不同和格式,从而形成不同的的类型型;n数据数据类型型总表表短整型短整型(short int)整型整型(int)长整型长整型(long int)字符型字符型(char)程序中的数据程序中的数据数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型(void)整型整型实型实型单精度型单精度型(float)双精度型双精度型(double)数组类型数组类型()结构体结构体(struct)共用体共用体(union)枚举枚举(emum)类型类型Dev Cchar1 Byte0255 0 (28-1)short int2 Byte-3276832767 -215(215-1)int4 Byte-2 147 483 648 -2 147 483 647 -231(231-1)long int4 Byte-2 147 483 648 -2 147 483 647 -231(231-1)float4 Byte约约(10-381038),6位有效数字位有效数字double8 Byte约约(10-30810308), 15位有效数字位有效数字数据类型数据类型n数据数据类型决定型决定q数据所占内存字数据所占内存字节数数q数据的取数据的取值范范围q数据可参与的运算数据可参与的运算nDev C中基本中基本类型数据在内存中所占的字型数据在内存中所占的字节数数n定定义:值在程序在程序执行行时允允许改改变的量。的量。qC语言程序中的言程序中的变量必量必须“先定先定义,后使用后使用”;q变量定量定义即确定即确定变量名量名和和类型型。n变量定量定义的一般格式的一般格式q数据数据类型型 变量名量名1,变量名量名2,变量名量名n;n变量初始化量初始化q变量定量定义时赋初初值n说明:明:变量变量例如例如: int a,b,c;: int a,b,c; float data; float data; double r1,r2; double r1,r2;例如例如: int a=1,b=1,c=3;: int a=1,b=1,c=3; float data=1.2; float data=1.2; double r1=1.0,r2; double r1=1.0,r2;能否:能否:int a=b=1;int a=b=1;NO变量名命名遵循变量名命名遵循“标识符标识符”规则;规则;同一函数内同一函数内,每个变量都有每个变量都有唯一的名字唯一的名字,不能重复定义。,不能重复定义。n变量与内存的关系量与内存的关系q程序程序编译、运行运行时,系,系统将自将自动根据根据变量的量的类型型为变量在量在内存中分配由内存中分配由其其类型确定的字型确定的字节数数的的连续的内存的内存单元元;变量变量例如:例如: short a=1;short a=1; 1a20002001内存单元内存单元内存地址内存地址变量的值变量的值a=a+2;a=a+2;变量名变量名3q从变量中取值从变量中取值,实际上就是通过实际上就是通过变量名找到相应的内存单元变量名找到相应的内存单元,并从该内存单元读取数据。并从该内存单元读取数据。q变量名变量名即代表其分配的即代表其分配的内存单元内存单元,变量的值变量的值即内存单元中即内存单元中存放的数据存放的数据,内存单元是确定的,其中的数据是可变的,内存单元是确定的,其中的数据是可变的;n整型常量整型常量q十十进制制:由数字:由数字09和正和正负号号组成成.如如123,-456,0q八八进制制:由数字:由数字0开开头,后跟数字后跟数字07组成成.如如0123, 072q十六十六进制制:由:由0x开开头,后跟后跟09,af,AF组成成. 如如0x123, 0XaFn实型常量型常量q小数形式小数形式:必必须有小数点。有小数点。如:如:0.12 .12 0.0 123.q指数形式指数形式:系数系数e(或或E)指数。指数。如:如:0. 12e3 1E-2 1.2e4 ne e前前有数字有数字,e,e后为整数后为整数 例如:例如:e-5e-5、1.2E3.51.2E3.5数值常量数值常量例题:以下表示错误的整型常量有例题:以下表示错误的整型常量有+123、086、-3F、-0x01af、0Xe1g算术运算与赋值运算算术运算与赋值运算n基本算基本算术运算符运算符q+、 - 、*、 /、 %(求余)(求余)n说明明q“-”为单目运算符目运算符时,表示取表示取负;q两整数相除,两整数相除,结果果为整数整数,舍去小数部分;舍去小数部分;q%要求两要求两侧均均为整型整型数据数据;q一个一个为浮点数浮点数,则运算运算结果果为double型型;例如例如:5%2 =:5%2 = 1%5 = 1%5 = 5%1 = 5%1 = 5.5%2 5.5%2例如例如:5/2 = :5/2 = -5/3 = -5/3 = 1/3 = 1/3 =2-1例如例如:b=1;:b=1; a=-b+1; a=-b+1; 110运算后运算后: :a=0,b=10算术运算与赋值运算算术运算与赋值运算n简单赋值运算符运算符q符号:符号:=q格式:格式:变量量=表达式表达式q作用:将表达式的作用:将表达式的运算运算结果果赋给变量。量。n说明明q左左侧必必须是是变量,量,不能不能是常量或表达式。是常量或表达式。q赋值表达式的表达式的值等于等于变量的量的值 。q赋值运算允运算允许嵌套,运算方向:嵌套,运算方向:自右向左自右向左。例例如如:int a,b;:int a,b; a=65; a=65; b=(a*2+10)/3; b=(a*2+10)/3; /b= ?b= ?46例例如如:int a,b,c;:int a,b,c; a=b=c=1; a=b=c=1;例如例如: int a,b,c;: int a,b,c; a=(b=4)+(c=6) a=(b=4)+(c=6) /a=10,b=4,c=6,a=10,b=4,c=6,表达式表达式的的值值为为1010能否能否a=(b=c)=1;a=(b=c)=1;算术运算与赋值运算算术运算与赋值运算n例例题:输入一个入一个3位整数,位整数,计算每位数字之和。算每位数字之和。 #include int main ( ) int n,a,b,c,sum; printf(Input n: ); scanf (%d, &n ); a= ; b= ; c= ; sum=a+b+c; printf(n=%d,sum=%dn,n,sum); return 0; n/100n%100/10n%10格式化输出函数格式化输出函数 printf n格式格式1:printf (字符串字符串) ;q原原样输出字符串出字符串q例如例如:n格式格式2:printf (格式符串格式符串 ,数据数据表表) ;q按格式要求按格式要求输出数据表中出数据表中对应的数据的数据(表达式的表达式的计算算结果果)。q数据表中的数据个数数据表中的数据个数须与与%格式符的个数格式符的个数保持一致。保持一致。q格式串中的格式串中的非格式符原非格式符原样输出出。#include void main( ) printf(tc语言学习无捷径语言学习无捷径,n多看多练是正道多看多练是正道!n);#include void main( ) int a=1; double b=2.0; printf(%d+%lf=%lfn,a,b,a+b);第第2章章 用用C语言编写程序语言编写程序主要内容主要内容温度值转换温度值转换计算分段函数计算分段函数输出华氏输出华氏-摄氏温度转换表摄氏温度转换表生成乘方表与阶乘表生成乘方表与阶乘表问题:计算分段函数问题:计算分段函数n例题:输入用户的月用水量例题:输入用户的月用水量x,分段计算水费,输,分段计算水费,输出该用户应支付的水费出该用户应支付的水费y(保留(保留2位小数)。位小数)。 n计算函数:计算函数:#include int main( ) 问题:计算分段函数问题:计算分段函数n程序:程序:double x, y; /*定义变量定义变量*/printf(x(x=0):); /*输入提示输入提示 */scanf(%lf, &x); /*调用调用scanf函数函数*/if( x = 15 ) /*if else语句语句 */ y = 4 * x / 3; else y = 2.5 * x - 10.5; printf(f(%lf) = %.2lf n, x, y); return 0;.n 表示保留表示保留n位小数位小数(n为整数为整数)n关系运算符及其关系运算符及其优先次序先次序q (小于)(小于)q (大于)(大于)q= (大于或等于)(大于或等于)q= = (等于)(等于)q! = (不等于)(不等于)n关系运算表达式关系运算表达式q用关系运算符将两个用关系运算符将两个表达式表达式连接起来的式子接起来的式子.q关系表达式的关系表达式的计算算结果果为1或或0(1:真真/0:假)假)优先级相同优先级相同优先级相同优先级相同算术运算符算术运算符赋值运算符赋值运算符高高低低关系运算关系运算例如例如:53 :53 结果为结果为真真(1)(1) 55 55 结果为结果为假假(0)(0) 例如:例如:3535、k%5=0k%5=0、a+b!=c*da+b!=c*dn例如:例如:n课堂堂练习int a,b,x=3;a=x0;b=xb=cf2=b+c!=af3=abc/f1=1/f2=0/f3=0赋值表达式:赋值表达式:a=3输出输出3 3nif-else 语句形式句形式n说明明q条件表达式条件表达式为非非0值则表示表示“真真”,0值则表示表示“假假”q条件条件为真真,执行行语句A (一条一条语句句:简单语句或复合句或复合语句句) ; q否否则执行行语句B (一条一条语句句:简单语句或复合句或复合语句句) 。q若条件不成立情况下不作若条件不成立情况下不作处理,理,则else子句可以缺省子句可以缺省。ifelse语句语句if (条件) 语句语句A;A;else 语句语句B;B;非非0 0条件条件语句语句A A0 0语句语句B B;n程序程序试分析以下程序的输出试分析以下程序的输出#include stdio.hvoid main() int a=6,b=0,c=0; if( a%20 ) b = b + a; c = c + 1; a = a + 1; if( a%20 ) b = b + a; c = c + 1; a = a + 1; printf (%d,%d,%dn, a, b, c);复合语句复合语句else子句缺省子句缺省/求求100100以内能被以内能被3 3整除的数的个数及和。整除的数的个数及和。#include void main() int k=1, c=0,s=0; while(k=100) if( ) s=s+ k; c=c+1; k=k+1; printf(“c=%d,s=%dn”,c,s);复合语句复合语句n格式格式 语句句1; 语句句2; 语句句n; n说明明q从从语法的角度看,相当于法的角度看,相当于一条一条语句句;q复合复合语句句可嵌套可嵌套;k%3=0k%3=0格式化输入函数格式化输入函数 scanfn格式:格式:scanf (格式符串格式符串 ,输,输入入项地址表项地址表 ) ;q依次按依次按格式要求格式要求输入数据并赋给对应的变量输入数据并赋给对应的变量.q格式符组成形式:格式符组成形式:q输入项地址表:输入项地址表: &变量变量1,&变量变量2, &变量变量3n说明说明q以以空格空格/回车回车/TAB/非法输入非法输入作为作为每项数据输入的结束。每项数据输入的结束。q格式串中的格式串中的非格式字符要求原样输入非格式字符要求原样输入。% 格式字符格式字符scanf(a=a=%d b=b=%d, &a,&b&a,&b)输入应为:输入应为: a=a=3 b=b=4 若输入若输入3 4则则a、b数据错误!数据错误!scanf(%d, ,%d,&a,&b&a,&b)输入应为:输入应为:3,4 若输入若输入3 4则则b错误!错误!第第2章章 用用C语言编写程序语言编写程序主要内容主要内容温度值转换温度值转换计算分段函数计算分段函数输出华氏输出华氏-摄氏温度转换表摄氏温度转换表生成乘方表与阶乘表生成乘方表与阶乘表输出华氏输出华氏-摄氏温度转换表摄氏温度转换表n问题:输入华氏温度的取值范围问题:输入华氏温度的取值范围lower, upper,输出华氏摄氏,输出华氏摄氏温度转换表,每次增加温度转换表,每次增加1度。度。n程序程序#include void main() int hs,lower,upper; printf(输入华氏温度范围输入华氏温度范围a,b: ); scanf(%d,%d,&lower,&upper); printf(华氏温度华氏温度 - 摄氏温度摄氏温度n); for(hs=lower ; hs=upper ; hs+) printf(%8d - %8.1fn,hs, );hs+ 等价于等价于 hs=hs+1表达式表达式2 2表达式表达式1 1循环体语句循环体语句表达式表达式3 3for循环语句循环语句n语句一般形式句一般形式qfor(表达式表达式1 ; 表达式表达式2 ; 表达式表达式3) 循循环体体语句句n执行流程行流程表达式表达式2 2表达式表达式1 1循环体语句循环体语句非非0 00表达式表达式3 3循环变量值修改循环变量值修改循环变量赋初值循环变量赋初值循环控制条件循环控制条件一条语句一条语句1234; /空语句空语句一条简单或复合语句一条简单或复合语句n程序程序#include void main() int hs,lower,upper; printf(输入华氏温度范围输入华氏温度范围a,b: ); scanf(%d,%d ,&lower,&upper); printf(华氏温度华氏温度 - 摄氏温度摄氏温度n); for(hs=lower ; hs=upper ; hs+) printf(%8d - %8.1fn,hs, );5.0/9*(hs-32)输出华氏输出华氏-摄氏温度转换表摄氏温度转换表按照固定按照固定8位宽度显示位宽度显示hs=upperhs=lowerprintf()hs+n程序程序#include void main() int hs,lower,upper; printf(输入华氏温度范围输入华氏温度范围a,b: ); scanf(%d,%d,&lower,&upper); printf(华氏温度华氏温度 - 摄氏温度摄氏温度n); for(hs=lower ; hs=upper ; hs+) printf(%8d - %8.1fn,hs, ); 输出华氏输出华氏-摄氏温度转换表摄氏温度转换表double ss;ss = 5.0/9*(hs-32);ss 例题:计算例题:计算1-1/3+1/5-1/7前前n项的和。项的和。n分析分析q求前求前n项和,每次累加项和,每次累加1项,则需要项,则需要循环循环n次次;q设设循环变量循环变量 i, i 表示循环的次数,表示循环的次数,s表示累加和,则循环表示累加和,则循环用用for语句可表示为:语句可表示为: for(i=1;i=n;i+) s=s+第第i项项;q设第设第i项为项为item,将累加项的,将累加项的符号单独考虑符号单独考虑,设为,设为flag,则:,则:item=flag*1.0/deno;q因每项的符号正负交替变化,第因每项的符号正负交替变化,第1项为正,则项为正,则flag=1;每次每次循环执行循环执行flag=-1*flag使之反号,使之反号,deno表示每一项的分母,表示每一项的分母,第第1项为项为1,每次循环递增,每次循环递增2,即:,即:deno=deno+2;q也可以通过也可以通过deno与与i之间的关系来确定之间的关系来确定deno的变化规律,的变化规律,表示成表达式即为:表示成表达式即为:deno = 2*i 1;例题:计算例题:计算1-1/3+1/5-1/7前前n项的和。项的和。n算法流程图算法流程图定义定义s=0,n,i,flag,deno输入输入ni=1, flag=1, deno=1;i = ns=s+flag*(1.0/deno)flag = -1* flagi = i+1输出输出sdeno = deno + 2n程序程序#include void main() int n, i, flag , deno;double s=0.0;scanf(%d,&n);flag=1 , deno=1 ;printf(s=%lfn, s);for( i=1 ; i=n ; i+ ) s=s+flag*1.0 / deno; flag= -1* flag; deno = deno +2; (2*i-1);n程序程序#include void main() 例题:计算例题:计算1-1/3+1/5-1/7前前n项的和。项的和。int n,i,flag;double s=0.0;printf(输入输入n:);scanf(%d,&n);flag=1;printf(s=%lfn, s);for( i=1 ; i=2*n-1 ; ) s=s+flag * ( ); flag= -flag; n算法流程图算法流程图定义定义s=0,n,i,flag输入输入ni=1,flag=1;i = 2*n-1i =i+2输出输出ss=s+flag* 1.0 / iflag = - flag1.0 / ii=i+2课堂练习:课堂练习:2-15(P38)n程序程序#include int main() int n, i, flag = 1; double s=0.0; printf(输入输入n:); scanf(%d,&n); for( i=1 ; i=n; i+ ) s=s+flag*(1.0/(3*i-2); flag= -flag; printf(s=%lfn, s); return 0;#include void main() int n, i, flag=1, item = 1; double s=0.0; printf(输入输入n:); scanf(%d,&n); for( i=1 ; i=n; i+ ) s=s+flag*(1.0/item); flag= -flag; item=item+3; printf(s=%lfn, s);第第2章章 用用C语言编写程序语言编写程序主要内容主要内容温度值转换温度值转换计算分段函数计算分段函数输出华氏输出华氏-摄氏温度转换表摄氏温度转换表生成乘方表与阶乘表生成乘方表与阶乘表生成乘方表与阶乘表生成乘方表与阶乘表n问题问题1:输入正整数:输入正整数n,调用,调用pow()函数生成函数生成2的乘方表的乘方表n程序程序#include void main() int i,n; double power; printf(输入输入n: ); scanf(%d,&n); for(i=0 ; i=n ; i+) power=pow(2,i); printf(pow(2,%d)=%.0fn, i, power ); /pow(x,y) : 求求xy的库函数的库函数#include /数学函数库头文件数学函数库头文件常用数学库函数常用数学库函数n平方根函数平方根函数 sqrt(x) n绝对值函数绝对值函数 fabs(x)fabs(-3.56) 的值为的值为3.563.56n幂函数幂函数 pow(x, y) :xypow(1.1, 2) 的值为的值为1.21(即(即1.12)n指数函数指数函数 exp(x):exexp(2.3) 的值为的值为e2.3n以以e e为底的对数函数为底的对数函数 log(x):ln xlog(123.45) 的值为的值为4.8158364.815836n以以1010为底的对数函数为底的对数函数 log10(x):log10xlog10(123.45) 的值为的值为2.0914912.091491。include 详情见附录详情见附录P346生成乘方表与阶乘表生成乘方表与阶乘表n问题问题2:输入正整数:输入正整数n,调用,调用fact()函数生成阶乘表。函数生成阶乘表。n程序程序#include void main() int i, n, jc; printf(输入输入n: ); scanf(%d, &n); for(i=0 ; i=n ; i+) jc=fact(i); printf(%d!=%dn, i, jc); /调用自定义调用自定义fact()函数求函数求i的阶乘的阶乘int fact(int x); /自定义函数声明自定义函数声明n程序程序int fact(int x) int i,result=1; 生成乘方表与阶乘表生成乘方表与阶乘表for( i=1 ; i=x; i+ ) result = result * i;return(result); /或者:或者:return result;课堂练习:课堂练习:2-18(P41)n程序程序#include int fact(int x) /自定义函数声明自定义函数声明(简称函数声明简称函数声明)void main() int n, m, zhs, t; printf(输入输入n,m: ); scanf(%d,%d, &n, &m); if(nm) t=m; m=n; n=t; /m与与n的值交换的值交换 zhs=fact(n)/(fact(m)*fact(n-m) printf(组合数组合数=%dn, zhs);课后作业课后作业n阅读教材第二章;教材第二章;n预习第三章。第三章。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号