ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:90.21KB ,
资源ID:2633360      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2633360.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第3章 三大结构程序设计.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第3章 三大结构程序设计.docx

1、第3章 三大结构程序设计第3章 三大结构程序设计输入原始数据加工处理输出结果知识网络图 多分支 考点分析一、字符输入输出函数切记:在tc中除了scanf( )与printf( )之外,其它输入输出函数在使用前必须在程序的首部使用一条包含命令将头文件“stdio.h”包含到当前程序中来。在vc+中所有输入输出函数在使用前均必须使用包含命令将头文件“stdio.h”包含到当前程序中来。包含命令为: #include stdio.h 或 #include 注意包含命令后无分号。(1) 字符输入函数 getchar( )调用方法: 变量=getchar( );函数功能:从键盘读取单个字符并将读取的单个

2、字符作为函数的返回值赋给变量。(2)字符输出函数putchar(c) 调用方法:putchar(c); 例如:putchar(a); putchar(x61); putchar(96+1);a参数c可以是字符常量、字符变量或整型表达式。函数功能:将参数c对应的字符输出到显示器上。例1:写出程序的输出结果:(31.c)#include stdio.hmain()char a,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);例2:写出程序的输出结果:(32.c)#include stdio.hmain

3、()char a,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);注意:输入单字符时,空格与回车均为有效的字符输入。二、格式输入输出函数 字符输入输出函数只能用来输入输出单个字符,格式输入输出函数能够输入输出各种基本类型的数据,如整型、短整、长整、无符号数、单精度数、双精度数和单个字符。1.格式输入输出函数 (1)格式输入函数 调用方法:scanf(输入格式字符串,输入变量地址表); 函数功能:从键盘按照“输入格式字符串”中规定的格

4、式读取若干个数据,按“输入变量地址表”存放到相应的变量中。函数参数中的输入格式字符串由两类字符组成:普通字符(要求必须原样输入)输入格式字符(以%打头)。输入变量地址表是用逗号分隔的多个变量地址。变量地址可表示为 “&变量名”。 例1:分析程序的功能:(33.c)#include stdio.hmain( )short a,b;scanf(a=%d,b=%d,&a,&b);printf(nn%d,%d,a,b);例2:分析程序的功能:(331.c)#include stdio.hmain( )short a,b;printf(nplease input a,b:);scanf(%d,%d,&a

5、,&b);printf(nn%d,%d,a,b);注意:输入格式控制字符通常为%m字母格式。其中m用于指定输入数据的宽度(例如“%2d%3d”),若省略m则可用非格式字符作为输入数据的间隔(例如“%d,%d”),也可用空格、Tab、回车作为两个输入数据的间隔(例如“%d%d”)。(见例34.c 341.c 342.c)用%c输入单个字符时,空格和回车均作为有效的输入。(2)格式输出函数调用方法:printf(输出格式字符串,表达式序列); 函数功能:按照“输出格式字符串”中规定的格式输出给定各个表达式的值。函数参数中的输出格式字符串由三类字符组成:普通字符(原样输出)转义字符(按相应的含义输出

6、)输出格式字符(以%打头)。表达式序列是用逗号分隔的若干个表达式。注意:表达式序列的计算顺序是自右向左的。例如:若定义了int a=6;则printf(%d,%d,%d,a,a+,+a);的输出结果为8,7,7。需要说明的是:若表达式序列互相不影响,则自左向右计算也不影响结果。如:printf(%d,%d,%d,a+1,a+2,a+3);2格式字符(1)输入格式字符:短整型数据%d%u长整型数据%ld%lu单精度实型数据%f双精度实型数据 %lf (38.c)字符型数据%c(39.c) 字符串数据%s(391.c遇空格、Tab、回车结束)(2)输出格式字符:带符号短整型数据%d带符号长整型数据

7、%ld无符号短整型数据%u无符号长整型数据%lu实型数据%f%lf 字符型数据 %c 字符串数据 %s3.注意输入格式字符与输出格式字符的区别: 输入格式字符中%d%u %ld%lu,而输出格式字符中%d与%u、%ld与%lu是有区别的。例如:unsigned a; int b;scanf(%d,%d,&a,&b); /* 若输入65535,-1时使a为65535、b为-1 */printf(%u,%d,a,b); /* 输出的结果为:65535,-1 */输入格式字符中单精度实型数据与双精度实型数据的控制符有区别(单%f、双%lf),而输出格式字符是没有单双精度的区别,均为%f。例如:(38

8、.c)float a; double b;scanf(%f,%lf,&a,&b); /* 若输入2.3,2.3时使a为2.3、b为2.3 */printf(%f,%f,a,b); /* 输出的结果为:2.300000,2.300000 */输出时可控制实型数据的小数位数(可利用%-m.nf控制输出精度),但输入时不能控制输入精度(即不能利用%m.nf控制输入精度)。(381.c,382.c)%-m.nf m输出总宽:m实际宽度%m.nf 数据右对齐,左补空格 %-m.nf 数据左对齐,右补空格 n小数位数,若省略则默认为6位小数。三、顺序结构例1:输入三角形的三边长,求其面积并输出。分析:1设

