C语言第二章算法课件.pptx

上传人(卖家):晟晟文业 文档编号:5191476 上传时间:2023-02-16 格式:PPTX 页数:74 大小:454.86KB
下载 相关 举报
C语言第二章算法课件.pptx_第1页
第1页 / 共74页
C语言第二章算法课件.pptx_第2页
第2页 / 共74页
C语言第二章算法课件.pptx_第3页
第3页 / 共74页
C语言第二章算法课件.pptx_第4页
第4页 / 共74页
C语言第二章算法课件.pptx_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、第章第章 基本算法基本算法本章要点本章要点:算法的特征算法的特征算法的表示方法算法的表示方法程序设计的基本算法程序设计的基本算法掌握程序的基本结构掌握程序的基本结构.1 程序与算法程序与算法程序包括程序包括:(1)对数据的描述对数据的描述 数据结构数据结构 (2)对数据处理的描述对数据处理的描述 算法算法算法算法(algorithm)是对特定问题求解步骤是对特定问题求解步骤的一种描述。的一种描述。可将程序总结为:可将程序总结为:程序程序=算法算法+数据结构数据结构+程序设计方法程序设计方法+语言工具和环境语言工具和环境C语言算法的主要特点如下:语言算法的主要特点如下:1.有穷性一个算法应该包含

2、有限的操作步骤,而不有穷性一个算法应该包含有限的操作步骤,而不能是无限的。能是无限的。2.确定性算法中的每一个步骤应当是确定的,而不确定性算法中的每一个步骤应当是确定的,而不应当是含糊的(多义性),应是十分明确无误的。应当是含糊的(多义性),应是十分明确无误的。3.有有0个或多个输入。个或多个输入。4.有一个或多个输出。有一个或多个输出。5.有效性算法中的每一个步骤都应当有效的执行,有效性算法中的每一个步骤都应当有效的执行,并得到确定的结果。并得到确定的结果。.2 算法的特征算法的特征 3.3 算法的表示方法算法的表示方法(1)自然语言描述法自然语言描述法(2)传统的流程图表示传统的流程图表示

3、 常用符号有常用符号有:(3)N-S流程图表示流程图表示(4)伪代码表示算法伪代码表示算法(5)计算机语言表示算法计算机语言表示算法起止框输入/输出框判断框处理框流程线连接点一、顺序结构一、顺序结构 BA (a)AB (b)先执行A操作,再执行B操作,两者是顺序执行关系。N-S结构流程图结构化程序设计的三种基本机构结构化程序设计的三种基本机构二、选择结构二、选择结构当P条件为真时,执行A模块,否则执行B模块。APB真假(a)P真假AB(b)三、循环结构三、循环结构当P条件成立时,反复执行A,直到P为假。1.当型循环结构当型循环结构PA假真(a)当P为真A(b)当P为真2.2.直到型循环结构直到

4、型循环结构先执行先执行A操作,再判断操作,再判断P是否为假,若是否为假,若P为假,再执为假,再执行行A,直到,直到P为真为止。为真为止。AP假真(a)A直到直到P为真为真 (b)算法举例算法举例1:对一个大于:对一个大于2的正整数,判断它是不是一个素数。的正整数,判断它是不是一个素数。方法:将方法:将 n(其中其中n 2)作为被除数,作为被除数,将将2 到(到(n-1)各个整数轮各个整数轮流作为除数,如果都不能被整除,则流作为除数,如果都不能被整除,则n为素数。为素数。算法表示如下:算法表示如下:S1:输入:输入n的值的值S2:2 i (i 作为除数)作为除数)S3:n 被被 i 除,得余数除

