计算机C语言编程【课件】._第1页
计算机C语言编程【课件】._第2页
计算机C语言编程【课件】._第3页
计算机C语言编程【课件】._第4页
计算机C语言编程【课件】._第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、第二讲 结构化程序设计开发方法顺序程序设计分支结构程序设计循环程序设计/循环控制第二讲 结构化程序设计开发方法一、一、C程序结构程序结构每一个源文件由预编译命令和若干函数组成(对每个文件分别编译,然后连接)一般地, 一个C程序可由多个源文件组成每一个函数由说明部分和语句部分组成4.1 C4.1 C程序结构和语句程序结构和语句第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计C 程 序源程序文件1源程序文件i源程序文件n预编译命令函 数 1函 数 n说 明 部 分执行部分(语句)一、一、 C程序结构第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序

2、设计二、 C 程序语句1. 表达式语句表达式语句2. 控制语句控制语句3. 复合语句复合语句4. 终止程序运行语句终止程序运行语句第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计函数调用语句函数调用语句:如: printf ();赋值语句赋值语句: 如: i=i+1; i+; x+y;空语句空语句: 如:如: ;任何事情都不做。任何事情都不做。用来做被转向点,或循环语用来做被转向点,或循环语句中的循环体。句中的循环体。1. 表达式语句第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计2. 控制语句改变语句的执行顺序 if()else for

3、() hile() dohile() continue break sitch goto return(条件语句条件语句)(循环语句循环语句)(循环语句循环语句)(循环语句循环语句)(结束本次循环语句结束本次循环语句)(中止执行中止执行switch或循环语句或循环语句)(多分支选择语句多分支选择语句)(转向语句转向语句)(从函数返回语句从函数返回语句)( )表示条件, 表示语句第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计用用 括起来的一系列语句。括起来的一系列语句。 如如:if(ab) z=x+y; t=z/100; printf (%f, t);3. 复合语句

4、(语句体)复合语句中最后一个语句的分号不能忽略不写。复合语句中最后一个语句的分号不能忽略不写。C语言允许一行写几个语句,也允许一个语句拆开语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。写在几行上,书写格式无固定要求。第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计4. 终止程序运行语句exit(整数);第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计return 整数; 赋值语句是由赋值表达式加上一个分号构成。赋值语句是由赋值表达式加上一个分号构成。5.2 5.2 赋值语句赋值语句C语言中的赋值号语言中的赋值号

5、“=”是一个运算符,在其他是一个运算符,在其他大多数语言中赋值号不是运算符。大多数语言中赋值号不是运算符。多数高级语言没有多数高级语言没有“赋值表达式赋值表达式”一概念。一概念。作为赋值表达式可以包括在其他表达式之中。作为赋值表达式可以包括在其他表达式之中。例如:例如:if(a=b)0)t=a;第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计if后面的后面的()内是一个条件,如:内是一个条件,如:if(x0) 在在x的位置上换上一个赋值表达式的位置上换上一个赋值表达式“a=b”,其作用是:,其作用是:先进行赋值运算先进行赋值运算(将将b的值赋给的值赋给a),然后判断

6、,然后判断a是否大是否大于于0,如大于,如大于0,执行,执行t=a。在。在if语句中的语句中的“a=b”不是不是赋值语句而是赋值表达式,这样写是合法的。赋值语句而是赋值表达式,这样写是合法的。如果写成如果写成if(a=b;)0)t=a;就错了。;就错了。在在if的条件中不能包含赋值语句。由此可以看到,的条件中不能包含赋值语句。由此可以看到,c把把赋值语句和赋值表达式区别开来,增加了表达式的种赋值语句和赋值表达式区别开来,增加了表达式的种类,使表达式的应用几乎类,使表达式的应用几乎“无孔不入无孔不入”,能实现其他,能实现其他语言中难以实现的功能语言中难以实现的功能.第第4 4讲最简单的讲最简单的

