第3章 三大结构程序设计Word文件下载.docx

上传人:b****2 文档编号:4887879 上传时间:2023-05-04 格式:DOCX 页数:45 大小:90.21KB
下载 相关 举报
第3章 三大结构程序设计Word文件下载.docx_第1页
第1页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第2页
第2页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第3页
第3页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第4页
第4页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第5页
第5页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第6页
第6页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第7页
第7页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第8页
第8页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第9页
第9页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第10页
第10页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第11页
第11页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第12页
第12页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第13页
第13页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第14页
第14页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第15页
第15页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第16页
第16页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第17页
第17页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第18页
第18页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第19页
第19页 / 共45页
第3章 三大结构程序设计Word文件下载.docx_第20页
第20页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第3章 三大结构程序设计Word文件下载.docx

《第3章 三大结构程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《第3章 三大结构程序设计Word文件下载.docx(45页珍藏版)》请在冰点文库上搜索。

第3章 三大结构程序设计Word文件下载.docx

(1)格式输入函数

scanf(输入格式字符串,输入变量地址表);

从键盘按照“输入格式字符串”中规定的格式读取若干个数据,按“输入变量地址表”存放到相应的变量中。

函数参数中的输入格式字符串由两类字符组成:

普通字符(要求必须原样输入)

输入格式字符(以%打头)。

输入变量地址表是用逗号分隔的多个变量地址。

变量地址可表示为“&

变量名”。

分析程序的功能:

(33.c)

main()

{shorta,b;

scanf("

a=%d,b=%d"

&

a,&

b);

printf("

\n\n%d,%d"

a,b);

(331.c)

\npleaseinputa,b:

"

%d,%d"

①输入格式控制字符通常为"

%m字母"

格式。

其中m用于指定输入数据的宽度(例如“%2d%3d”),若省略m则可用非格式字符作为输入数据的间隔(例如“%d,%d”),也可用空格、Tab、回车作为两个输入数据的间隔(例如“%d%d”)。

(见例34.c341.c342.c)

②用%c输入单个字符时,空格和回车均作为有效的输入。

(2)格式输出函数

printf(输出格式字符串,表达式序列);

按照“输出格式字符串”中规定的格式输出给定各个表达式的值。

函数参数中的输出格式字符串由三类字符组成:

普通字符(原样输出)

转义字符(按相应的含义输出)

输出格式字符(以%打头)。

表达式序列是用逗号分隔的若干个表达式。

表达式序列的计算顺序是自右向左的。

例如:

若定义了inta=6;

则printf("

%d,%d,%d"

a,a++,++a);

的输出结果为8,7,7。

需要说明的是:

若表达式序列互相不影响,则自左向右计算也不影响结果。

如:

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   带符号长整型数据    %ld 

无符号短整型数据    %u   无符号长整型数据    %lu  

实型数据     %f %lf  字符型数据   %c    

字符串数据  %s

3.注意输入格式字符与输出格式字符的区别:

①输入格式字符中%d%u%ld%lu,而输出格式字符中%d与%u、%ld与%lu是有区别的。

unsigneda;

intb;

/*若输入65535,-1时使a为65535、b为-1*/

%u,%d"

/*输出的结果为:

65535,-1*/

输入格式字符中单精度实型数据与双精度实型数据的控制符有区别(单%f、双%lf),而输出格式字符是没有单双精度的区别,均为%f。

(38.c)

floata;

doubleb;

%f,%lf"

/*若输入2.3,2.3时使a为2.3、b为2.3*/

%f,%f"

2.300000,2.300000*/

输出时可控制实型数据的小数位数(可利用%-m.nf控制输出精度),但输入时不能控制输入精度(即不能利用%m.nf控制输入精度)。

(381.c,382.c)

%-m.nfm输出总宽:

m<

=实际宽度按实际宽度输出

m>

实际宽度%m.nf数据右对齐,左补空格

%-m.nf数据左对齐,右补空格

n小数位数,若省略则默认为6位小数。

三、顺序结构

输入三角形的三边长,求其面积并输出。

分析:

1设三边长分别存入变量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):