5、,得余数 rS4:如果如果 r 等于等于 0,表示表示 n 能能 被被 i 整除,则打印整除,则打印 n“不是素不是素数数”,算法结束;否则执行,算法结束;否则执行S5S5:i+1 i S6:如果如果 i n-1,返回返回S3;否则,打印;否则,打印 n“是素数是素数”,算法结束。,算法结束。算法举例算法举例2:求:求 1-1/2+1/3 1/4+1/99 1/100。S1:1 signS2:1 sumS3:2 denoS4:(-1)*sign signS5:sign*(1/deno)termS6:sum+term sumS7:deno+1 denoS8:若若deno 100 返回返回S4;否

6、则算法结束。;否则算法结束。算法举例算法举例3:用伪代码表示算法:用介于自然语言和计算用伪代码表示算法:用介于自然语言和计算机语言之间的文字和符号来描述算法机语言之间的文字和符号来描述算法 BEGIN 1 =i while(i 50)input ni和和gi i+1=i 1 =i while(i 50)if(gi =80)print ni和和gi i+1=i END 算法举例算法举例4:用计算机语言表示算法用计算机语言表示算法 求 1-1/2+1/3 1/4+1/99 1/100。S1:1 sS2:1 sumS3:2 dS4:(-1)*s sS5:s*(1/d)tS6:sum+t sumS7:

7、d+1 dS8:若若d 100 返回返回S4;否则算法结束。;否则算法结束。main()int s=1;float d=2.0,sum=1.0,t;while(d=100)s=-s;t=s/d;sum=sum+t;d=d+1;printf(“%f”,sum);.小结小结(1)算法是程序的灵魂,计算机程序设计的实质是算法的设计算法是程序的灵魂,计算机程序设计的实质是算法的设计。(2)C语言算法的特点是:语言算法的特点是:有穷性有穷性 确定性确定性 有有0个或多个输入个或多个输入 有一个或多个输出有一个或多个输出 有效性有效性(3)算法的表示算法的表示 用自然语言表示用自然语言表示 用流程图表示算

8、法,三种最基本的程序设计算法用流程图表示算法,三种最基本的程序设计算法为:顺序结构,选择结构和循环结构。为:顺序结构,选择结构和循环结构。3.5 C语句介绍语句介绍一、一、C程序结构程序结构C程序程序源程序文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n 预处理命令预处理命令全局变量声明全局变量声明函数函数1函数函数n 函数首部函数首部函数体函数体局部变量声明局部变量声明执行语句执行语句二、二、C语句概述语句概述C语句分类语句分类:1.控制语句控制语句 2.函数调用语句函数调用语句 3.赋值语句赋值语句 4.空语句空语句 5.复合语句复合语句 一条完整的C语句必须以“;”结束。“;

9、”是一个语句不可缺少的一部分。1.1.控制语句控制语句:完成一定的控制功能。完成一定的控制功能。C C 有有9 9种控制语句:种控制语句:if()else if()else (条件语句)(条件语句)for()for()(循环语句)(循环语句)while()while()(循环语句)(循环语句)do while()do while()(循环语句)(循环语句)continue continue (结束本次循环语句)(结束本次循环语句)break break (中止执行(中止执行switchswitch或循环语句)或循环语句)switch switch (多分支选择语句)(多分支选择语句)goto

10、goto (转向语句)(转向语句)return return (从函数返回语句)(从函数返回语句)2.2.函数调用语句函数调用语句 由一次函数调用加一个“;”构成。如:如:printf(“Hello World!”);函数调用函数调用分号分号3.3.赋值语句赋值语句 由表达式加上由表达式加上“;”构成。构成。如:如:x+4*y;算术表达式语句算术表达式语句 4*7,4+8;逗号表达式语句逗号表达式语句 x=4*7;赋值表达式语句赋值表达式语句(赋值语句赋值语句)4.4.空语句空语句 由一个由一个“;”构成。构成。即:即:;作用:程序转向点;作用:程序转向点;什么也不做的循环体。什么也不做的循环