7、c c程序设计程序设计顺序程序设计顺序程序设计printf( )和scanf( )是C语言中使用得最多的一种输出函数,它可按指定的格式输出和输入多个不同类型的数据。4.54.5 格式式输入输出函数格式式输入输出函数上机实习第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计例例2.22.2 已知圆的半径为R(R是一个可变的量),求圆的面积和周长,用计算机求解,程序如下/* exam22.c */* 计算圆的面积和周长计算圆的面积和周长 */#includemain() float r,area,

8、s; scanf(“%f“,&r); area=3.14*r*r; s=2*3.14*r; printf(“面积面积= %f, 周长周长=%f”,area,s);1 1、注释注释2 2、数据说明数据说明3 3、数据输入数据输入4 4、数据处理、数据处理5 5、结果输出、结果输出第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计2 2 数据结构数据结构根据算法分析,至少要用到这么几个量,年增长率、年数、第n年的总产值。而这几个量中,年增长率肯定是小数(浮点)型数据,年数是整数(整型),总产值不会

9、是整数,应为浮点数。这些数据都要放在相应的变量变量中,并要进行相应的数据说明数据说明。第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计3 3 源程序代码源程序代码第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计2 2 数据结构数据结构程序中要用到不同的数据数据,存放头、脚数量的变量,存放方程解(鸡、兔数量)的变量,存放方程判别式的变量等。对于头、脚的数量,肯定是整型变量,方程的解理论上讲是

10、整型,但在求解方程时要进行运算,为了避免发生错误,最好是用浮点数据。第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计4 4 源程序代码源程序代码说明输入数据的内容第第4 4讲最简单的讲最简单的c c程序设计程序设计顺序程序设计顺序程序设计问题:1、从键盘输入一个数,如果该数为正,打印, 否则不打印;2、将考试成绩不及格的学生名单打印出来;3、解一元二次方程,求出相应的实根或复根。 对于上述或类似问题,需要进行某种判断,并根据不同情况进行不同的处理,怎样进行程序设计?第第5 5讲讲 分支结构程

11、序设计分支结构程序设计解决办法:1、引入新的程序结构,分支结构分支结构, 有时也称 判断结构判断结构 或 选择结构选择结构。2、为了和分支结构相配合,同时还要引入 逻辑表达式的概念。3、有三种形式可进行分支结构的程序设计A、 if 结构B、多重选择结构(switch语句)C、无条件转移结构(goto语句)第第5 5讲讲 分支结构程序设计分支结构程序设计 if 语句关系表达式和逻辑表达式if 语句的变形及嵌套多重选择语句 (switch 语句)无条件转移语句( goto 语句)本讲小结本讲内容第第5 5讲讲 分支结构程序设计分支结构程序设计02cbxaxacabbxcab242, 122, 04

12、abcaibxcab242, 122, 04 由于问题简单,只需用到一些单精度实数第第5 5讲讲 分支结构程序设计分支结构程序设计输入方程系数 a,b,c计算判别式 d=b*b-4*a*cif 判别式大于等于 0 then 计算两个实根 定位输出光标 打印结果else 计算实部 计算虚部 定位输出光标 打印结果end program第第5 5讲讲 分支结构程序设计分支结构程序设计 #include #includemain() float a,b,d,c,x1,x2,p,q; printf( “输入方程系数输入方程系数:” ); scanf(“%f,%f,%f”,&a,&b,&c); d=b*

