计算机软件基础第二章.ppt_第1页
计算机软件基础第二章.ppt_第2页
计算机软件基础第二章.ppt_第3页
计算机软件基础第二章.ppt_第4页
计算机软件基础第二章.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 顺序结构、选择结构、循环结 构的程序设计 程序设计的三种基本结构 顺序结构用来表示一个操作序列,它的执 行过程是按顺序执行各序列。 选择结构也称分支结构,根据给定条件, 选择执行某个分支操作。 循环结构根据条件重复执行某些操作。 相关基础知识 在使用C语言库函数时,要用预编译命令 “#include“将有关的“头文件“包括到用户到源文件中。 在头文件中包含了与用到的函数有关的信息。 例如使用标准输入输出库函数时,要用到“stdio.h“文件。文 件后缀“h“是head的缩写,#include命令都是放在程序的开头,因 此这类文件被称为“头文件“。在调用标准输入输出库函数时,文 件开头应有以下预编译命令: #include或 #include“stdio.h“ stdio.h是standard intput 括号内包括两部分: (1) “格式控制字符串“是用双引号括起来的字符串,也称“转 换控制字符串“,它包括两种信息: 格式说明,由“%“和格式字符组成,如%d,%f,%c等。它的 作用是将输出的数据转换为指定的格式输出。格式说明总是由 “%“字符开始的。 普通字符,即需要原样输出的字符。例如上面printf函数中双 引号内的逗号、空格、a=和b=。 (2)“输出表列“是需要输出的一些数据,可以是表达式。 常用的有以下几种格式字符: d格式符。用来输出十进制整数。有以下几种用法: %d,按整型数据的实际长度输出。 %md,m为指定的输出字段的宽度。如果数据的位数小于m, 则左端补以空格,若大于m,则按实际位数输出。 %ld,输出长整型数据。如: long a=135790; printf (“%ld“,a); 如果用%d输出,就会发生错误,因为整型数据的范围为 3276832767。对long型数据应当用%ld格式输出。对长整型 数据也可以指定字段宽度,如将上面printf函数中的“%ld“改为 “%8ld“,则输出为: 135790 一个int型数据可以用%d或%ld格式输出。 c格式符 用来输出一个字符。 f格式符 用来输出实数(包括单、双精度),以小数形 式输出。有以下几种用法: %f,不指定字段宽度,由系统自动指定,使整数部 分全部如数输出,并输出6位小数。应当注意,并非 全部数字都是有效数字。单精度实数的有效位数一般 为7位。 %m.nf指定输出的数据共占m列,其中有n位小数 。如果数值长度小于m,则左端补空格。 %-m.nf与%m.nf基本相同,只是使输出的数值向左 端靠,右端补空格。 main( ) float f=123.456; printf(“%fn%10fn%10.2fn%- 10.2fn“,f,f,f,f,f); 输出结果如下: 123456001凵凵123.456001凵凵凵凵凵凵 123.46凵凵123.46凵凵凵凵 二、scanf函数的一般格式 scanf(“格式控制字符串”,地址表列) “格式控制“的含义同printf函数;“地址表列“是由 若干个地址组成的表列,可以是变量的地址,或字符 串的首地址。 scanf(“%d“, (1)可以指定输入数据所占列数,系统自动按它截 取所需数据。 如: scanf(“%3d%3d“, 输入:123456 系统自动将123赋给a,456赋给b。 此方法也可用于字符型: scanf(“%3c“, 如果从键盘连续输入3个字符abc,由于ch只能容纳一个 字符,系统就把第一个字符a赋给ch。 (2)输入数据时不能规定精度, 例如, scanf(“%7.2f“, 是不合法的,不能企图用这样的scanf函数并输入以下数据而 使a的值为12345.67。 1234567 (3)scanf函数中的“格式控制“后面应当是变量地址 ,而不应是变量名。 (4)如果在“格式控制“字符串中除了格式说明以外还 有其它字符,则在输入数据时应输入与这些字符相同 的字符。 如scanf(“%d,%d“, 输入时应用如下形式:3,4 如果是:scanf(“%d凵凵%d“, 输入时两个数据间应空2个或更多的空格字符。如:10凵凵 34或10凵凵凵34 如果是:scanf(“%d:%d“, 输入应该用以下形式: 12:34 如果是:scanf(“a=%d,b=%d“, 输入应为以下形式: a=12,b=34 putchar函数(字符输出函数)的作用是向终端输 出一个字符。 例如: putchar(c); 它输出字符变量c的值。c可以是字符型变量或整型变量 。 getchar函数的作用是从终端(或系统隐含指定的 输入设备)输入一个字符。getchar函数没有参数 ,其一般形式为 getchar( ) 函数的值就是从输入设备得到的字符。 putchar和getchar可以用一行表示: putchar(getchar(); 如getchar( )的值为a,因此putchar函数输出a。 也可以用printf函数输出: printf(“%c“,getchar(); 如果在一个函数中(现为main函数)要调用 getchar函数,应该在该函数的前面(或本文件开 头)加上“包含命令“: #include 顺序结构的例题: 例4: 输入三角形的三边长,求三角形面积 为简单起见,设输入的三边长a、b、c能构成三角形。 从数学知识已知求三角形面积的公式为 area= , 其中s=(a+b+c)/2 据此编写程序为: #include main() float a,b,c,s,area; scanf(“%f,%f,%f“, s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); /*sqrt()是求平方根的函数*/ printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn“,a,b,c,s); printf(“area=%7.2fn“,area); 例5:从键盘输入一个大写字母,要求改用小 写字母输出 如何将一个大写字母转换成小写字母?我 们通过码的形式来进行转换。 includestdio.h main( ) char c1,c2; c1=getchar( ); printf(“%c,%dn“,c1,c1); c2=c1+32; printf(“%c,%dn“,c2,c2); 选择结构选择结构 选择结构选择结构 基础知识基础知识 关系运算符:、=、!=(双目运算符 ) 关系表达式:用关系运算符连接的式子 关系表达式的值只有两个:真为1,假为0 321 逻辑运算符:双目 ); 这种这种if if语句的执行过程见右图语句的执行过程见右图 单分支单分支if if语句语句 b.b. if if(表达式)语句(表达式)语句1 1 else else 语句语句2 2 例如:例如:if(xif(x y)printf(“%d“,xy)printf(“%d“,x); ); else else printf(“%d“,yprintf(“%d“,y); ); 执行过程见图。执行过程见图。 双分支双分支if if语句语句 例例6 6 输入两个实数,按代数值由小到大的次序输出输入两个实数,按代数值由小到大的次序输出 这两个数。这两个数。 main( )main( ) float float a,b,ta,b,t; ; scanf(“%f,%f“, ); if(aif(ab)b) t=a;a=b;b=t; t=a;a=b;b=t; printf(“%5.2f,%5.2f“,a,b); printf(“%5.2f,%5.2f“,a,b); 运行情况如下:运行情况如下: 3.63.6,-3.2-3.2 -3.20-3.20,3.603.60 例例7 7 输入输入3 3个数个数a a、b b、c c,要求按由小到大的顺序输出,要求按由小到大的顺序输出 。 main( )main( ) float float a,b,c,ta,b,c,t; ; scanf(“%f,%f,%f“, ); if(aif(ab)b) t=t=a;aa;a= =b;bb;b=t; =t; 运行情况如下:运行情况如下: if(aif(ac) 3c) 3,7 7,1 1 t= t=a;aa;a= =c;cc;c=t; 1.00=t; 1.00,3.003.00,7.007.00 if(bif(bc)c) t= t=b;bb;b= =c;cc;c=t;=t; printf(“%5.2f,%5.2f,%5.2f“,a,b,c);printf(“%5.2f,%5.2f,%5.2f“,a,b,c); c. ifc. if语句的嵌套语句的嵌套 在在if if语句中又包含一个或多个语句中又包含一个或多个if if语句称为语句称为if if语句的嵌套。一般形语句的嵌套。一般形 式如下:式如下: if ( )if ( ) if ( ) if ( ) 语句语句1 1 内嵌内嵌if if else else 语句语句2 2 else else if ( ) if ( ) 语句语句3 3 内嵌内嵌if if else else 语句语句4 4 应当注意应当注意if if与与elseelse的配对关系。的配对关系。elseelse总是与它上面的最近的总是与它上面的最近的if if配配 对。对。 如果如果if if与与elseelse的数目不一样,为实现程序设计者的要求,可以的数目不一样,为实现程序设计者的要求,可以 加花括号来确定配对关系加花括号来确定配对关系。例如:。例如: if ( )if ( ) if ( ) if ( ) 语句语句1 1 (内嵌(内嵌if if) else else 语句语句2 2 这时这时 限定了内嵌限定了内嵌if if语句的范围,因此语句的范围,因此elseelse与第一个与第一个if if配对。配对。 例例8 8 有一函数:有一函数: -1 (x0) 1 (x0) 编一程序,输入一个编一程序,输入一个x x的值,输出的值,输出y y值值 此题有多种解法,在此列出其中两种:此题有多种解法,在此列出其中两种: 程序程序1 1: main( )main( ) intint x,yx,y; ; scanf(“%d“, ); if(xif(x=0) =0) if(xif(x0) y=1;0) y=1; else y=0;else y=0; else y=-1; else y=-1; printf(“xprintf(“x=%=%d,yd,y=%=%dn“,x,ydn“,x,y); ); 2 2、条件运算符、条件运算符 若若if if语句中,在表达式为语句中,在表达式为“ “真真“ “和和“ “假假“ “时,且都只执行时,且都只执行 一个赋值语句给同一个变量赋值时,可以用简单的条一个赋值语句给同一个变量赋值时,可以用简单的条 件运算符来处理。例如,若有以下件运算符来处理。例如,若有以下if if语句:语句: if (ab) max=a;if (ab) max=a; else max=b; else max=b; 可以用下面的条件运算符来处理:可以用下面的条件运算符来处理: max=(ab)? a : b ;max=(ab)? a : b ; 其中其中“max=(ab)? a : b“max=(ab)? a : b“是一个是一个“ “条件表达式条件表达式“ “。它。它 是这样执行的:如果(是这样执行的:如果(abab)条件为真,则条件表达)条件为真,则条件表达 式取值式取值a a,否则取值,否则取值b b。 条件运算符要求有条件运算符要求有3 3个操作对象,称三目(元)运个操作对象,称三目(元)运 算符,它是算符,它是C C语言中唯一的一个三目运算符语言中唯一的一个三目运算符。条件表。条件表 达式的一般形式为达式的一般形式为 表达式表达式1 1?表达式?表达式2 2 :表达式:表达式3 3 说明:说明: (1 1)条件运算符的执行顺序:先求表达式)条件运算符的执行顺序:先求表达式1 1,若为,若为 非非0 0(真)则求解表达式(真)则求解表达式2 2,此时表达式,此时表达式2 2的值就作的值就作 为整个条件表达式的值。若表达式为整个条件表达式的值。若表达式1 1的值为的值为0 0(假)(假) ,则求解表达式,则求解表达式3 3,表达式,表达式3 3的值就是整个条件的值就是整个条件 表表 达式的值。达式的值。 (2 2)条件运算符优先于赋值运算符。低于关系运)条件运算符优先于赋值运算符。低于关系运 算符和算术运算符。算符和算术运算符。 (3 3)条件运算符的结合方向为)条件运算符的结合方向为“ “自右至左自右至左“ “。如果。如果 有以下条件表达式:有以下条件表达式: ab ? a : cd ? c : dab ? a : cd ? c : d 相当于相当于 ab ? a : (cd ? c : d)ab ? a : (cd ? c : d) 如果如果a=1,b=2,c=3,d=4,a=1,b=2,c=3,d=4,则条件表达式的值等于则条件表达式的值等于4 4 例9 输入一个字符,判断它是否为大写字母,若 是则变成小写字母,若不是则不作处理。最后输 出这个字符。 main() char ch; scanf(“%c“, if(ch=A=3000) c=12; else c=s/250; else c=s/250; switch(cswitch(c) ) case 0: d=0; break; case 0: d=0; break; case 1: d=2; break; case 1: d=2; break; case 2: case 2: case 3: d=5; break; case 3: d=5; break; case 4: case 4: case 5: case 5: case 6: case 6: case 7: d=8; break; case 7: d=8; break; case 8: case 8: case 9: case 9: case 10: case 10: case 11: d=10; break; case 11: d=10; break; case 12: d=15; break; case 12: d=15; break; f=p*w*s*(1-d/100.0); f=p*w*s*(1-d/100.0); printf(“freightprintf(“freight=%15.4f“,f)=%15.4f“,f) ; ; 循环结构循环结构 一、一、whilewhile语句语句 whilewhile语句用来实现语句用来实现“ “当型当型“ “循环结构。其一般形式循环结构。其一般形式 如下:如下: while (while (表达式表达式) ) 语句语句 当表达式为非当表达式为非0 0值时,执行值时,执行whilewhile语句中的内嵌语语句中的内嵌语 句。其流程下图。其特点是:句。其流程下图。其特点是:先判断表达式,后执先判断表达式,后执 行语句行语句。 例11 求 main ( )main ( ) intint i,sumi,sum=0;=0; i=1; i=1; while (i100) break;100) break; printf(“%f“,areaprintf(“%f“,area); ); 计算计算r=1r=1到到r=10r=10时的圆面积,直到面积时的圆面积,直到面积areaarea大于大于 100100为止。从上面的为止。从上面的fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论