9、三边长分别存入变量a、b、c中,面积存入变量s中。 2求解三角形面积的公式为海伦公式:s= 其中d=3数学函数是用c语言系统函数sqrt(x)表示,而数学函数均在头文件math.h中定义的,所以应在程序的首部使用包含命令:#include “math.h”4综上所述,程序中最好定义a,b,c,d,x,s六个实型变量。程序清单如下(sx1.c):#include stdio.h#include “math.h”main()float a,b,c,d,x,s;printf(“nninput a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);d=(a+b+c)/2;x=d*(d

10、-a)*(d-b)*(d-c);s=sqrt(x);printf(“narea:%.2 f”,s);例2:输入一半径,求圆的周长、面积、球的体积并输出。分析:1设半径为r, 圆的周长、面积、球的体积分别存入变量c、s、v中。 2 c=2r s=r2 v=r33圆周率最好用 #define PI 3.141593 定义(PI为符号常量)。4综上所述,程序中最好定义r,c,s,v四个实型变量。程序清单如下:(sx2.c)#include stdio.h#define PI 3.141593main()float r,c,s,v;printf(“nninput r:”);scanf(“%f”,&r)

11、;c=2*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf(“nc=%.2f”,c);printf(“ns=%.2f”,s);printf(“nv=%.2f”,v);例3:输入一3位整数,求各位数字的平方和并输出。 分析:1设输入的3位整数存入变量x中,对x分解的各位数字分别存入变量x1、x2、x3中,分解方法为: x 789x1=x/1%10; 9x2=x/10%10; 8x3=x/100%10; 7 规律为:相应位上的数字=x/位权102设平方和存入变量s中,故应定义个整型变量。3程序清单如下:(sx3.c)#include stdio.hmain()int x,

12、x1,x2,x3,s;printf(“nn input x(100999):”);scanf(“%d”,&x);x1=x%10;x2=x/10%10;x3=x/100%10;s=x1*x1+x2*x2+x3*x3;printf(“ns=%d”,s);例4:输入三个整数,求出最大值并输出。分析:1设三个整数分别存入变量a、b、c中,最大值存入变量m中。 2可以先将a、b中的较大值存入变量m中(m=ab?a:b;),然后将m与c比较,若mc?m:c;或m=mb?a:b; if (ab)m=a; else m=b;m=mc?c:m; if (m=0)的三个系数,求出方程的根并输出。分析:1设一元二次

13、方程的三个系数分别存入变量a、b、c中,两个实根存入变量x1、x2中。 2求解:x1=(b+d)/(2*a); X2=(bd)/(2*a); 其中d=sqrt(b*b-4*a*c)3因为用到了数学函数sqrt(x),所以应在程序的首部使用包含命令:#include “math.h”4综上所述,程序中最好定义a,b,c,d,x1,x2六个实型变量。程序清单如下:(sx5.c)#include stdio.h#include math.hmain()float a,b,c,d,x1,x2;printf(nninput a,b,c:);scanf(%f,%f,%f,&a,&b,&c);d=sqrt(

14、b*b-4*a*c);x1=(-b+d)/(2*a);x2=(-b-d)/(2*a);printf(nx1=%.2f,x2=%.2f,x1,x2);四、选择结构1.单分支:if格式:if (表达式) 语句1;功能:如果表达式为真则执行语句,否则不执行语句。其执行流程如右:说明:若表达式为真时需要执行多条语句,则必须将多条语句写成复合语句形式。语句1;语句2;例1:写出程序的输出结果。(dfz1.c)#include stdio.hmain()int a=4,b=5;if(a4) b+;b+;printf(“n%d”,b);结果为6#include stdio.hmain()int a=4,b=

15、5;if(a4) b+;b+;printf(“n%d”,b);结果为5例2:输入三个整数x,y,z,请把这三个数由小到大输出。分析:1.我们想办法把最小的数放到x中,先将x与y进行比较,如果xy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。然后将y与z比较,若yz则交换,使y为y、z中的较小值。2交换a、b:t=a;a=b;b=t; t=a,a=b,b=t;3.程序清单:(dfz3.c) #include stdio.hmain() int x,y,z,t; printf(“n input x y z:”);scanf(%d%d%d,&x,&y