{floata,b,c,d,x,s;

printf(“\n\ninputa,b,c:

”);

scanf(“%f,%f,%f”,&

b,&

c);

d=(a+b+c)/2;

x=d*(d-a)*(d-b)*(d-c);

s=sqrt(x);

printf(“\narea:

%.2f”,s);

输入一半径,求圆的周长、面积、球的体积并输出。

1设半径为r,圆的周长、面积、球的体积分别存入变量c、s、v中。

2c=2лrs=лr2v=

лr3

3圆周率л最好用#definePI3.141593定义(PI为符号常量)。

4综上所述,程序中最好定义r,c,s,v四个实型变量。

程序清单如下:

(sx2.c)

#definePI3.141593

{floatr,c,s,v;

printf(“\n\ninputr:

scanf(“%f”,&

r);

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中,分解方法为:

x789

x1=x/1%10;

9

x2=x/10%10;

8

x3=x/100%10;

7

规律为:

相应位上的数字=x/位权%10

    2设平方和存入变量s中,故应定义5个整型变量。

    3程序清单如下:

(sx3.c)

{intx,x1,x2,x3,s;

printf(“\n\ninputx(100~999):

scanf(“%d”,&

x);

x1=x%10;

s=x1*x1+x2*x2+x3*x3;

printf(“\ns=%d”,s);

例4:

输入三个整数,求出最大值并输出。

1设三个整数分别存入变量a、b、c中,最大值存入变量m中。

2可以先将a、b中的较大值存入变量m中(m=a>

b?

a:

b;

),然后将m与c比较,若m<

c,则将c赋值给m即可(m=m>

c?

m:

c;

或m=m<

c:

m;

)。

程序清单如下:

(sx4.c)

{inta,b,c,m;

printf(“\n\ninputa,b,c:

scanf(“%d,%d,%d”,&

m=a>

 if(a>

b)m=a;

elsem=b;

   

m=m<

if(m<

c)m=c;

printf(“\nmax=%d”,m);

}

例5:

输入一个一元二次方程ax2+bx+c=0(设b2-4ac>

=0)的三个系数,求出方程的根并输出。

1设一元二次方程的三个系数分别存入变量a、b、c中,两个实根存入变量x1、x2中。

2求解:

x1=(-b+d)/(2*a);

X2=(-b-d)/(2*a);

其中d=sqrt(b*b-4*a*c)

3因为用到了数学函数sqrt(x),所以应在程序的首部使用包含命令:

4综上所述,程序中最好定义a,b,c,d,x1,x2六个实型变量。

(sx5.c)

math.h"

{floata,b,c,d,x1,x2;

\n\ninputa,b,c:

%f,%f,%f"

d=sqrt(b*b-4*a*c);

x1=(-b+d)/(2*a);

x2=(-b-d)/(2*a);

\nx1=%.2f,x2=%.2f"

x1,x2);

四、选择结构★

1.单分支:

if

格式:

if(表达式)语句1;

功能:

如果表达式为真则执行语句,否则不执行语句。

其执行流程如右:

                    

说明:

若表达式为真时需要执行多条语句,则必须将

多条语句写成复合语句形式。

{语句1;

语句2;

写出程序的输出结果。

(dfz1.c)

{inta=4,b=5;

if(a>

4)b++;

b++;

printf(“\n%d”,b);

结果为6

4){b++;

结果为5

输入三个整数x,y,z,请把这三个数由小到大输出。

1.我们想办法把最小的数放到x中,先将x与y进行比较,如果x>

y则将x与y的值进行交换,然后再用x与z进行比较,如果x>

z则将x与z的值进行交换,这样能使x最小。

然后将y与z比较,若y>

z则交换,使y为y、z中的较小值。

2交换a、b:

 {t=a;

a=b;

b=t;

}t=a,a=b,b=t;

  3.程序清单:

(dfz3.c)

   #include"

    {intx,y,z,t;

printf(“\ninputxyz:

     scanf("

%d%d%d"

x,&

y,&

z);

     if(x>

y){t=x;

x=y;

y=t;

}/*交换x,y的值*/if(x>

y)t=x,x=y,y=t;

     if(x>

z){t=x;

x=z;

z=t;

}/*交换x,z的值*/if(x>

z)t=x,x=z,z=t;

     if(y>

z){t=y;

y=z;

}/*交换z,y的值*/if(y>

z)t=y,y=z,z=t;

     printf("

\nsmalltobig:

%d %d %d\n"

x,y,z);

2.双分支:

if-else

  y

 

else语句2;

如果表达式为真则执行语句1,否则

执行语句2。

若语句1或语句2需要多条语句,

则必须将它们写成复合语句形式。

例1:

x>

0y=2*x

x<

=0y=x2-1(x是由键盘输入)(sfz1.c)

{intx,y;

\nx="

%d"

if(x>

0)y=2*x;

if(x>

y=2*x;

elsey=x*x-1;

if(x<

=0)y=x*x-1;

\ny=%d"

y);

输入一个5位数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。

程序清单:

(sfz2.c)

{

longge,shi,qian,wan,x;

printf(“\nx=?

%ld"

wan=x/10000%10;

qian=x/1000%10;

shi=x/10%10;

ge=x%10;

if(ge==wan&

&

shi==qian) printf("

\n%ldisahuiwen\n"

x);

else printf("

\n%ldisnotahuiwen\n"

3.多分支:

if-else的嵌套★※

x/300

2*x(x>

=0&

x<

300)0

y=3*x(x>

=300&

600)1

4*x(x>

=600&

900)2

5*x(x>

=900)3,4,5,6,…

if(x<

300)y=2*x;

if(x<

600)if(x<

900)

elseif(x<

600)y=3*x;

900)y=4*x;

elsey=3*x;

elseif(x<

elsey=5L*x;

elsey=4*x;

方法一(qtdfz1.c)

{unsignedshortx;

longy;

\n\ninputx:

if(x<

\ny=%ld"

方法二(qtdfz2.c)

600)

else

方法三(qtdfz4.c)

elsey=5L*x;

方法四:

switch(x/300)

{case0:

y=2*x;

break;

case1:

y=3*x;

case2:

y=4*x;

default:

y=5L*x;

}

给一个不多于5位的正整数,要求:

一、求它是几位数,二、逆序输出各位数字。

1.程序分析:

学会分解出每一位数。

2.程序源代码:

(qtdfz5.c)

longa,b,c,d,e,x;

a=x/10000%10;

/*分解出万位*/

b=x/1000%10;

/*分解出千位*/

c=x/100%10;

/*分解出百位*/

d=x/10%10;

/*分解出十位*/

e=x%10;

/*分解出个位*/

if(a!

=0)printf("

thereare5,%ld%ld%ld%ld%ld\n"

e,d,c,b,a);

elseif(b!

thereare4,%ld%ld%ld%ld\n"

e,d,c,b);

  elseif(c!

thereare3,%ld%ld%ld\n"

e,d,c);

    elseif(d!

thereare2,%ld%ld\n"

e,d);

      elseprintf("

thereare1,%ld\n"

e);

设inta=8,b=7,c=6,x=1;

执行语句if(a>

6)if(b>

7)if(c>

8)x=2;

elsex=3;

后x的值是[B]

A.0 B.1C.2D.3

if(a>

6)

if(b>

7)

if(c>

elsex=3;

4.多分支:

用switch语句实现★※

switch(表达式)

   {case常量1:

case常量2:

语句组2;

break;

 ┇

case常量n:

语句组n;

[default:

语句组n+1;

]

计算表达式的值,若和常量i相同,则执行语句组i后遇break语句结束。

若和所有的常量均不相同,则执行语句组n+1后结束。

(1)表达式的值通常是整型或字符型且表达式的取值互不相同。

(2)此处的break语句是结束switch结构。

若省略,则从表达式与常量相等的位置开始执行后面的所有语句组,直到遇下一个break语句结束。

(3)若表达式与多个常量相同时需要执行同一个语句组,则语句组仅需在最后一个case常量的位置出现即可。

case2:

语句组;

case1:

(4)该结构特别适合用等式构成条件的多分支结构。

(5)default:

可以省略。

1程序分析题:

写出运行结果。

(讲完循环结构后再讲该例)

{charc;

while((c=getchar())!

='

switch(c)

{case'

0'

:

case'

1'

2'

3'

putchar(c+1);

\n"

输入1357并回车

【答案】11368

【分析】在switch结构中可以从入口处执行多条语句,直到遇break;

才结束。

2.编写一个模拟简单计算器的程序,计算表达式:

a1opa2的值,要求a1、op、a2从键盘输入。

其中a1、a2(作除数时不能为0)为数值,op为运算符+、-、*、/。

【答案】

(switch1.c)34*56

{floata1,a2;

charop;

%f%c%f"

a1,&

op,&

a2);

switch(op)

{case'

+'

printf("

\n%f+%f=%f"

a1,a2,a1+a2);

-'

\n%f-%f=%f"

a1,a2,a1-a2);

*'

\n%f*%f=%f"

a1,a2,a1*a2);

/'

if(a2!

\n%f/%f=%f"

a1,a2,a1/a2);

elseprintf("

\nwrong1!

\nwrong2!

方法二:

(switch2.c)

{floata1,a2,y;

intf=1;

标志变量

y=a1+a2;

y=a1-a2;

y=a1*a2;

=0)y=a1/a2;

elsef=0;

f=-1;

if(f==1)printf("

\n%.2f%c%.2f=%f"

a1,op,a2,y);

elseif(f==0)

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

当前位置:首页 > 高中教育 > 英语

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

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