2022c程序设计第3章_第1页
2022c程序设计第3章_第2页
2022c程序设计第3章_第3页
2022c程序设计第3章_第4页
2022c程序设计第3章_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

第三章程序设计结构3.1程序设计结构的基本概念知识结构3.2顺序结构3.3选择结构3.4循环结构3.5程序举例

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

第三章程序设计结构3.1程序设计结构的基本概念例2,有两个学生做猜数游戏,学生甲写下一个数让学生乙猜,对于这个猜数游戏可以分两种情况:

(1)猜数的机会只有一次,结果只有对错两种情况。

(2)猜数的机会有多次,每次给出一个提示,最终学生乙应该能猜中此数。例1,有一个学生想计算周日花了多少钱,可以把周日一天每一项开销记录下来,并把每项金额累加起来就知道花了多少钱。问题

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.1.1结构化程序设计的基本原则1、自顶向下2、逐步细化3、模块化设计4、结构化编码

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.1.2程序设计的三种基本结构

1966年,Bohra和Jacopini提出了以下3种基本结构,用这3种基本结构可以完整表述处理问题的所有操作步骤。一、顺序结构。

问题:假设一个学生一天的开销如下:

买牙膏(toothpaste)3.2元

买香皂(soap)2元

买洗发液(shampoo)12.5元

买书(book)46元结束开始toothpaste=3.2soap=2.0shampoo=12.5book=46sum=toothpaste+soap+shampoo+book输出结果

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

二、选择结构。

问题:学生甲出示一个数,让学生乙猜。只给一次机会。比较两数结束学生甲写一个数学生乙猜一个数不等猜对了猜错了相等用虚线框起部分是选择结构,此结构一定包含一个判断,根据比较判断结果的不同,执行的结果不同。开始

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

三、循环结构。

问题:学生甲出示一个数,让学生乙猜。直到猜对为止。学生甲写一个数学生乙猜一个数比较两数相等猜对了不等猜错了开始结束上述的三个问题,使用了三种结构来完成的,这三种算法,用传统流程图画出。用虚线框起部分是循环结构,此结构包含一个判断,根据比较判断的结果,猜数、比较、猜错了要重复执行多次。

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.2顺序结构3.2.1C语句

1、表达式语句2、控制语句语句3、函数调用语句4、复合语句5、空语句toothpaste=3.2;soap=2.0;sum=toothpaste

+soap;if()~else~for()~while()~do~while()continuebreakswitchgotoreturnprintf(“Thisisastring\n”);scanf(“%d%d”,&a,&b);if(x+y!=0){

z=x+y;

t=z/100;

printf(“%f”,t);}elseprintf(“%f”,x+y);;

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.2.2顺序结构程序设计

【例3-1】统计一天的费用。#include<stdio.h>voidmain(){floattoothpaste,soap,shampoo,book,sum;toothpaste=3.2;soap=2;shampoo=12.5;book=46.0;sum=0;sum=toothpaste+soap+shampoo+book;printf(“%f”,sum);}头文件主函数复合语句变量说明语句赋值语句求和表达式输出语句

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

【例3-2】编写一程序,读入一数字字符‘0’~‘9’,并把其转换为相应的整数后显示出来。#include“stdio.h”voidmain(){intd;charc;c=getchar();d=c-48;printf(“%d\n”,d);}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

【例3-4】从键盘输入一个大写字母,要求改用小写字母输出。#include<stdio.h>voidmain(){charc1,c2;c1=getchar();printf(“%c,%d\n”,c1,c1);c2=c1+32;

printf(“%c,%d\n”,c2,c2);}程序运行结果:A↙A,65a,97

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

【例3-5】有两个容器装满不同的液体,现在想把两个容器中的液体对调过来,编写一个程序实现这一过程。#include<stdio.h>voidmain(){intca1,ca2,cat;ca1=10;ca2=20;cat=ca1;ca1=ca2;ca2=cat;printf(“%d,%d”,ca1,ca2);}ca1存储单元cat存储单元ca2存储单元1020第一步第二步第三步102010程序运行结果:20,10

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.2.3图形输入输出

C语言有两种输入输出方式。其一是字符方式,将屏幕看成25行,80列个字符。其二是将屏幕看成点阵方式,具体的点数视显示卡所支持的点数和颜色。在TRUBOC中在使用图形输入输出时,必须加入头文件。#include<graphics.h>

1、图形模式的初始化函数函数名:initgraph用

法:

voidinitgraph(int&gdriver,int&gmode,charpath);

能:

图形模式的初始化

图形驱动器(gdriver)

图形模式(gmode)色调

分辨率

符号常量

数值

符号常量

数值

EGA

3

EGALO

0

16色

640*200

EGAHI

1

16色

640*350

VGA

9

VGALO

0

16色

640*200

VGAMED

1

16色

640*350

VGAHI

2

16色

640*480DETECT

0

用于硬件测试

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

2、清屏函数函数名:

cleardevice用

法:

voidcleardevice(void);功

能:

该函数用来清除图形屏幕内容。3、设置背景色函数函数名:

setbkcolor用

法:

voidsetbkcolor(intcolor);功

能:

该函数用来设置图形屏幕的背景颜色。4、设置前景色函数函数名:

setcolor用

法:

voidsetcolor(intcolor);功

能:

该函数用来设置图形屏幕的前景颜色。符号常量

数值

含义

BLACK

0

BLUE

1

兰GREEN

2

绿CYAN

3

RED

4

红MAGENTA

5

BROWN

6

棕LIGHTGRAY

7

淡DARKGRAY

8

深灰LIGHTBLUE

9

深兰LIGHTGREEN

10

淡绿LIGHTCYAN

11

淡青LIGHTRED

12

淡红LIGHTMAGENTA

13

淡洋红YELLOW

14

黄色WHITE

15

白色屏幕颜色符号常量表

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

5、设定填充方式函数函数名:setfillstyle用

法:voidsetfillstyle(intpattern,intcolor);;功

能:该函数用来设定填充方式,color的值是当前屏幕图形模式时颜色的有效值。

符号常数

数值

含义

EMPTY_FILL

0

以背景颜色填充

SOLID_FILL

1

以实填充

LINE_FILL

2

以直线填充

LTSLASH_FILL

3

以斜线填充(阴影线)

SLASH_FILL

4

以粗斜线填充(粗阴影线)

BKSLASH_FILL

5

以粗反斜线填充(粗阴影线)

LTBKSLASH_FILL

6

以反斜线填充(阴影线)

HATCH_FILL

7

以直方网格填充

XHATCH_FILL

8

以斜网格填充

INTTERLEAVE_FILL

9

以间隔点填充

WIDE_DOT_FILL

10

以稀疏点填充

CLOSE_DOS_FILL

11

以密集点填充

USER_FILL

12

以用户定义式样填充关于填充式样pattem的规定

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

6、封闭图形的填充函数函数名:bar用

法:voidbar(intx1,inty1,intx2,inty2);功

能:

该函数用来确定一个以(x1,y1)为左上角,(x2,y2)为右下角的矩形窗口,再按规定图形模式和颜色填充。7、图形模式下的文本输出函数函数名:outtextxy用

法:voidouttextxy(intx,inty,char*textstring);功

能:

该函数输出字符串指针textstring所指的文本在规定的(x,y)位置。其中x和y为象元坐标。

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

8、输出字符设置函数函数名:settextstyle用

法:voidsettextstyle(intfont,intdirection,intcharsize);功

能:该函数用来设置输出字符的字形、输出方向和字符大小等特性。TurboC2.0

常号常量

数值

含义DEFAULT_FONT

0

8*8点阵字(缺省值)TRIPLEX_FONT

1

三倍笔划字体SMALL_FONT

2

小号笔划字体SANSSERIF_FONT

3

无衬线笔划字体GOTHIC_FONT

4

黑体笔划字font取值范围

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.3选择结构3.3.1用if语句实现选择结构1、用if语句实现二分支选择结构语句的格式:

if(<表达式>)

<内嵌语句1>;

else

<内嵌语句2>;(1)关系表达式

(2)逻辑表达式

(3)其他表达式表达式<内嵌语句2>;<内嵌语句1>;真假牢记:表达式非“0”为“真”

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

2、用if语句实现多分支选择结构语句的格式:

if(<表达式1>)

<内嵌语句1>;

elseif(<表达式2>)

<内嵌语句2>;

elseif(<表达式3>)

<内嵌语句3>;

elseif(<表达式n>)

<内嵌语句n>;

else

<内嵌语句>;表达式1表达式2表达式3表达式n内嵌语句1内嵌语句2内嵌语句3内嵌语句n内嵌语句…真真真真假假假假假【例3-12】从键盘上输入一个字符,判断输入字符种类。

#include<stdio.h>

voidmain()

{charc;

printf("Enteracharacter:");

c=getchar();

if(c<0x20)printf("Thecharacterisacontrolcharacter\n");

elseif(c>='0'&&c<='9')printf("Thecharacterisadigit\n");

elseif(c>='A'&&c<='Z')printf("Thecharacterisacapitalletter\n");

elseif(c>='a'&&c<='z')printf("Thecharacterisalowerletter\n");

elseprintf("Thecharacterisothercharacter\n");

}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3、if语句的嵌套语句的格式:

if(表达式1)

if(表达式2)语句1

else语句2

else

if(表达式3)语句3

else语句4语句1语句2语句3语句4表达式1表达式2表达式3真真真假假假【例3-13】有一函数

-1(x<0)