11、体。while(ix2)y=x1*x1+x2;printf(y=%d,y);不能省略不能省略不能加不能加“;”说明说明:(1)复合语句中的每一个语句还可以是复合语句;复合语句中的每一个语句还可以是复合语句;(2)复合语句尽管可由多个语句组合,但它只相当于一复合语句尽管可由多个语句组合,但它只相当于一个语句,在任何单一语句可以存在的地方,复合语句都可个语句,在任何单一语句可以存在的地方,复合语句都可以存在。以存在。(3)在复合语句内,不仅可以有执行语句,还可以有定在复合语句内,不仅可以有执行语句,还可以有定义部分,定义部分应该出现在可执行语句的前面。义部分,定义部分应该出现在可执行语句的前面。3

12、.6 顺序结构程序设计顺序结构程序设计 (顺序结构)(选择结构)(循环结构)特点特点:程序按语句从上到下的排列顺序依此执:程序按语句从上到下的排列顺序依此执 行,每条语句必须执行且只能执行一次,行,每条语句必须执行且只能执行一次,没有执行不到或执行多次的语句。没有执行不到或执行多次的语句。例如:例如:已知圆柱体半径已知圆柱体半径6 6米,高米,高7 7米,求体积。米,求体积。#define PI 3.1415main()float r,h,s,v;r=6;h=7;s=PI*r*r;v=s*h;printf(“V=%fn”,v);例例3.1 3.1 输入三角形的三条边,求三角形的面积。输入三角形

13、的三条边,求三角形的面积。分析:已知三角形的三条边 a,b,c。求解三角形的面积area。计算公式设 s=(a+b+c)/2 area=)(*)(*)(*csbsass开始开始给给a,b,ca,b,c赋值赋值计算计算s=(a+b+c)/2s=(a+b+c)/2计算计算area=area=)(*)(*)(*csbsass结果输出结果输出结束结束#include main()float a,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%f b=%f c=%f s=

14、%f”,a,b,c,s);printf(“area=%f”,area);例例3.2 3.2 从键盘输入一个大写字母,要求改用小写字母输出。从键盘输入一个大写字母,要求改用小写字母输出。分析分析:已知:已知字符变量字符变量c1c1为大写字母。为大写字母。求解求解将字符变量将字符变量c2c2中放入相应的小写字母。中放入相应的小写字母。计算公式计算公式c2=c1+32 (c2=c1+32 (小写改成大写字母?)小写改成大写字母?)开始开始计算计算c2=c1+32c2=c1+32输出输出c1结束结束输入一大写字母输入一大写字母放入放入c1中中输出输出c2#include main()char c1,c

15、2;c1=getchar();/*键盘输入一个大写字母*/printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);输入输入:A 输出输出:A,65 a,97 例例3.3 3.3 求求ax2+bx+c=0ax2+bx+c=0的根,的根,a a,b b,c c由键盘输入,设由键盘输入,设 b b2 2-4ac0-4ac0#include main()float a,b,c,disc,x1,x2,p,q;scanf(%f%f%f,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p

16、+q;x2=p-q;p r i n t f(”x 1=%f x2=%f,x1,x2);运行情况运行情况:a=1,b=3,c=2x1=-1.000000 x2=-2.000000例例3.4 3.4 输入一个三位数,依次输出该数的符号和百号,十位,个输入一个三位数,依次输出该数的符号和百号,十位,个位数字位数字。#include#include main()char c1,c2,c3,c4;int x;scanf(“%d”,&x);/*输入一个三位数输入一个三位数*/c4=(x=0?+:-);/*将将x的符号存入的符号存入c4中中*/x=abs(x);/*求三位数的绝对值求三位数的绝对值*/c3=

17、x%10+48;/*获得个位数字,加获得个位数字,加48后转换为对应的字符后转换为对应的字符*/x=x/10;/*获得获得x的前两位的前两位*/c2=x%10+48;/*获得十位数字,加获得十位数字,加48后转换为对应的字符后转换为对应的字符*/c1=x/10+48;/*获得百位数字,加获得百位数字,加48后转换为对应的字符后转换为对应的字符*/printf(“%c%c%c%c”,c4,c1,c2,c3);运行情况运行情况:-345-3 4 53.7 3.7 选择结构选择结构本节要点本节要点关系运算符与关系表达式关系运算符与关系表达式逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式条件运算符与条件

