1、C语言程序语言程序电子教案电子教案本章内容本章内容学习结构化程序设计方法学习结构化程序设计方法简单语句简单语句选择语句选择语句 一个高质量的程序必须是运行可靠、清晰易读、一个高质量的程序必须是运行可靠、清晰易读、高效率和可适应性及可移植性的。高效率和可适应性及可移植性的。可靠性可靠性为为首位。必须掌握如下几个避免错误的技术首位。必须掌握如下几个避免错误的技术和方法:和方法:正确的程序设计方法正确的程序设计方法 正确性证明正确性证明 校对校对 编译检查编译检查 运行检查运行检查 系统测试系统测试自顶向下的结构程序设计方法自顶向下的结构程序设计方法标识符的合理选择标识符的合理选择程序格式的规范书写
2、程序格式的规范书写 C C语言是结构化程序设计的语言,具有结构化语言的语言是结构化程序设计的语言,具有结构化语言的一系列特征。一系列特征。C C语言的主要结构成分是函数,利用它很容易构造出语言的主要结构成分是函数,利用它很容易构造出相对独立的子系统模块。调用函数时仅需知道它实现相对独立的子系统模块。调用函数时仅需知道它实现什么功能,不必知道其功能是如何实现的,符合结构什么功能,不必知道其功能是如何实现的,符合结构化设计的特点。在书写格式上允许采取逐层缩进的形化设计的特点。在书写格式上允许采取逐层缩进的形式,增强了程序的可读性。式,增强了程序的可读性。#include“stdio.h”#incl
3、ude“stdio.h”void main void main()printf printf(hellon hellon);#include“stdio.h”#include“stdio.h”void main()void main()printf(hellon)printf(hellon);请看下面求圆面积的程序:请看下面求圆面积的程序:#include“stdio.h”#include“stdio.h”#define PI 3.14159#define PI 3.14159void main()void main()float r,area float r,area;r=4;r=4;are
4、a=PI area=PI*r r*r;r;printf(The area is%fn,area);printf(The area is%fn,area);编译连接执行这个程序以后,将输出半径为4 的圆的面积,但不能输出其他不同半径的圆面积scanfscanf函数是从键盘得到输入数据的函数。函数是从键盘得到输入数据的函数。scanfscanf函数的一般格式为:函数的一般格式为:scanf(“scanf(“输入控制输入控制”,输入数据表列,输入数据表列);(1)(1)“输入控制输入控制”的含义与的含义与printfprintf函数的函数的“输出输出 控制控制 相同相同(2)(2)输入数据表列是一个
5、或多个用逗号分隔的变输入数据表列是一个或多个用逗号分隔的变量的地址或字符串的首地址量的地址或字符串的首地址,变量的地址可变量的地址可以通过地址运算符以通过地址运算符&得到。例如,得到。例如,r r的地址的地址就是就是&r&r。#include“stdio.h”#include“stdio.h”#define PI 3.14159#define PI 3.14159void main()void main()float r,area float r,area;scanf(%f,&r)scanf(%f,&r);area=PIarea=PI*r r*r r;printf(The eara is%fn
6、,area)printf(The eara is%fn,area);从键盘输入r的值地址运算符#include“stdio.h”#include“stdio.h”void main()void main()int a1,a2;float a3;int a1,a2;float a3;printf(Please enter a value of a1:)printf(Please enter a value of a1:);scanf(%d,&a1);/scanf(%d,&a1);/*从键盘输入从键盘输入a1a1的值的值*/printf(Enter a value of a2:);printf(E
7、nter a value of a2:);scanf(%d,&a2);/scanf(%d,&a2);/*从键盘输入从键盘输入a2a2的值的值*/printf(Enter a value of a3:);printf(Enter a value of a3:);scanf(%f,&a3);/scanf(%f,&a3);/*从键盘输入从键盘输入a3a3的值的值*/printf(a1=%d,a2=%d,a3=%fn,a1,a2,a3);printf(a1=%d,a2=%d,a3=%fn,a1,a2,a3);#include“stdio.h”#include“stdio.h”void main()vo
8、id main()int a1,a2;float a3;int a1,a2;float a3;printf(Please enter value of a1,a2,a3:);printf(Please enter value of a1,a2,a3:);scanf(%d%d%f,&a1,&a2,&a3);scanf(%d%d%f,&a1,&a2,&a3);printf(a1=%d,a2=%d,a3=%fn,a1,a2,a3);printf(a1=%d,a2=%d,a3=%fn,a1,a2,a3);数据输入方式数据输入方式:(c)123:(c)123回车回车 (a)123 456 7.89 45
9、6(a)123 456 7.89 456回车回车 (b)123TAB456TAB7.89 7.89(b)123TAB456TAB7.89 7.89回车回车#include“stdio.h”#include“stdio.h”void main()void main()float a,b,c,t;float a,b,c,t;scanf(%f,%f,%f,&a,&b,&c);scanf(%f,%f,%f,&a,&b,&c);t=(ab)?a:b;t=(ab)?a:b;printf(%fn,(tc)?t:c);printf(%fn,(tc)?t:c);输入输入:2.5,6.7,8.32:2.5,6.7
10、,8.32结果结果:8.320000:8.320000 字符输入函数字符输入函数getchar()getchar()是专门用于输入一个是专门用于输入一个字符常量的函数。字符常量的函数。它没有参数,函数的值就是从键盘输入的一个它没有参数,函数的值就是从键盘输入的一个字符。字符。使用使用getchar()getchar()函数之前,必须用函数之前,必须用#include#include包包含含“stdio.h”stdio.h”。【例例3.63.6】编程序判断输入的字符是否为编程序判断输入的字符是否为aa,若是,若是 ,则输出,则输出aa,否则输出,否则输出NN。程序如下:程序如下:#include
11、 stdio.h#include stdio.h void main()void main()char c;char c;printf(%c,(c=getchar()=a)?c:N);printf(%c,(c=getchar()=a)?c:N);输入输入:a :a 输入输入 :b:b 输出输出:a :a 输出输出 :N:N 与与getchar()getchar()相对应,相对应,putchar()putchar()是字符输是字符输出函数,它向标准设备出函数,它向标准设备(通常是显示器通常是显示器)输出输出一个字符一个字符例如:例如:putchar(c)putchar(c);/*输出字符变量输出
12、字符变量c c的值的值*/注意注意:与与getchar()getchar()一样,使用一样,使用putchar()putchar()之前必之前必须用须用#include#include包含包含“stdio.h”stdio.h”。#include stdio.h#include stdio.h void main()void main()char c;char c;c=getchar();/c=getchar();/*putchar(getchar();putchar(getchar();*/putchar(c);putchar(c);键盘输入键盘输入:a :a 键盘输入键盘输入:A:A屏幕输出
13、屏幕输出:a :a 屏幕输出屏幕输出:A:A 在第二章中已经学习了在第二章中已经学习了C C语言中众多的表达式。语言中众多的表达式。在每一种表达式的后面加一个分号,都可以构成在每一种表达式的后面加一个分号,都可以构成一个最简单的语句一个最简单的语句表达式语句。表达式语句。例如例如:表达式表达式 表达式语句表达式语句 a=a+ca=a+c*(d+3)a=a+c(d+3)a=a+c*(d+3)(d+3);a+b+c a+b+ca+b+c a+b+c;i+i+i+i+;例如例如:函数调用也是表达式,在其后加一个分函数调用也是表达式,在其后加一个分号,就变成了函数调用语句。号,就变成了函数调用语句。例
14、:例:printfprintf函数调用语句函数调用语句 scanfscanf函数调用语句函数调用语句小结小结:在表达式之后加一个分号,从而构成一在表达式之后加一个分号,从而构成一个语句,这是个语句,这是C C语言的一个特色。它使语言的一个特色。它使C C语语言的程序设计的表达能力更强。言的程序设计的表达能力更强。定义定义:用花括号括起来的程序段就是一个复合用花括号括起来的程序段就是一个复合语句。语句。例如:例如:a=1.0;a=1.0;b=2.0;b=2.0;i+;i+;用用C C语言求解实际问题时,经常会遇到要进行判断语言求解实际问题时,经常会遇到要进行判断的情况。的情况。例如:从键盘输入圆
15、半径的值。如果输入的值大于例如:从键盘输入圆半径的值。如果输入的值大于等于等于0 0,则程序就计算圆的面积;如果输入的值小于,则程序就计算圆的面积;如果输入的值小于0 0,则显示错误信息,以提醒用户纠正输入的错误。,则显示错误信息,以提醒用户纠正输入的错误。像这样根据条件判断决定其后的动作,在像这样根据条件判断决定其后的动作,在C C语言中可语言中可以使用以使用ifif条件语句来实现。条件语句来实现。C C语言语言 中中ifif条件语句有三种结构形式,它们是:条件语句有三种结构形式,它们是:1.if1.if结构结构 2.if-else2.if-else结构结构 3.else-if3.else-
16、if结构结构 ifif结构的一般格式为:结构的一般格式为:if(if(表达式表达式)语句语句 功能:首先计算表达式的值,若其值为非功能:首先计算表达式的值,若其值为非0(0(即即“真真”),则执行表达式后的语句;若其,则执行表达式后的语句;若其值为值为0(0(即即“假假”),则跳过这个语句去执行,则跳过这个语句去执行ifif语句的后继语句。语句的后继语句。注注:if(if(表达式表达式)后面的语句只能是一个语句或一后面的语句只能是一个语句或一个复合语句。个复合语句。假假(0)表达式为真吗?执行语句真真(非非0)入口入口表达式为真吗?执行语句真真(非非0)假假(0)入口入口 ifif结构的功能流
17、程图中棱形框、矩形框和指向线是结构的功能流程图中棱形框、矩形框和指向线是构成流程图的基本元素。构成流程图的基本元素。棱形框:表示对表达式的判断。它有一个入口,两棱形框:表示对表达式的判断。它有一个入口,两 个出口。一个是个出口。一个是“真真”出口,一个是出口,一个是“假假”出口。棱形框中的出口取哪个角为出口。棱形框中的出口取哪个角为 “真真”,哪个角为,哪个角为“假假”是任意的。是任意的。矩形框:表示执行处理的内容。它只能有一个入口矩形框:表示执行处理的内容。它只能有一个入口 和一个出口。和一个出口。带箭头的线:是指向线,表示程序的流向。带箭头的线:是指向线,表示程序的流向。#include
18、stdio.h#include stdio.h void main()void main()float r;float r;printf(Input the radiut:);printf(Input the radiut:);scanf(%f,&r);scanf(%f,&r);if(r0)printf(area=%fn,3.14159 if(r0)printf(area=%fn,3.14159*r r*r);r);#include stdio.h#include stdio.h void main()void main()float r;float r;printf(Input the ra
19、diut:);printf(Input the radiut:);scanf(%f,&r);scanf(%f,&r);if(r=10)printf(Area=%fn,3.14159 if(r=10)printf(Area=%fn,3.14159*r r*r);r);if(r=20)printf(Cycle=%fn,2.0 if(r=20)printf(Cycle=%fn,2.0*3.141593.14159*r);r);分析分析:输入两个实数时,这两个实数的大小顺序是任输入两个实数时,这两个实数的大小顺序是任 意的。但是题中要求输出的顺序是由大到小。意的。但是题中要求输出的顺序是由大到小。若若
20、abab,则先,则先a a后后b b;若;若abab)printf(%f,%f,a,b);if(ab)printf(%f,%f,a,b);if(ab)printf(%f,%f,b,a);if(ab)printf(%f,%f,b,a);交换变量值的思想:交换变量值的思想:不改变变量名,但变量值可改变的性质。若不改变变量名,但变量值可改变的性质。若a a的值的值大于大于b b的值,则的值,则a a与与b b的值不交换;若的值不交换;若a a的值小于的值小于b b的的值,则两者互相交换值。从而使得无论何时,变量值,则两者互相交换值。从而使得无论何时,变量a a的值始终大于变量的值始终大于变量b b的
21、值。最后,按先的值。最后,按先a a后后b b的顺序输的顺序输出,即可实现按由大到小的顺序输出的功能。出,即可实现按由大到小的顺序输出的功能。实现方法:实现方法:为了能够进行相互交换,必须引进一个临时变量为了能够进行相互交换,必须引进一个临时变量t t。用以下三个赋值语句可实现交换。用以下三个赋值语句可实现交换。t=a;a=b;b=t;/t=a;a=b;b=t;/*t=a,a=b,b=t;t=a,a=b,b=t;*/#include stdio.h#include stdio.h void main()void main()float a,b,t;float a,b,t;printf(Plea
22、se input two numbers:n);printf(Please input two numbers:n);scanf(%f%f,&a,&b);scanf(%f%f,&a,&b);if(ab)if(a(ch2=getchar()if(ch1=getchar()(ch2=getchar()c=ch1;ch1=ch2;ch2=c;c=ch1;ch1=ch2;ch2=c;printf(“%c%cn”,ch1,ch2);printf(“%c%cn”,ch1,ch2);输入输入:ab :ab 输入:ba 输出输出:ab :ab 输出:ab 注意输入方式if-elseif-else结构的一般格式
23、为:结构的一般格式为:if(if(表达式表达式)语句语句1 1 else else 语句语句2 2功能:首先计算表达式的值,若其值为非功能:首先计算表达式的值,若其值为非0 0,则执行语,则执行语 句句1 1,然后跳过语句,然后跳过语句2 2,往下执行,往下执行ifif结构的后继结构的后继 语句;若其值为语句;若其值为0 0,则跳过语句,则跳过语句1 1,执行语句,执行语句2 2,然后往下执行然后往下执行ifif结构的后继语句。结构的后继语句。假(0)表达式为真吗?执行语句1真(非0)入口执行语句2#include stdio.h#include stdio.h void main()void
24、 main()int a,b,max;int a,b,max;scanf(%d,%d,&a,&b);scanf(%d,%d,&a,&b);if(ab)if(ab)max=a;max=a;else else max=b;max=b;printf(Maxnum is%d,max);printf(Maxnum is%d,max);分析:因为对一个正整数,不是奇数就是偶数,只有分析:因为对一个正整数,不是奇数就是偶数,只有 两种选择,故使用两种选择,故使用if-elseif-else结构语句。结构语句。#include stdio.h#include stdio.h void main()void m
25、ain()int number;int number;printf(Input a number for testing:);printf(Input a number for testing:);scanf(%d,&number);scanf(%d,&number);if(number%2=1)/if(number%2=1)/*或或!(n/2!(n/2*2=n)2=n)*/printf(%d printf(%dis odd.n,number);is odd.n,number);else else printf(%d printf(%dis even.n,number);is even.n,n
26、umber);else-ifelse-if结构的一般格式为:结构的一般格式为:if(if(表达式表达式1)1)语句语句1 1 else if(else if(表达式表达式2)2)语句语句2 2 else if(else if(表达式表达式3)3)语句语句3 3 else else 语句语句n n功能:实现多路分支选择,在多种条件下的不同分支功能:实现多路分支选择,在多种条件下的不同分支 中选择一个分支执行。中选择一个分支执行。若表达式若表达式1 1的值为非的值为非 0 0,则执行语句,则执行语句1 1;否则,若表达式;否则,若表达式2 2的值为非的值为非 0 0,则执行语句,则执行语句2 2;
27、最后,在上述表达式的最后,在上述表达式的 值都为值都为0 0的情况下,执行语句的情况下,执行语句n n。注意:注意:每当选择其中一个语句执行完以后,整个每当选择其中一个语句执行完以后,整个else-else-ifif语句就结束了,然后执行语句就结束了,然后执行else-ifelse-if语句的后继语句。语句的后继语句。#include stdio.h#include stdio.h void main()void main()float x,y;float x,y;scanf(%f,&x);scanf(%f,&x);if(x0)if(x0)y=1;y=1;else if(x0)else if(
28、x0)0 (x=0)-1 (x100|score100|score=90)else if(score=90)printf(An);printf(An);else if(score=80)else if(score=80)printf(Bn);printf(Bn);else if(score=70)else if(score=70)printf(Cn);printf(Cn);else if(score=60)else if(score=60)printf(Dn);printf(Dn);else else printf(En);printf(En);#include stdio.h#include
29、 stdio.h void main()void main()int score;int score;printf(Enter a score:);printf(Enter a score:);scanf(%d,&score);scanf(%d,&score);if(score100|score100|score=80&score=80&score=90&score=90&score=60&score=60&score=70&score=70&score0)(i0)的前提下,若的前提下,若i i能被能被2 2整数,则整数,则i i为偶数;若为偶数;若i i不能被不能被2 2整除,则整除,则i
30、i为奇数。为奇数。程序段:程序段:if(i0)if(i0)ifif(i%2=0)(i%2=0)printf(positive and evenn);printf(positive and evenn);elseelse printf(positive and oddn);printf(positive and oddn);嵌套嵌套ifif语句就是在语句就是在ifif语句中包含另一个语句中包含另一个ifif语语句。从语法上讲,句。从语法上讲,ifif语句中所包含的语句是一语句中所包含的语句是一个语句或一个复合语句,这个语句当然也可以个语句或一个复合语句,这个语句当然也可以是另一个是另一个ifif
31、语句,即内嵌语句,即内嵌ifif语句。语句。if(i0)if(i0)if(i%2=0)/if(i%2=0)/*i0&(i%2=0)i0&(i%2=0)*/printf(positive and evenn);printf(positive and evenn);/*正数且偶数正数且偶数*/else /else /*否则否则,i0&(i%2!=0),i0&(i%2!=0)*/printf(postive and not qddn);printf(postive and not qddn);/*正数但非偶数正数但非偶数*/if(i0)if(i0)if(i%2=0)if(i%2=0)printf(P
32、ositive and evenn);printf(Positive and evenn);/*正数且偶数正数且偶数*/elseelse printf(“not positiven”);/printf(“not positiven”);/*负数负数*/#include stdio.h#include stdio.h void main()void main()float a,b,c,max;float a,b,c,max;scanf(%f%f%f,&a,&b,&c);scanf(%f%f%f,&a,&b,&c);if(ab)if(ab)if(ac)if(ac)max=a;max=a;else
33、else max=c;max=c;else else if(bc)if(bc)max=b;max=b;else else max=c;max=c;printf(Max=%fn,max);printf(Max=%fn,max);(1)程序引进了一个中间变量max,用以存 放最大数。(2)嵌套在内层的if语句可以不用花括号括 起来。但为了使结构更清晰,添加花 括号也决不是多余的。#include stdio.h#include stdio.h void main()void main()float a,b,c,max;float a,b,c,max;scanf(%f%f%f,&a,&b,&c);s
34、canf(%f%f%f,&a,&b,&c);if(ab)if(ab)max=(ac)?a:c;max=(ac)?a:c;else else max=(bc)?b:c;max=(bc)?b:c;printf(Max=%fn,max);printf(Max=%fn,max);在在ifif语句中,用语句中,用else-ifelse-if结构可以解决结构可以解决多分支的选择问题。但是,如果判断条多分支的选择问题。但是,如果判断条件太多,程序冗长,逻辑关系就变得不件太多,程序冗长,逻辑关系就变得不够清晰。够清晰。C C语言中提供的语言中提供的switchswitch语句可用语句可用于解决过多分支的问题。
35、于解决过多分支的问题。switchswitch语句的一般格式为:语句的一般格式为:switch(switch(表达式表达式)case case 常量表达式常量表达式1 1:语句块语句块1 1 break break;case case 常量表达式常量表达式2 2:语句块语句块2 2 break break;case case 常量表达式常量表达式n n:语句块语句块n n break break;default:default:语句块语句块n+1 n+1 break;break;(1)(1)执行执行switchswitch语句时,首先计算表达式的语句时,首先计算表达式的 值,然后将此值与值,然
36、后将此值与casecase后面的常量表达后面的常量表达 式的值相比较,如果某个常量表达式的式的值相比较,如果某个常量表达式的 值与它相等,则执行该值与它相等,则执行该casecase后的语句后的语句 块;如果表达式的值与所有常量表达式块;如果表达式的值与所有常量表达式 的值都不相等,则执行的值都不相等,则执行defaultdefault后的语后的语 句块。当执行完某一个句块。当执行完某一个casecase语句块后遇语句块后遇 到到breakbreak或执行完或执行完defaultdefault语句块时,就语句块时,就 跳出跳出switchswitch语句。语句。if(a=1)if(a=1)pr
37、intf(A);printf(A);else if(a=2)else if(a=2)printf(B);printf(B);else if(a=3)else if(a=3)printf(C);printf(C);elseelse printf(D);printf(D);switch(a)switch(a)case 1:printf(A);case 1:printf(A);break;break;case 2:printf(B);case 2:printf(B);break;break;case 3:printf(C);case 3:printf(C);break;break;default:p
38、rintf(D)default:printf(D);switch(a)switch(a)case 1:printf(A)case 1:printf(A);/*此处没有此处没有breakbreak*/case 2:printf(B);case 2:printf(B);break;break;case 3:printf(C);case 3:printf(C);break;break;default:printf(D)default:printf(D);if(a=1)/if(a=1)/*两次输出两次输出*/printf(A);printf(B);printf(A);printf(B);else if
39、(a=2)else if(a=2)printf(B);printf(B);else if(a=3)else if(a=3)printf(C);printf(C);else else printf(D);printf(D);switch(a)case 1:case 2:case 3:printf(A);break;if(a=1|a=2|a=3)printf(A);else if (1)switch(1)switch后的表达式的值一般是整型或字符型。后的表达式的值一般是整型或字符型。(2)case(2)case后的表达式是可以求得整型量或字符型量后的表达式是可以求得整型量或字符型量 的常量表达式。
40、常量表达式中不允许包含有变的常量表达式。常量表达式中不允许包含有变 量和函数调用。量和函数调用。(3)default(3)default通常出现在通常出现在switchswitch的最后部分。但这的最后部分。但这 不是它的唯一位置。不是它的唯一位置。defaultdefault可以出现在可以出现在casecase 之间,甚至出现在所有的之间,甚至出现在所有的casecase之前,但等效之前,但等效 于出现在于出现在switchswitch的最后部分。的最后部分。#include stdio.h#include stdio.h void main()void main()float a,b;fl
41、oat a,b;char optor;char optor;printf(Input values of a,b:);printf(Input values of a,b:);scanf(%f%f,&a,&b);scanf(%f%f,&a,&b);printf(Enter opterator:);printf(Enter opterator:);scanf(%c,&optor);scanf(%c,&optor);switch(optor)case+:printf(%f+%f=%fn,a,b,a+b);break;case-:printf(%f-%f=%fn,a,b,a-b);break;cas
42、e*:printf(%f*%f=%fn,a,b,a*b);break;case/:if(b=0)printf(divided by 0n);else printf(%f/%f=%fn”,a,b,a/b);break;default:printf(Input error!);例例3.21 3.21 某产品的国内销售价,某产品的国内销售价,8080箱以下,箱以下,每箱每箱350350元,超过元,超过8080箱,超过部分每箱,超过部分每 箱优惠箱优惠2020元;国外销售价,元;国外销售价,10001000箱箱 以下,每箱以下,每箱900900元,超过元,超过10001000箱,超箱,超 过部分每箱优
43、惠过部分每箱优惠1515元。试编写计算元。试编写计算 销售额的程序。销售额的程序。#include stdio.h#include stdio.h void main()void main()float money;int national,count;printf(Input national or external:);scanf(%d,&national);printf(Input count of product:);scanf(%d,&count);if(national)if(count=80)money=count*350.0;else money=count*350.0-(co
44、unt-80.0)*20.0;else if(count=1000)money=count*900.0;else money=count*900.0-(count-1000.0)*15.0;printf(tatal=%f,money);【例例3.223.22】设计一个程序的控制菜单,根据输设计一个程序的控制菜单,根据输 入的选择项,程序完成不同的功能。入的选择项,程序完成不同的功能。假设控制菜单的形式为:假设控制菜单的形式为:LL装载文件装载文件 SS保存文件保存文件 EE编辑文件编辑文件 PP打印文件打印文件 XX退出程序退出程序 请输入一个选项:请输入一个选项:#include stdio
45、.h#include stdio.h void main()void main()char key;char key;printf(L printf(L装载文件装载文件n);n);printf(S printf(S保存文件保存文件n);n);printf(E printf(E编辑方式编辑方式n);n);printf(P printf(P打印文件打印文件n);n);printf(X printf(X退出程序退出程序n);n);printf(printf(请输入一个选项:请输入一个选项:);key=getchar()key=getchar();switch(key)switch(key)case
46、case L L:case:case l l:printf(printf(您选择装载文件您选择装载文件.).);break;break;case S:case s:printf(您选择保存文件您选择保存文件.);break;case E:case e:printf(您选择编辑方式您选择编辑方式.);break;case P:case p:printf(您选择打印文件您选择打印文件.);break;case X:case x:printf(您选择退出程序您选择退出程序.);break;defaulf:printf(错误选择错误选择!);【例例3.233.23】编写一个程序求一元二次方程编写一个程
47、序求一元二次方程 axax2 2+bx+c=0+bx+c=0 的根。程序必须对系数的根。程序必须对系数a a、b b、c c的各种可能的各种可能 的情况分别进行处理:的情况分别进行处理:(1)(1)当当a=0a=0、b=0b=0时,则原方程退化,不再是方程了;时,则原方程退化,不再是方程了;(2)(2)当当a=0a=0且且b0b0时,则方程只有一个实根,其值为时,则方程只有一个实根,其值为-c/b c/b;(3)(3)当当a0a0且且c=0c=0时,则方程有两个根,其值分别是时,则方程有两个根,其值分别是-b/a b/a和和0 0;(4)(4)当当a0a0、c0c0时,则方程的根为:时,则方程
48、的根为:当当b b2 2-4ac0-4ac0时,方程有两个实根;时,方程有两个实根;当当b b2 2-4ac0-4ac=0.0)(disc=0.0)printf(Two roots:x1=%lftx2=%lfn,printf(Two roots:x1=%lftx2=%lfn,re+im,re-im);re+im,re-im);elseelse printf(Two complex roots:x1=%lf+I printf(Two complex roots:x1=%lf+I*%lft%lft x2=%lf-I x2=%lf-I*%lfn,re,im,re,im);%lfn,re,im,re,
49、im);本章介绍了本章介绍了C C语言的部分简单语句和选择语句。语言的部分简单语句和选择语句。1.1.在任何表达式的后面加上一个分号,都可以在任何表达式的后面加上一个分号,都可以构成一个表达式语句。构成一个表达式语句。2.2.复合语句在语法上等同于一个语句,它可以复合语句在语法上等同于一个语句,它可以出现在一个语句所允许出现的地方。例如,出现在一个语句所允许出现的地方。例如,出现在出现在ifif语句中。语句中。3.if3.if语句具有三种结构:语句具有三种结构:ifif结构、结构、if-elseif-else结构结构和和else-ifelse-if结构。在结构。在ifif语句中可以嵌套另一个语
50、句中可以嵌套另一个ifif语句,这种形式可以使语句,这种形式可以使ifif语句嵌套到任意语句嵌套到任意深度。深度。4.switch4.switch语句用于多路分支结构,它使得语句用于多路分支结构,它使得程序更加简明清晰。必须注意程序更加简明清晰。必须注意switchswitch语语句中,与句中,与breakbreak语句的配合使用。语句的配合使用。5.5.本章介绍了结构化程序设计的基本概念本章介绍了结构化程序设计的基本概念和基本步骤。使用和基本步骤。使用PADPAD图可以提高结构程图可以提高结构程序的设计、编码、检查和维护的效率。序的设计、编码、检查和维护的效率。6.6.本章中介绍的一个重要算