16、,&z);if (xy)t=x;x=y;y=t; /*交换x,y的值*/ if (xy) t=x,x=y,y=t;,if(xz)t=x;x=z;z=t;/*交换x,z的值*/ if(xz) t=x,x=z,z=t; if(yz)t=y;y=z;z=t;/*交换z,y的值*/ if(yz) t=y,y=z,z=t; printf(n small to big: %d %d %dn,x,y,z);2.双分支:if-else y格式:if (表达式) 语句1;else 语句2;功能:如果表达式为真则执行语句,否则执行语句2。其执行流程如右:说明:若语句或语句2需要多条语句,则必须将它们写成复合语句形

17、式。例:x0 y=2*x x0) y=2*x; if(x0) y=2*x; y=2*x;else y=x*x-1; if(x=0) y=x*x-1; if(x=0&x=300&x=600&x=900) 3, 4,5,6,if (x300) y=2*x; if (x600) if(x900)else if(x600) y=3*x; if(x300) y=2*x; if(x300) y=2*x;else if(x900) y=4*x; else y=3*x; else if(x600) y=3*x; else y=5L*x; else if(x900) y=4*x; else y=4*x; els

18、e y=5L*x; else y=5L*x;方法一(qtdfz1.c)#include stdio.hmain()unsigned short x;long y;printf(nninput x:);scanf(%d,&x);if(x300) y=2*x;else if(x600) y=3*x; else if(x900) y=4*x; else y=5L*x;printf(ny=%ld,y);方法二(qtdfz2.c)#include stdio.hmain()unsigned short x;long y;printf(nninput x:);scanf(%d,&x);if(x600) i

19、f(x300) y=2*x; else y=3*x;else if(x900) y=4*x; else y=5L*x; printf(ny=%ld,y);方法三(qtdfz4.c)#include stdio.hmain()unsigned short x;long y;printf(nninput x:);scanf(%d,&x);if(x900) if(x300) y=2*x; else if(x6) if(b7) if(c8) x=2;else x=3;后x的值是 B A. 0 B. 1 C. 2 D. 3if (a6) if (b7) if(c8) x=2; else x=3;4.多分

20、支:用switch语句实现 格式:switch(表达式) case 常量1: case 常量2:语句组2; break; case 常量n:语句组n; break;default: 语句组n+1; 功能:计算表达式的值,若和常量i相同,则执行语句组i后遇break语句结束。若和所有的常量均不相同,则执行语句组n+1后结束。说明:(1) 表达式的值通常是整型或字符型且表达式的取值互不相同。(2) 此处的break语句是结束switch结构。若省略,则从表达式与常量相等的位置开始执行后面的所有语句组,直到遇下一个break语句结束。(3) 若表达式与多个常量相同时需要执行同一个语句组,则语句组仅需

21、在最后一个case常量的位置出现即可。case 1: case 2:语句组;break; case 1: case 2:语句组;break; (4)该结构特别适合用等式构成条件的多分支结构。(5) default: 语句组n+1;可以省略。 1程序分析题:写出运行结果。(讲完循环结构后再讲该例)#include stdio.hmain()char c;while(c=getchar()!=n)switch(c)case 0: case 1:putchar(c);case 2:putchar(c);break;case 3:putchar(c);break;default:putchar(c+1

22、);printf(n);输入1357并回车【答案】11368【分析】在switch 结构中可以从入口处执行多条语句,直到遇break;才结束。2.编写一个模拟简单计算器的程序,计算表达式:a1 op a2的值,要求a1、op、a2从键盘输入。其中a1、a2(作除数时不能为0)为数值,op为运算符+、-、*、/。【答案】(switch1.c)34*56#include stdio.hmain()float a1,a2;char op;scanf(%f %c%f,&a1,&op,&a2);switch(op) case +: printf(n%f+%f=%f,a1,a2,a1+a2);break;

23、case -: printf(n%f-%f=%f,a1,a2,a1-a2);break;case *: printf(n%f*%f=%f,a1,a2,a1*a2);break;case /: if(a2!=0) printf(n%f/%f=%f,a1,a2,a1/a2); else printf(nwrong1!); break;default:printf(nwrong2!);方法二:(switch2.c)#include stdio.hmain()float a1,a2,y;char op;int f=1; 标志变量scanf(%f %c%f,&a1,&op,&a2);switch(op) case +: y=a1+a2;break;case -: y=a1-a2;break;case *: y=a1*a2;break;case /: if(a2!=0) y=a1/a2; else f=0; break;default:f=-1; if (f= =1) printf(n%.2f%c%.2f=%f,a1,op,a2,y);else if (f= =0)

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2