18、表达式条件运算符与条件表达式ifif语句语句switchswitch语句语句本章难点本章难点ifif语句的嵌套语句的嵌套switchswitch语句的使用语句的使用 3.7.1 关系运算符和关系表达式 6 种关系运算符种关系运算符:(小于)(小于)(小于或等于)(小于或等于)(大于)(大于)(大于或等于)(大于或等于)(等于)(等于)!(不等于)(不等于)3.7.1.1 关系运算符关系运算符结合性结合性:自左向右:自左向右 关系运算符的优先次序关系运算符的优先次序 与其它运算符优先级的比较与其它运算符优先级的比较:算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符(高)(高)(低)(

19、低)例如:c=da+b等效于:c=(d(a+b)1.什么是关系表达式?什么是关系表达式?3.7.1.2 关系表达式关系表达式如:(ab)(bc)、ay、s+fd2.关系表达式的值关系表达式的值运算结果运算结果 逻辑值逻辑值 1“真真”,0“假假”如:如:设设 a=3,b=2,c=1 求下面关系表达式求下面关系表达式 的值:的值:cb (a-b)=1 b+ca+b&ab等效于:c=(d(a+b)&(ab)1.什么是逻辑表达式?什么是逻辑表达式?3.7.3 逻辑表达式逻辑表达式用逻辑运算符将逻辑运算对象连结起来的式子用逻辑运算符将逻辑运算对象连结起来的式子。如:(ab)&(bb 2.逻辑表达式的值

20、逻辑表达式的值运算结果运算结果 逻辑值逻辑值(只有假为只有假为0、真为、真为1两种取值两种取值)如:如:53&2|84 b&d值为值为 1值为值为运算对象运算对象 以以数值非数值非0为真、为真、0为假为假注意事项:注意事项:(1)代数式不等式代数式不等式0 x0)&(x5),而不能直接写成而不能直接写成0 x y)z=x;2.双分子语句双分子语句if(表达式表达式)语句语句1 else 语句语句2 执行过程:当表达式的值为“真”(非零)时,执行语句1,否则,执行语句2。如如:if(xy)z=x;else z=y;3.多分子语句多分子语句if(表达式表达式1)语句语句1 else if(表达式表

21、达式2)语句语句2 else if(表达式表达式3)语句语句3 :else if(表达式表达式m)语句语句m else 语句语句n如:if (grade=85)level=A;else if(grade=70)level=B;else if(grade=60)level=C;else level=D;if 语句说明:语句说明:if后面的表达式一般为逻辑表达式或关系表后面的表达式一般为逻辑表达式或关系表 达式,也可以是任意数值类型表达式。达式,也可以是任意数值类型表达式。该语句是合法的:if(3)printf(“ok!”);if 语句中的语句中的“语句语句”为一个简单语句或复合语句。为一个简单语

22、句或复合语句。如:下面程序段是否有错?if (x=0)printf(“X is positive.”);x+;else printf(“X is negative.”);if (x=0)printf(“X is positive.”);x+;else printf(“X is negative.”);4.if 语句的嵌套语句的嵌套 在 if 语句中又包含一个或多个if 语句称为 if 语句的嵌套语句的嵌套。一般形式:if(条件1)if(条件2)语句1 else 语句2else if(条件3)语句3 else 语句4内嵌if内嵌if如:if(x0)if(y0)printf(x0,y0);else

23、 printf(“x0,y0)printf(“x0);else printf(“x=0,y6)if(n12)printf(“6n12”);else printf(“n6)if(n12)printf(“6n12”);else printf(“n=6”);缩缩 排排#inclde main()int x;scanf(“%d”,&x);if(x0)printf(“X is positive.”);x=x+1;else printf(“X is negative.”);缩进缩进缩进用用if 语句实现选择结构举例语句实现选择结构举例 -1;x0 main()int x,y;scanf(%d,&x);if

24、(x0)y=-1;else if(x=0)y=0;else y=1;printf(x=%d y=%d,x,y);例例:托运行李计费。用托运行李计费。用f代表收费,代表收费,w代表重量,并将它们定义代表重量,并将它们定义成实型数。则有关系成实型数。则有关系:w*0.205 (0=w=50)f=w*0.313 (50w200)main()float f,m;printf(“input weight:”);scanf(“%f”,&w);if(w100)f=(w-120)*0.413+10*0.23;else if(w50)f=w*0.313;else f=w*0.205;printf(“w=%f,f

25、=%fn,w,f);3.7.5 条件运算符条件运算符1.条件运算符与条件表达式条件运算符与条件表达式条件表达式的一般形式条件表达式的一般形式:表达式1?表达式2 表达式3如:如:max=(ab)?a:b;若若 a=3,b=2,则则 max=?如:(ab)?a:b 目的目的 简化 if 语句。if(ab)max=a;else max=b;等效于:条件运算符的优先级:条件运算符的优先级:算数运算符算数运算符=关系运算符关系运算符=逻辑运算符逻辑运算符(除!除!)赋值运算符赋值运算符c&cd?a+b:d 等效于等效于:x=(a+b)c)&(cd)?(a+b):d)条件运算符的结合方向条件运算符的结合