13、b-4*a*c; if ( d=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf( “x1=%f,x2=%fn”,x1,x2); else p=-b/(2*a); q=sqrt(-d)/(2*a); printf( “x1=%f+i%f,x2=%f-i%fn”,p,q,p,q); 求平方根的函数第第5 5讲讲 分支结构程序设计分支结构程序设计例例 5.25.2 商店售货,按购买货物款的多少分别给予不同的商店售货,按购买货物款的多少分别给予不同的 优惠折扣,编程计算实际应付货款。优惠折扣,编程计算实际应付货款。购货不足购货不足250元,没

14、有折扣;元,没有折扣;购货购货250元(含元(含250元,下同),不足元,下同),不足500元,减价元,减价5%;购货购货500元,不足元,不足1000元,减价元,减价7.5%;购货购货1000元元,不足不足2000元,减价元,减价10%;购货购货2000元及以上,减价元及以上,减价15%;1、算法分析、算法分析: 设购物款为M,折扣为D,则D可表示为: D=0 (M250) D=0.05 (250 M500) D=0.075 (500 M1000) D=0.1 (1000 M2000) D=0.15 (2000M)第第5 5讲讲 分支结构程序设计分支结构程序设计2、源程序清单/ exam42

15、.c#includemain() float m,d,t; printf(“请输入购物金额: ”); scanf(“%f”,&m); if ( m=250 & m=500 & m=1000 & m=2000) d=0.15; t=m*(1-d), /计算应付 款 printf( “实际应付款:%f”,t);输入购物款: 249实际应付款:249输入购物款: 500实际应付款:462.5第第5 5讲讲 分支结构程序设计分支结构程序设计例例 5.35.3 购物折扣程序的另一个写法购物折扣程序的另一个写法改写后,程序更清晰,执行时间更省。/ exam42.c#includemain() float

16、m,d,t; printf(“请输入购物金额请输入购物金额: ”); scanf(“%f”,&m); if ( m=250 & m=500 & m=1000 & m2000) d=0.1; else d=0.15; t=m*(1-d), /应付款应付款 printf( “实际应付款实际应付款:%f”,t);第第5 5讲讲 分支结构程序设计分支结构程序设计例例 5.45.4 从键盘输入一字符从键盘输入一字符,如果为如果为Y,则打印是则打印是,为为N,打印否打印否,其它其它 字符字符,打印输入错误。打印输入错误。/ exam54.c#includemain() char a; printf(“输入

17、一个字符:”); a=getchar(); if( a=Y | a= =N ) if (a=Y) printf( “是”); else printf( “否”); else printf( “输入数据不合要求”);演示显示程序第第5 5讲讲 分支结构程序设计分支结构程序设计#includemain() int x,y,z; printf(“Iput x,y,z:”); scanf(“%d,%d,%d”,&x,&y,&z); if ( x0) if (y0 ) if (z0) printf( “所有数据大于零所有数据大于零!”); else printf( “只有只有X,Y大于零大于零!”);

18、else if (x=0) if (y=0) if (z=0) printf( “所有数据都为零所有数据都为零!”); else printf( “只有只有X,Y等于零等于零!”); else printf( “X 小于零小于零!”);例例 5.55.5 演示 嵌套不能太深,一般以三层为限,嵌套太深,容易出错。嵌嵌套套演演示示程程序序第第5 5讲讲 分支结构程序设计分支结构程序设计#includemain() int x,y,z; printf(“Iput x,y,z:”); scanf(“%d,%d,%d”,&x,&y,&z); if ( x0 & y0 & z0) printf( “所有数