y={0(x=0)

1(x>0)

编一程序,输入一个x值,输出y值。

#include“stdio.h”

voidmain()

{intx,y;

scanf(“%d”,&x);

if(x>=0)

if(x>0)y=1;

elsey=0;

else

y=-1;

printf(“y=%.2f”,y);

}4、if和goto语句构成循环一般形式

goto语句标号;功能:无条件转移语句语句标号说明:不能用整数作标号。只能出现在goto所在函数内,且唯一。只能加在可执行语句前面。限制使用goto语句。

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

例用if和goto语句构成循环,求1到100之和/#include<stdio.h>voidmain(){inti,sum=0;i=1;loop:if(i<=100){sum+=i; i++; gotoloop;}printf("%d",sum);}sum=0+1sum==1+2=3sum=3+3=6sum=6+4……sum=4950+100=5050循环初值循环终值循环变量增值循环条件循环体

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.3.2用switch实现多分支选择结构

switch(表达式){caseE1:

语句组

1;

break;caseE2:

语句组

2;

break;…….caseEn:

语句组

n;

break;[default:

语句组;break;]}switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcase【例3-17】输入某年某月某日,判断这一天是这一年的第几天?#include<stdio.h>voidmain(){intday,month,year,sum,leap;printf("\npleaseinputyear,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month){case1:sum=0;break;

case2:sum=31;break;

case3:sum=59;break;

case4:sum=90;break;

case5:sum=120;break;

case6:sum=151;break;

case7:sum=181;break;

case8:sum=212;break;

case9:sum=243;break;

case10:sum=273;break;

case11:sum=304;break;

case12:sum=334;break;

default:printf("dataerror");break;}sum=sum+day;

if(year%400==0||(year%4==0&&year%100!=0))

leap=1;

else

leap=0;if(leap==1&&month>2)sum++;printf("Itisthe%dthday.",sum);}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:case1:case0:printf(“Fail!”);default:printf(“dataerror!”);}运行结果:score为5时,输出:

Verygood!Good!Pass!Fail!dataerror!例switch(score){case5:printf(“Verygood!”);break;case4:printf(“Good!”);break;case3:printf(“Pass!”);break;case2:case1:case0:printf(“Fail!”);break;default:printf(“dataerror!”);}例voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=1

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.3循环结构3.4.1while循环结构

语句格式:

while(表达式)

循环体语句当表达式为非0值时,执行while语句中的内嵌语句,其特点是先判断表达式,后执行语句。(1)循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句的形式出现。如果不加花括号,则while语句的范围只到while后面第一个分号处。(2)在循环体中应有使循环趋向于结束的语句。(3)循环体有可能一次也不执行(4)循环体可为任意类型语句,当条件表达式不成立(为零)或循环体内遇到break,return语句退出循环。expr循环体假(0)真(非0)while【例3-18】编写一个程序,求1到100的和。#include<stdio.h>voidmain(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.4.2do…while循环结构

语句格式:

do

循环体语句

while(表达式);do循环体expr假(0)真(非0)while它与while语句基本类似,唯一的差别是do…while在没有判别表达式前先执行一次指定的循环体语句。【例3-20】用do~while循环语句,求1到100的和。#include<stdio.h>voidmain(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.4.3for循环结构

语句格式:

for(表达式1;表达式2;表达式3)

循环体语句(1)表达式1用来确定循环变量的初值,表达式2用来确定循环条件和终值,表达式3用来修改循环条件控制变量。(2)for语句中表达式1,表达式2,表达式3可以是任意类型,都可省略,但分号“;”不可省。(3)当三个表达式全部省略时,for语句构成无限循环,形式如:for(;;)。

(4)for语句可以转换成while结构。(5)for语句执行过程:先求解表达式1;再求解表达式2,若其值为真(值为非0),则执行for语句的内嵌循环体语句,若其值为假(值为0),则结束循环;执行完循环体语句后,执行表达式3,再接着从表达式2开始执行。expr2循环体假(0)真(非0)forexpr1expr3【例3-21】用for循环语句,求1到100的和。#include<stdio.h>voidmain(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.4.4循环嵌套

(1)三种循环可互相嵌套,嵌套的层数不限。下面的几种嵌套形式都是合法的:形式1:

while(){……while(){……}…...}形式2:

while(){……do{……}while();…….}形式3:

for(;;){……do{……}while();……while(){……}…...}(2)外层循环可包含两个以上内循环,但内层不能相互交叉。

(3)循环嵌套的执行流程是从外层循环开始执行,再进入内层循环执行,内层循环执行完毕后,退到外层循环接着执行。

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

【例3-23】编写一个程序,输出小九九表#include<stdio.h>voidmain(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n---------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);}应用题举例该题存在的问题讨论

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.4.5break语句

语句格式:

break;

说明:

当break语句出现在switch语句或循环语句中时,执行到break语句就退出switch语句或循环语句。【例3-24】输出圆面积,面积大于100时停止。#definePI3.14159voidmain(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100) break;printf("r=%d,area=%.2f\n",r,area);}}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.4.6continue语句

语句格式:

continue;

说明:

其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,根据循环条件的判定,决定是否进行下一次循环。【例3-25】求输入的十个整数中正数的个数及其平均值。#include<stdio.h>voidmain(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}

C程序设计

–庞振平等华南理工大学出版社

第三章程序设计结构

3.3程序举例#include<stdio.h>voidmain(){floatx,y;charoperate1;printf("Arithmet

温馨提示

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

评论

0/150

提交评论