26、方向:自右至左自右至左 如:如:ab?a:cd?c:d等效于:等效于:ab?a:(cd?c:d)2.条件表达式与条件表达式与if语句的比较语句的比较 当当if语句中嵌套的语句是赋值语句,而且语句中嵌套的语句是赋值语句,而且两个分支都给同一个变量赋值时,条件表达式两个分支都给同一个变量赋值时,条件表达式能替代能替代if 语句语句。如下面的写法是错误的:如下面的写法是错误的:a0?printf(“abs(a)=%dn”,a):printf(“abs(a)=%dn”,(-1)*a);此语句的本意是:此语句的本意是:if(a0)printf(“abs(a)=%dn”,a);elseprintf(“ab

27、s(a)=%dn”,(-1)*a);可以改写为:可以改写为:printf(“abs(a)=%dn”,a0?a:(-1)*a);例:把输入字符中的小写字符转换成大写并输出例:把输入字符中的小写字符转换成大写并输出。#include main()char ch;scanf(%c,&ch);ch=(ch=a&chb)?a:b;max=(tc)?t:c;printf(max=%dn,max);3.7.6 switch 3.7.6 switch 语句语句一般形式:一般形式:switch(表达式)(表达式)case 常量表达式常量表达式1:语句序列:语句序列1 case 常量表达式常量表达式2:语句序列:

28、语句序列2 break;:case 常量表达式常量表达式n:语句序列:语句序列n break;default:语句序列:语句序列n+1 此处break用于退出switch语句break;先计算表达式的值,并逐个与其后的常量表达式值相比较;先计算表达式的值,并逐个与其后的常量表达式值相比较;当表达式的值与某个常量表达式的值相等时,即执行其后当表达式的值与某个常量表达式的值相等时,即执行其后的语句;的语句;然后不再进行判断,继续执行后面所有然后不再进行判断,继续执行后面所有case后的语句;后的语句;如表达式的值与所有如表达式的值与所有case后的常量表达式均不相同时,则后的常量表达式均不相同时,

29、则执行执行default后的语句。后的语句。switch语句的执行过程:语句的执行过程:执行过程:执行过程:例如:例如:switch(grade)case A:printf(“85100 ”);case B:printf(“7084 ”);case C:printf(“6069 ”);case D:printf(“60 ”);default:printf(“error”);若若grade=A,输出结果是什么?,输出结果是什么?85100 7084 6069 60 error 用用break语句处理后的程序段:语句处理后的程序段:switch(grade)case A:printf(“85100

30、”);break;case B :printf(“7084”);break;case C :printf(“6069”);break;case D:printf(“60”);break;default:printf(“error”);若若grade=A,输出结果又是什么?,输出结果又是什么?85100完整程序完整程序:main()char grade;printf(“Input grade(A,B,C,D):”);scanf(“%c”,&grade);switch(grade)caseA:printf(“85100”);break;case B:printf(“7084”);break;cas