19、据大于零所有数据大于零!”); else if (x0 & y0) printf( “只有只有X,Y大于零大于零!”); else if (x=0 & y=0 & z=0) printf( “所有数据都为零所有数据都为零!”); else if (x=0 & y=0) printf( “只有只有X,Y等于零等于零!”); else / (x=A & ch=A & chb?a:cd?c:d ab?a:(cd?c:d)此处使用了条件运算符3 源程序代码之二第第5 5讲讲 分支结构程序设计分支结构程序设计#includemain() int i; printf(“输入数字 1- 7: ”); sca

20、nf(“%d”,&i); if (i=1) printf ( “Today is Monday!n”); else if (i=2) printf (“Today is Tuesday!n”); else if (i=3) printf (“Today is Wednesday !n”); else if (i=4) printf( “Today is Thursday!n”); else if (i=5) printf( “Today is Friday!n”); else if (i=6) printf( “Today is Saturday!n”); else printf( “Toda

21、y is Sunday!n”);例例 5.75.7 输入星期中的某一天输入星期中的某一天, ,显示对应的英文显示对应的英文此例似显复杂,此例似显复杂,是否有更好的是否有更好的办法办法?第第5 5讲讲 分支结构程序设计分支结构程序设计main() int i; printf( “输入数字 1- 7: ”); scanf(“%d”,&i); switch(i) case 1: printf( “Today is Monday!”); case 2: printf( “Today is Tuesday!”); case 3: printf( “Today is Wednesday !”); case

22、 4: printf( “Today is Thursday!”); case 5: printf( “Today is Friday!”); case 6: printf( “Today is Saturday!”); default: printf( “Today is Sunday!”); 例例 5.8 5.8 用 switch 语句重写打印星期程序。main() int I; printf( “输入数字 1- 7: ”); scanf(“%d”,&i); if (i=1) printf( “Today is Monday!”); else if (i=2) printf( “Today

23、 is Tuesday!”); else if (i=3) printf( “Today is Wednesday !”); else if (i=4) printf( “Today is Thursday!”); else if (i=5) printf( “Today is Friday!”); else if (i=6) printf( “Today is Saturday!”); else printf( “Today is Sunday!”);第第5 5讲讲 分支结构程序设计分支结构程序设计要有break才等价例例 5.95.9 用 switch 语句重写例4.4的程序main()

24、char a; printf( “输入一个字符:” ); a=getchar(); if (a=Y | a=N ) if (a=Y) printf( “是n”); else printf( “否n”); else printf( “字符不合要求!n”);显然,改写后的程序更清晰,更简短。main() char a; printf( “输入字符:”); a=getchar(); switch (a) case Y: printf( “是n”); break; case N: printf( “否n”); break; default: printf( “字符不合要求!n”); 第第5 5讲讲 分

25、支结构程序设计分支结构程序设计例例 5.105.10 在屏幕上显示菜单分析: 程序首先在屏幕上将功能显示出来,用户根据需要选择相应的功能,程序根据用户的选择执行相应的程序段。对于这类程序,往往是用户输入一个英文字母,然后程序根据字母来断别程序该执行什么程序段,故一般用 switch语句比较方便。第第5 5讲讲 分支结构程序设计分支结构程序设计2 2 源程序清单源程序清单switch(a)case i: printf(“调用输入模块!”); break;case o: printf(“调用输出模块!”); break;case l: printf(“调用查找模块!”); break;case q

26、: printf(“调用退出模块!”); break; main() int char a; printf(“请选择:”); printf(“输入 i ”); printf(“ 输出 o ”); printf(“找出最长的单词 l”); printf(“退出 q”); a=getchar();执行选项时,要调用相应的模块(程序段)。由于现在还没有相应的程序,暂用一条打印语句代替。以后会用相应程序代替第第5 5讲讲 分支结构程序设计分支结构程序设计例例 5.115.11 统计某班级中计算机课程中考试成绩高于80分的人数。假设学生人数为 main() int i, fs, j=0;Loop: sc

27、anf(“%d”,&fs); j+; /统计已读入的数据个数 if (fs80) i+; printf(“%d, %d”,i,fs); if(j95 或者输入数据完成或者输入数据完成(i某值某值) 退出输入;退出输入; else go 输入成绩行输入成绩行 ; if ( fs 95) 打印字符串打印字符串“找到了!找到了!” else 打印字符串打印字符串“没找到!没找到!”结束程序结束程序3 3 程序伪代码程序伪代码第第6 6讲讲 循环控制循环控制main() int fs,i; i=0;Loop1: scanf(“%d”,&fs); i=i+1; if(fs95| i=10 ) goto

28、loop2; else goto loop1; loop2: if ( fs 95) printf(“FIND !”); else printf( “DO NOT FIND !”);4 4 源程序代码之一源程序代码之一构成循环退出循环标号标号第第6 6讲讲 循环控制循环控制5 5 源程序代码之二源程序代码之二#includemain() int fs,i=1; printf(n请输入第请输入第 %d 个数据个数据: ,i); scanf(%d,&fs); while(fs=95 & i95) printf( n找到啦找到啦!n ); else printf( n没找到没找到!n);注意输入提示

29、注意输入提示While例1循环体第第6 6讲讲 循环控制循环控制例例 6.26.2 将输入的正文复制到输出,每次一个字符将输入的正文复制到输出,每次一个字符1 1 算法分析算法分析 本题的含义是每次从键盘上输入一个字符,然后将该字符在屏幕上输出。因为是正文,故其结束的标志为 要使用字符函数来接受从键盘输入的字符,一般用getchar函数。第第6 6讲讲 循环控制循环控制2 2 源程序代码源程序代码 #includeint main(void) char c; printf(“input a text end of n”); c=getchar(); while(c!=EOF) putchar(

30、c); c=getchar(); 在头文件中定义的常数(-1)While例2循环体注意输入提示按注意输入提示按输入一个字符输出一个字符第第6 6讲讲 循环控制循环控制#includeint main(void)char c;printf(input a text n);while(c=getchar()!=EOF) putchar(c); 请阅读下面的程序,说明程序的功能。该程序与上面的程序功能一样,只不过将字符输入语句放入循环判断条件中。在头文件中定义的常数(-1)循环注意输入提示注意输入提示按按输入一个字符输出一个字符第第6 6讲讲 循环控制循环控制 比较两种循环的用法。 从键盘输入一个字

31、符Y或N,直到输入正确为止。1 1 算法分析算法分析在程序中,经常会遇到要求用户输入Y或N,以确定某种状态。为防止用户在无意中碰到键盘而输入错误的字符,程序对用户输入的不合要求的字符忽略,并要求用户重新输入。为了做到上述要求,程序对输入的字符要进行判断,如果不合要求,则将输入的字符忽略,并等待用户重新输入。显然,要做到这一点,须用一个循环程序,当输入正确时,循环结束。设输入变量为c ,则循环控制条件为!(c=Y | c=N) 或者(c!=Y & c!=N)第第6 6讲讲 循环控制循环控制格式1: c=getchar(); while (c!=Y & c!=N) printf( answer i

32、s Y or N“); c=getchar(); 格式2: do printf( ”Enter Y or N“); c=getchar(); while(c!=Y & c!=N);显然,格式 2更方便!do例第第6 6讲讲 循环控制循环控制#includemain() int fs,i=1; do printf(请输入第请输入第 %d 个数据个数据: ,i); scanf(%d,&fs); i+; while(fs=95 & i95) printf( n找到啦找到啦!n ); else printf( n没找到没找到!n);例例 6.56.5 将例例6.1用新的dowhile 语句重写查找某班

33、级考试结果是否有高于95分的成绩。do例循环体第第6 6讲讲 循环控制循环控制 统计某班级中计算机课程中考试成绩高于80分的人数,现用for 循环语句重写该程序。 main() int fs,sum,j; sum=0; for (j=1; j80) sum=sum+1; printf(“sum=%dn“,sum); j j 加1for例循环体第第6 6讲讲 循环控制循环控制例例6.66.6 求数列 50011n511111611的和。 该数列中每一项的分母都有规律,后一项为前一项加5,分母的通式为: An =An-1 +5, A1 =1或: ),(n511An100210n程序第第6 6讲讲

34、循环控制循环控制/ exam63.c#includemain()int i;float sum=0;for(i=0;i=100;i+)sum=sum+1.0/(1+i*5);printf(%f,sum);i 加1循环)100,2, 1 ,0(n511Annfor例第第6 6讲讲 循环控制循环控制例例 6.7 6.7 求的近似值,精确到10210n1公式为:2222121116n此类问题相对简单,但要注意累加变量和通项的初值。该问题中,累加变量sum 的初值为0,通项 term 的初值为 1。第第6 6讲讲 循环控制循环控制#include#includemain()double pi,term

35、,sum;int i;sum=0.0;term=1.0;for(i=1;term0.00000000000001;i+)term=1.0/(i*i);sum=sum+term;pi=sqrt(sum*6);printf(%fn,pi);两个相乘,其值会溢出,故得不到想要的结果循环2222121116nfor例第第6 6讲讲 循环控制循环控制例例 6.8 6.8 分别统计某班学生各科成绩中高于分的人数。 学生人数为30人,课程为:数学、语文、英语、物理、生物。int n,i;n=0;for(i=1;i=80) n=n+1; / 累加大于80 分的人数 printf(n=%d“,n); 先看统计数

36、学成绩循环for例第第6 6讲讲 循环控制循环控制 统计五门课程,只需将统计一门课程的程序用不同的数据执行 5 次,这可用一个循环实现。 / 统计某一门课程 n=0; for(i=0;i=80) n=n+1; printf(n=%d“,n);for(j=0;j5;j+) / 对课程循环 统计每门课程的成绩! / 统计一门课程 n=0; for(i=0;i=80) n=n+1; printf(n=%d“,n); 这里,用到了二重循环。外循环内循环for例第第6 6讲讲 循环控制循环控制例例 6.96.9 求自然对数的底e,取前 n 项的和。!1!21!111ne1 1 算法分析算法分析此题有两种

37、算法:一种是直接求通项,则先求 n!,然后求1/n! , 这种方法比较简单。求 n 阶乘的程序段为f=1;for(j =1;j=n;j+) f=f*j;第第6 6讲讲 循环控制循环控制!1!21!111ne,则有设通项为mA1 ), 2 , 1( 101anmmaamm由于数列的第一项不能用通项表示,故将其直接放入累加变量中。程序片段为第二种求通项的公式e=1.0; a=1;for(m=1;m=n;m+) a=a*(1/m ); e=e+ a;第第6 6讲讲 循环控制循环控制/ 利用双重循环计算main() int i,j,n; float e,f; printf( “Please input

38、 N: ”); scanf(“%d”,&n); e=1.0; for(i=1;i=n;i+) f=1; for(j =1;j=i;j+) f=f*j; e=e+1/f; printf( “e=%f”,e);/ 利用单重循环计算main() int i,n; float e,f; printf( “Please input N:”); scanf(“%d”,&n); e=1.0; f=1; for(i=1;i=n;i+) f=f*(1/i ); e=e+ f; printf( “e=%f”,e);2 2 源代码源代码!1!21!111ne第第6 6讲讲 循环控制循环控制Esc键结束,要求只显示输

39、出内容。 在每行前显示字符串“The Line No. is n”,n为1,2,3,1 算法分析此题要求从键盘上输入字符并按行显示,初一看,只要用行输入语句就行。但仔细分析后会发现,用行输入语句不行。如用 gets 或 scanf 语句,则输入的内容会在屏幕上回显(即输入的内容显示在屏幕上),其次,这两个语句都不能单独捕捉到Esc键。因此,只能用单个字符输入的函数,但要求不要回显,getchar函数也不行,但推测是与getchar相类似的函数。故可先调出getchar 的帮助,然后看See Also。第第6 6讲讲 循环控制循环控制既然是按行显示,用字符输入函数,每输入一个字符,立刻在屏幕上显

40、示出来。当接受到换行符时,转入下一行。因此,对每一行的输入,要用一个循环,循环的控制条件就是输入的字符不为换行符。当输入为换行符时,循环从头开始。程序的结束是以接受到Esc键为标志的,故而要在行输入的外面再增加一个循环,此循环的结束条件是输入的字符为Esc键。行输入的程序片段为printf(nThe Line No. is %d, i); do printf(%c, c); c=getch(); while(c!=13 & c!=27);13 return键ASCII码27 Esc键ASCII码getch 不回显输入 字符函数第第6 6讲讲 循环控制循环控制#include#includein

41、t main(void) int i=0; char c=0; while(c!=27) c=0; i+; printf(nThe Line No. is %d, i); do printf(%c, c); c=getch(); while(c!=13 & c!=27); printf(nThe endn);从键盘上输入一个字符,不回显Esc键的ASCII码值回车符的ASCII码值第第6 6讲讲 循环控制循环控制 输入一个算式,模拟袖珍计算机的加、减、乘、除四则运算。例如:输入10.8+0.13*100 计算结果为: 1093.000000假定计算时不考虑运算符的优先级,也不允许有( ),而是

42、按照运算符出现的先后顺序执行运算。sunhui:此例也没讲。第第6 6讲讲 循环控制循环控制 main(void) double x,y; char op; inx: printf(input arithmetic expression:n); scanf(%lf,&x); while(op=getchar()!=n) iny: scanf(%lf,&y); switch(op) case +:x+=y; break; case -:x-=y; break; case *:x*=y; break; case /: if(y) x/=y; else printf(division is zero

43、,input y againn); goto iny; break; default: printf(illegal operator,input againn); goto inx; printf(%8.4fn,x);第第6 6讲讲 循环控制循环控制开始 输入系数a,b,cd=0例例6.126.12:用流程图描述求解一元二次方程的根x1=(-b+sqrt(d)/2x2=(-b-sqrt(d)/2输出x1,x2p=-b/2q=sqrt(-d)/2输出x1,x2结束TF第第6 6讲讲 循环控制循环控制d=b*b-4*a*c 输入一段C语言程序(一个正文),按原来格式复制到输出,复制过程中删除输入

44、程序中所有的注释。此处注释专指“/* */”的注释。程序先要输入,在C语言中,当从键盘输入时,先将输入数据放入键盘缓冲区中,当接受到回车符后,程序才开始从键盘缓冲区中读数据。分析之前,首先,弄明白问题的意思。程序要求输入一段程序(C语言),并将输入的程序在屏幕上输出。在输出时将程序中的注释(/* */)过滤,既不输出注释。第第6 6讲讲 循环控制循环控制输出时要将注释过滤掉,首先要判别什么内容是注释内容。例: while(ab) /*while a b */ printf(“*/”);字符的类型,仅从字符本身是无法区分的。如上面的串中,字符的类型,仅从字符本身是无法区分的。如上面的串中,字符串

45、字符串while可能是普通字符串,也可能是注释字符串。同样,可能是普通字符串,也可能是注释字符串。同样,对对“*/”字符,与字符,与/*配对是注释字符,否则就是普通字符。因配对是注释字符,否则就是普通字符。因此,需要一个类型标志此,需要一个类型标志 state 。因此,字符的类型标志可取为: 普通字符普通字符(COPY)、注释开始注释开始(START)、注释字符注释字符(COMMENT)、注释结束注释结束(END)。因此,在C程序中,从注释的角度来看,字符共有四种,普普通字符通字符、注释开始字符、注释结束字符注释开始字符、注释结束字符及注释字符注释字符。while(ab) printf(“*/

46、”); 为普通字符,while ab 为注释字符,/* */ 为注释标志字符。第第6 6讲讲 循环控制循环控制参照下例开始程序设计。开始时,state 置普通字符状态。在普通字符状态,如果输入字符不是/,则将字符原样输出,如果输入字符为/,在开始注释状态,如果输入字符为在开始注释状态,如果输入字符为*,while(ab) /*while a b */ printf(“*/”); 则可能开始注释,将state 设为注释状态,字符 / 不输出;第第6 6讲讲 循环控制循环控制参照下例开始程序设计。开始时,state 置普通字符状态。在普通字符状态,如果输入字符不是/,则将字符原样输出,如果输入字符为/,在开始注释状态,如果输入字符为在开始注释状态,如果输入字符为*,表明注释开始,表明注释开始,state置为注释状态;如果输入字符不是置为注释状态;如果输入字符不是*,while(ab) /*while a b */ printf(“*/”); 则可能开始注释,将state 设为注释状态,字符 / 不输

温馨提示

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

评论

0/150

提交评论