31、e C:printf(“6069”);break;case D:printf(“60”);break;default:printf(“error!”);break;流程图为:grade输出 “85100”输出 “60”输出 “60-69”输出 “error”输出 “70-84”使用使用switch语句时还应注意以下几点:语句时还应注意以下几点:1.在在case后的各常量表达式的值不能相同,否则会出现错误。后的各常量表达式的值不能相同,否则会出现错误。2.在在case后,允许有多个语句,可以不用后,允许有多个语句,可以不用 括起来。括起来。3.各各case和和default子句的先后顺序可以变动

32、,而不会影响程序子句的先后顺序可以变动,而不会影响程序执行结果。执行结果。4.default子句可以省略不用。子句可以省略不用。5.若判断的是一个区间,要将区间转换成单个值。若判断的是一个区间,要将区间转换成单个值。3.7.7 标号语句和标号语句和gotogoto标号语句一般形式:标号语句一般形式:语句标号:语句语句标号:语句例如:例如:end:,该标志符就成了语句标号,但标号不能用数值表该标志符就成了语句标号,但标号不能用数值表示,例如:示,例如:12:,:,3:,:,5:都是错误的。标号可以与变量同:都是错误的。标号可以与变量同名。名。goto语句一般形式:语句一般形式:goto 语句标号

33、;语句标号;goto语句的作用是使程序改变原来的执行顺序,语句的作用是使程序改变原来的执行顺序,而跳到指定的语句上执行。而跳到指定的语句上执行。例如:例如:goto sd;sd:printf(“this is a cat!n”);说明:C语言允许在任何语句前加一个语句标号,作语言允许在任何语句前加一个语句标号,作为为goto语句的目标。给语句加标号的形式:语句的目标。给语句加标号的形式:语句标号:语句语句标号:语句 goto语句是一种非结构化语句,结构化程语句是一种非结构化语句,结构化程序设计方法不提倡使用序设计方法不提倡使用goto语句,因为滥用语句,因为滥用goto语句将使程序流程无规律,

34、可读性差。但语句将使程序流程无规律,可读性差。但也不是绝对禁止使用,只有在能够大大提高程也不是绝对禁止使用,只有在能够大大提高程序效率时才使用。序效率时才使用。且记:不要从循环体外跳到循环体内且记:不要从循环体外跳到循环体内!#include main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(%d,sum);sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050循环初值循环终值循环变量增值循环条件循环体一、例一、例 用用if 语句和语句和goto语句构成循环求语句构成循

35、环求 1+2+3+100。二、用二、用goto语句和语句和 if 语句构成循环语句构成循环计算计算10!并输出结果。!并输出结果。main()int i=1,sum=1;loop:if(i=10)sum=sum*i;i+;goto loop;printf(“10!=%dn”,sum);运行结果:10!=24320本应是:10!=3628800 main()int i=1;long sum=1;loop:if(i=10)sum=sum*i;i+;goto loop;printf(“10!=%ldn”,sum);3.7.8 选择结构程序设计举例选择结构程序设计举例例例 写程序,判断某一年是否闰年。

36、写程序,判断某一年是否闰年。设:设:leap代表闰年信息,代表闰年信息,leap=1闰年,闰年,leap=0 非闰年非闰年不能被4整除非闰年被4整除,但不能被100整除闰年被100整除,又能被400整除闰年其他,非闰年非闰年main()int year,leap=0;scanf(“%d”,&year);/*输入年份值*/if(year%4=0&year%100!=0)|(year%400=0)leap=1;else leap=0;if(leap=1)printf(“%d is leap”,year);else printf(“%d is not leap”,year);main()int ye

37、ar,leap=0;scanf(“%d”,&year);/*输入年份值*/if(year%4!=0)leap=0;else if(year%100!=0)leap=1;else if(year%400!=0)leap=0;else leap=1;if(leap=1)printf(“%d is leap”,year);else printf(“%d is not leap”,year);例例 已知基本运费、货重,以及路程已知基本运费、货重,以及路程(s)和折扣的关和折扣的关系标准如下:系标准如下:s250km 没有折扣 250s500%2折扣 500s1000 5%折扣 1000s2000 8%

38、折扣 2000s=3000)c=12;else c=s/250;/*按按250分类分类*/switch(c)case 0:d=0;break;/*s250*/case 1:d=2;break;/*250s500*/case 2:/*500s750*/case 3:d=5;break;/*750s1000*/case 4:/*1000s1250*/case 5:/*1250s1500*/case 6:/*1500s1750*/case7:d=8;break;/*1750s2000*/case8:/*2000s2250*/case9:/*2250s2500*/case10:/*2500s2750*

39、/case11:d=10;break;/*2750s=3000)d=15;else if(s=2000&s=1000&s=500&s=250&s500)d=2;else d=0;f=p*w*s*(1-d/100.0);printf(“freight=%15.4f”,f);习题习题 给一个不多于给一个不多于5位的正整数位的正整数,要求要求:求出它是几位数求出它是几位数;分分别打印出每一位数字别打印出每一位数字;按逆序打印出各位数字按逆序打印出各位数字,例如原数为例如原数为321,应输出应输出123。#include main()long int num;int n1,n2,n3,n4,n5,bi

40、ts;scanf(“%ld”,&num);if(num9999)bits=5 else if(num999)bits=4;else if(num99)bits=3;else if(num9)bits=2;else bits=1;printf(“bits=%dn”,bits);n5=num/10000;n4=(int)(num-n5*10000)/1000;n3=(int)(num-n5*10000-n4*1000)/100;n2=(int)(num-n5*10000-n4*1000-n3*100)/10;n1=(int)(num-n5*10000-n4*1000-n3*100-n2*10);s

41、witch(bits)case 5:printf(“Every bit is:%d,%d,%d,%d,%dn”,n5,n4,n3,n2,n1);printf(“Reverse is:%d,%d,%d,%d,%dn”,n1,n2,n3,n4,n5);break;case 4:printf(“Every bit is:%d,%d,%d,%dn”,n4,n3,n2,n1);printf(“Reverse is:%d,%d,%d,%dn”,n1,n2,n3,n4);break;case 3:printf(“Every bit is:%d,%d,%dn”,n3,n2,n1);printf(“Revers

42、e is:%d,%d,%dn”,n1,n2,n3);break;case 2:printf(“Every bit is:%d,%dn”,n2,n1);printf(“Reverse is:%d,%dn”,n1,n2);break;case1:printf(“Bit is:%dn”,n1);printf(“Reverse is:%dn”,n1);运行情况:运行情况:12345 Inputbits=5Every bit is:1,2,3,4,5Reverse is:5,4,3,2,1Output3.7 3.7 作业作业题目:输入某年某月某日,判断这一天是这一题目:输入某年某月某日,判断这一天是这一

43、年的第几天?年的第几天?1.程序分析:以程序分析:以3月月5日为例,应该先把前两个日为例,应该先把前两个月的加起来,然后再加上月的加起来,然后再加上5天即本年的第几天,天即本年的第几天,特殊情况,闰年且输入月份大于特殊情况,闰年且输入月份大于3时需考虑多时需考虑多加一天。加一天。p 经常不断地学习,你就什么都知道。你知道得越多,你就越有力量p Study Constantly,And You Will Know Everything.The More You Know,The More Powerful You Will Be写在最后谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way演讲人:XXXXXX 时 间:XX年XX月XX日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言第二章算法课件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|