收藏 分享(赏)

第3章 结构化程序设计基础(重庆交大版).ppt

上传人:hskm5268 文档编号:10141189 上传时间:2019-10-14 格式:PPT 页数:117 大小:1.09MB
下载 相关 举报
第3章 结构化程序设计基础(重庆交大版).ppt_第1页
第1页 / 共117页
第3章 结构化程序设计基础(重庆交大版).ppt_第2页
第2页 / 共117页
第3章 结构化程序设计基础(重庆交大版).ppt_第3页
第3页 / 共117页
第3章 结构化程序设计基础(重庆交大版).ppt_第4页
第4页 / 共117页
第3章 结构化程序设计基础(重庆交大版).ppt_第5页
第5页 / 共117页
点击查看更多>>
资源描述

1、3.1 算法的概念及表示,3.3 顺序结构程序设计,3.4 选择结构程序设计,第3章 结构化程序设计基础,3.2 结构化程序设计方法,3.5 循环结构程序设计,3.6 应用举例,3.1算法的概念及表示,一、算法的概念,程序=算法+数据结构,算法应具有以下特征: (1)有穷性 (2)确定性 (3)有零个或者多个输入 (4)有一个或多个输出 (5)有效性,【例3.1】 有三个数:a,b,c,找出其中最大的数。 思路:先将a与b比较,将大的放在变量MAX中;然后在让c与MAX比较,如果cMAX,则将c的值送到MAX中;最后MAX就是三个数中最大的数。将其求解过程写成如下形式: Step1:a与b相比

2、,如果ab,则a=MAX,否则,b=MAX; Step2:c与MAX比较,如果cMAX,则,c=MAX; 最后,MAX的值就是三个数中最大的。,【例3.2】 求: S=1+2+3+4+5+n的值。 算法一: 算法二: 一个一个数进行累加: 用循环的方法: Step 1:1+2=S(S的值为3) Step 1:设S=0 Step 2:S+3=S(S的值为6) Step 2:设I=1 Step 3:S+4=S(S的值为10) Step 3:S+I=S Step 4:S+5=S(S的值为15) Step 4:I+1=I 若IStep 否则,算法终止,二、算法的表示,1、用传统流程图表示,【例3.1】

3、的流程图:,C语言提供三种结构化语句来控制程序的执行流程:,顺序结构:,选择结构:,循环结构:,一种按书写顺序执行的结构。,根据运行时的情况自动选择要执行的语句。,根据情况自动重复执行有关语句。,程序的三种基本结构,顺序结构即按照语句书写顺序执行的程序结构。,顺序结构,(1 )顺序结构,(2 )选择结构,选择结构又称为分支结构,是指有条件地选择要执行的程序段。,选择结构示意图,(3)循环结构,当条件成立(为“真”或非0)时,反复执行程序段A,否则不执行程序段A。,当型循环结构,先执行程序段A,再判断条件是否为“真”(非0);若为“真”(非0),再执行A,如此反复,直到条件为“假”(0)为止。,

4、直到型循环结构,2、N-S结构流程图,【例3.4】 画出【例3.1】、【例3.2】的N-S结构流程图,3.2结构化程序设计方法,结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。而用三种基本结构组成的程序必然是结构化的程序。结构化程序设计的方法是:自上而下、逐步细化、设计模块化、编码结构化。,3.3 顺序结构程序设计,表达式语句(表达式;)简单语句函数调用语句(函数名(参数表);空语句(;)C语言数据操作 复合语句( 一条或多条语句 )语句 条件语句(if语句,switch语句)结构化语句 while语句循环语句 do_while语句for语句流程控制语句 break语句限定转

5、向语句 continue语句非结构化语句 return语句非限定转向语句(goto语句),一、C语言的语句分类:,1.简单语句,1)表达式语句,由表达式组成的语句称为表达式语句,语句格式:,表达式;,分号(;)是语句结束的标志,功能:,计算表达式或改变变量的值。,分类:,运算符表达式语句,赋值语句,运算符表达式语句,运算符表达式后跟一个分号组成,例:,5;,i+; 语句的功能是,变量i的值增1。,a=3,b=a+2,c=a+1; /*由三个赋值语句组成的逗号表达式语句。*/,(1),a+b; /*算术表达式语句,计算a与b之和。*/,赋值语句,赋值表达式后跟一个分号组成,(2),例:,x=y+

6、z; /*计算y+z的和并赋值给变量x.。*/,x=2; y=3;,2)函数调用语句,由函数调用表达式后跟一个分号组成,格式:,函数名 (参数列表);,分类:,标准库函数,用户定义函数,标准库函数调用原则:,(1) 要在程序中包含相应的头文件,(2) 调用的一般形式:函数名 (参数列表);,标准函数调用的目的,(1)如数学函数,为了得到函数的返回值。,这类函数的调用一般出现在表达式中,作为表达式语句的一部分。,一般不作为函数调用语句。,(2)为了完成某项任务,而不是为了得到返回值。,在表达式中调用函数,实际上是转去执 行一段预先设计好的程序,求出结果后 返回调用点。 所以函数的值又叫函数的 返

7、回值。,调用这类函数时,就直接用函数调用语句。,例:,scanf(“%f“,,printf(“%f“,x);,2. 复合语句,一对大括号 包围若干条语句组成。,格式:, 数据说明部分;执行语句部分;,注意:,(1) 在复合语句中的“内部数据描述语句”中定义的变量,是局部变量, 仅在复合语句中有效。,(2) 复合语句结束的“ ”之后,不需要分号。,(3) 复合语句可以出现在任何数据操作语句可以出现的地方。,例:,#include “stdio.h“ void main() int a=11,b=21,c=31;printf(“a=%dtb=%dtc=%dn“,a,b,c);int b=22;fl

8、oat c=3.3;printf(“a=%dtb=%dtc=%fn“,a,b,c);a=b;printf(“a=%dtb=%dtc=%dn“,a,b,c); ,程序运行结果 a=11 b=21 c=31 a=11 b=22 c=3.300000 a=22 b=21 c=31,3. 空语句,空语句就是一个分号。,格式:,;,功能:,执行该语句不做任何操作,二、顺序结构程序设计,【例3.8】 有三个电阻并联,其阻值分别为5、15、20,编程求并联后的电阻值。,#include stdio.h main() float r,r1,r2,r3; r1=5;r2=15;r3=20;r=1/(1/r1+1

9、/r2+1/r3);printf(并联电阻的值 r=%6.2fn,r); ,3.4 选择结构程序设计,问题提出:,计算分段函数:,y=,3-x x0,2/x x0,C语言用来设计条件选择结构程序的选择语句有两种: if语句、switch语句。,3.1.1 if语句,1、单分支选择if语句,if语句有三种形式:单分支选择if语句、双分支面具选择if语句、多分支选择if语句。,语句形式:,if (表达式) 语句;,语句执行流程:,一、if语句的三种形式,例:从键盘输入两个整数a和b,如果a大于b则交换两数,最后输出两个数。,#include ,输入a,b,ab,交换a、b,输出,结束,真,假,vo

10、id main()int a,b,t; scanf(“%d,%d“,if(ab) t=a;a=b;b=t;,printf(“a=%d,b=%dn“,a,b); ,注意:,(1)if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号将需要执行的多个语句括起,形成一个复合语句。,(2)if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,2、双分支选择if语句,语句形式:,if (表达式) 语句1; else 语句2 ;,语句执行流程:,表达式,语句1,真(非0),假(0),语句2,例:输入两个整数,输出其中

11、较大的数。,#include #include ,void main() int x,y,max; scanf(“%d,%d“,if(xy) max=x;else max=y;,printf(“max=%dn“,max); ,输入x,y,xy,max=x,输出最大值,结束,真,假,max=y,注意,if和else语句之间只能有一个语句,当ifelse之间的语句不只一句时,应用一对将语句括起。,if(ab) a+;b+; else a=0;b=10;,3、多分支选择if语句,语句形式:,if (表达式1) 语句1; else if (表达式2)语句2; else if (表达式n)语句n;els

12、e 语句n+1;,语句执行流程:,表达式1,语句1,真(非0),假(0),例:计算分段函数。,#include ,void main() float x,y;printf(“enter x:“);scanf(“ %f “,else if (x=1) y=x+5;else if (x10) y=2*x;else y=3/(x-10);,printf(“x=%.2f,y=%.2fn“,x,y); ,计算分段函数程序,if(x=10) printf(“not define x.n“);,【例3.11】 判别键盘输入字符的类别。 分析:我们可以根据输入字符的ASCII码来判别类型。由ASCII码表可知

13、:ASCII值小于32的为控制字符;在“0”和“9”之间的为数字;在“A”和“Z”之间为大写字母;在“a”和“z”之间为小写字母;其余则为其它字符。这是一个多分支选择的问题,可以考虑用if-else-if语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。,#include“stdio.h“ void main() char c;printf(“请输入一个字符: “);c=getchar();if(c=0 ,提示,(1)当if语句中出现多个“if”与“else”的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。“else”与“if”的匹配原则是“就近一致原则”,即

14、“else”总是与它前面最近的“if”相匹配。,(2)if语句中条件的写法应尽量简单。,语句含义:,语句形式:,当if语句中又包含若干个if语句时,则构成了if 语句嵌套的情形。,二、if语句的嵌套,if ( 表达式1)if ( 表达式2)语句1;,if ( 表达式1)if ( 表达式2)语句1;else语句2;,语句执行流程:,else与if的配对原则:,就近一致原则:,else与同一层最接近它,而又没有其它else语句与之相匹配的if语句配对。,【例3.12】 比较任意两个数a、b的大小关系。,void main() int a,b; printf(“please input a,b: “

15、); scanf(“%d%d“, ,三、使用if语句时应注意:,1) 在三种形式的if语句中,if关键字之后均为表达式。 2) 在if语句中,条件判断表达式必须用括号括起来, 在语句之后必须加分号。 3) 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用“ ”括起来组成一个复合语句。但要注意的是在“”之后不能再加分号。 例如:if(ab)a+;b+;else a=0;b=10;,3.2 switch语句,1、语句形式:,switch (表达式) case 常量1: 语句1;case 常量2: 语句2;case 常量3: 语句3;.c

16、ase 常量n: 语句n;default : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型 或 字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,case语句出 现的次序并 不影响执行 结果。,例:假设用0、1、26分别表示星期日、星期一星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednesday”。,#include “stdio.h“ void main() int n; scanf(“%d“, ,程序运行情况

17、如下: 3 Wednesday Thursday Friday Saturday error,在“switch”语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,因此会继续执行所有后面语句的情况。,为此,语言提供了一种break语句,其功能是可以跳出它所在的switch语句。,将上例修改如下:,#include “stdio.h“ void main() int n; scanf(“%d“, ,程序运行情况如下: 3 Wednesday,【例3.16】 下例为一个计算器程序。用户输入运算数和

18、四则运算符,输出计算结果。,void main() float a,b;char c;printf(“input expression: a+(-,*,/)b n“);scanf(“%f%c%f“, ,3、说明,多个case语句可以共用一组执行语句。,switch(grade) case A:case B:case C:printf(“grade=60n“);break;default:printf(“grade60“); ,各case和default子句的先后顺序可以变动,而不会影响程序执行结果。,default语句可以省略不用。,case和default与其后面的常量表达式间至少有一个空格

19、。,switch语句可以嵌套,break语句只跳出它所在的switch语句。,例:企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放奖金总数?,利润x x=10 10x20 20x40 40x60 60x100 100x,(int )x/10,常量 0,1 1,2 2,3,4 4,5,6 6,7,8,9,10 10以上,用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。,使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。,#include “stdio.h“ void main() flo

20、at x,y; int n; scanf(“%f“, ,程序如下:,1.main() int x=1,y=0,a=0,b=0;switch(x)case 1: switch(y)case 0: a+;break;case 1:b+;break;case 2: a+;b+;break;case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); ,结果: a=2,b=1,课堂练习,2.程序填空: 以下程序判断输入的整数能否被3或7整除. main() int x,f=0; scanf( “%d”, ,3.5 循环结构程序设计,在C语言中可以用以下语句来实现循环: 1. 用got

21、o语句和if语句构成循环; 2. 用while语句; 3. 用do-while语句; 4. 用for语句。,循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。,3.5.1 while语句,真(非零),循环体,假(零),1、while 语句的形式:while (表达式)循环体;,2 、 while 语句 常称为“当型”循环语句。,3、说明:,先判断表达式,后执行语句。,表达式同if语句后的表达式一样,可以是任何类型的表达式。,循环体多于一句时,用一对 括起。,while循环结构常用于循环次数不固定,根据是否满足某个条件决定循环与否的情况。,例:分析下列程序段的循环次数

22、,i=1; while (i=100) putchar(*); i+;,#include “stdio.h“ void main() float x;scanf(“ %f “,【例】输入一系列整数,判断其正负号,当输入0时,结束循环。,输入数据,为第一次判断做准备,while(x!=0),判断是否结束, if(x0) printf(“ + “);else printf(“ - “);scanf(“ %f “,判断正负号,#include “stdio.h“ void main() char ch;int num=0; ch=getchar();,【例】 统计从键盘输入的一行字符的个数(以回车键

23、作为输入结束标记)。,while(ch!=n),判断是否输入结束,num+; ch=getchar();,printf(“num=%dn“,num); ,注意,表达式在判断前,必须要有明确的值。,循环体中一般有改变条件表达式的语句。,while (表达式)后面没有分号。,3.5.2 do-while语句,1、 do-while的形式:do 循环体; while (表达式);,2、 do-while语句 常称为“直到型”循环语句。,真(非零),循环体,假(零),3、说明:,先执行语句,后判断表达式。,第一次条件为真时,while,do-while等价;第一次条件为假时,二者不同。,【例】 用do

24、-while语句编写程序统计从键盘输入的一行非空字符的个数(以回车键作为输入结束标记)。,#include “stdio.h“ void main() char ch;int num=0;ch=getchar();donum+;ch= getchar();while(ch!=n);printf(“num=%dn“,num); ,注意,在if、while语句中,表达式后面都没有分号,而在do-while语句的表达式后面则必须加分号。,do-while和while语句相互替换时,要注意修改循环控制条件 。,3.5.3 for语句,1、for的形式: for (初始表达式1;条件表达式2;循环表达式

25、3)循环体 ;,表达式1:用于循环开始前为循环变量设置初始值。,表达式2:控制循环执行的条件,决定循环次数。,表达式3:循环控制变量修改表达式。,循环体语句: 被重复执行的语句。,表达式3,计算表达式1,循环体,零,非零,for的下一条语句,2、执行过程,for(i=1;i=100;i+) sum=sum+i;,例如:,它相当于以下语句:i=1; while (i=100) sum=sum+i; i+; ,表达式1;,while(表达式2),表达式3;,3、 说明,三个表达式都可以是逗号表达式。,三个表达式都是任选项,都可以省略,但要注意省略表达式后,分号间隔符不能省略。,1、for语句中表达

26、式省略的形式(1)for语句一般形式中的“表达式1”可以省略;如: sum=0;i=1;for ( ; i=100;i+)sum=sum+i;,(2)表达式2省略,即不判断循环条件,循环无终止地进行下去;如: for(sum=0,i=1;i+) if(i100) break;sum=sum+i;,(3)表达式3也可以省略,但此时保证循环能正常结束如:for(sum=0,i=1;i=100;) sum=sum+i;i+;,(4) 可以省略表达式1和表达式3,只有表达式2,如:i=1; sum=0; for (;i=100;) sum=sum+i;i+; ,i=1;sum=0; while (i=

27、100) sum=sum+i;i+; ,相当于,while (1) 循环体;即不设初值,不判断条件,循环变量不增值。无终止地执行循环体。,(5)三个表达式都可省略,如 for ( ; ; ) 循环体;,1、for语句中表达式省略的形式,如: sum=0,i=1;for(;) if(i100) break;sum=sum+i; i+;,相当于,(6)循环体为空语句对for语句,循环体为空语句的一般形式为:for (表达式1;表达式2;表达式3) ;如:for(sum=0,i=1;i=100;sum+=i, i+) ;,1、for语句中表达式省略的形式,要在显示器上复制输入的字符,输入的字符为.时

28、, 结束循环。输入abcdefg. 输出abcdefg.while( putchar(getchar( ) )!=. ) ;,(1)在进入累加前先给累加器赋初值(一般为0); (2)用循环语句实现累加; for(循环变量赋初值;循环条件;循环变量改变规律) (3)循环体语句的设计。累加器当前值=累加器原值+循环变量当前值 ;,典型例题分析,【例】 求累加和1+2+3+1000,基本方法:,属于“累加器”类型问题。,累加器赋初值,求偶数和 2+4+6+100,参考程序:,void main() long int k,s;,s=0;,for(k=1;k=1000;k+)s=s+k;,printf(

29、“ s=%ld “,s); ,累加,思考,(1)给累乘器赋初值,一般为1; (2)用循环语句实现累乘; for(循环变量赋初值;循环条件;循环变量改变规律) (3)循环体设计。累乘器当前值=累乘器原值*循环变量当前值;,例5-5: 求累乘积。 如:123.100,基本方法:,属于“累乘器”类型问题。,累乘器赋初值,求n!=1 2 3 n,参考程序:,void main() double s=1;,int k;,for(k=1;k=100;k+)s=s*k;,printf(“ s=%lf “,s); ,累乘,思考,例5-6 判断一个数是否为素数?,一个数x在2,sqrt(x)范围内没有因子,我们

30、就称其为素数(质数),主要编程方法:循环变量终值法、标记变量法,#include “ math.h “ void main() int x,k; scanf(“ %d “,排除法:如果有因子,不再往下判断是否是素数,循环变量终值法,for(k=2;k=sqrt(x);k+) if(x%k=0) break;,if(ksqrt(x)printf(“ %d is a prime “ ,x); else printf(“ %d is not a prime “ ,x); ,在判断范围内无因子,程序正常终止,有因子,程序非正常终止,#include “ math.h “ void main() int

31、 x,k,f=1; scanf(“ %d “,排除法:如果有因子,不再往下判断是否是素数,for(k=2;k=sqrt(x);k+) if(x%k=0) f=0;break; ,if(f=1)printf(“ %d is a prime “ ,x); else printf(“ %d is not a prime “ ,x); ,在判断范围内无因子,程序正常终止,有因子,程序非正常终止,标记变量法,例5-7 用0-9这十个数字可以组成多少无重复的三位数?,编程方法: “枚举法” 按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采

32、纳这个解,否则抛弃它。对于所列举的值,既不能遗漏也不能重复。,#include “stdio.h“ void main() /*a,b,c代表百位、十位、个位*/ int x,a,b,c,num=0; /*num存放满足条件的数的个数,注意num要赋初值*/for(x=100;x=999;x+) a=x/100;b=x/10%10;c=x%10;if(a!=b ,编程方法: “递推法”,例5-8 裴波那契数列的第1、2项分别为1、1,以后各项的值均是其前两项之和。求前30项菲波那契数。,所谓递推法就是从初值出发,归纳出新值与旧值间的关系,直到求出所需值为止。新值的求出依赖于旧值,不知道旧值,无

33、法推导出新值。数学上递推公式正是这一类问题。,f1-第一个数 f2-第二个数 f3-第三个数f1=1; f2=1; f3=f1+f2;,以后只要改变f1,f2的值,即可求出下一个数.f1=f2;f2=f3; f3=f1+f2;,递推,void main() long f1=1, f2=1, f3;int k;,参考程序:,printf(“ %ldt%ldt “, f1,f2);,for(k=3;k=30;k+) f3=f1+f2;printf(“ %ldt “,f3);f1=f2; f2=f3;,注意f1、f2、f3、x 的类型,递推,3.5.4 goto语句以及用goto语句构成的循环,1、

34、语句形式:goto 语句标号;,例如: goto label;label: .,语句标号用标识符表示,它的定名规则与变量名相同。,2、语句执行流程: 在程序执行过程中,如果遇到goto语句,则程序执行流程无条件地转向语句标号后的语句继续执行。,3、说明,语句标号仅仅对goto 语句有效,对其它语句不影响。,同一个程序中,不允许有同名标号。,goto语句通常与条件语句配合使用。可用来实现条件转移、构成循环、跳出循环体等功能,【例】 分析下面程序的运行结果:,#include “stdio.h“ void main() char c;loop:c=getchar();if(c=n) goto en

35、d;putchar(c);goto loop;end:printf(“The endn“); ,程序运行情况为:123asd 123asdThe end,1.break语句,3.5.5 break语句和continue语句,(1) 语句形式: break;,(2)作用: 结束break所在的 switch语句。结束当前循环,跳出break所在的循环结构。,【例】 求300以内能被17整除的最大的数。,#include “stdio.h“ void main() int x,k; for(x=300;x=1;x-)if(x%17=0) break; printf(“x=%dn“,x); ,找到满

36、足条件的最大数,结束循环,(1)语句形式: continue;,(2)语句作用: 结束本次循环。,2、continue 语句,(3)语句执行流程: continue语句可以结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。,【例】 求300以内能被17整除的所有整数。,#include “stdio.h“ void main() int x,k;for(x=1;x=300;x+) if(x%17!=0) continue;printf(“%dt“,x); ,while(条件) 语句A;break;语句 B; ,真,语句B,条件,语句A,break

37、,假,结束循环,4、break语句与continue语句的区别,至此位置,while(条件) 语句A;continue;语句 B; ,真,语句B,条件,语句A,continue,假,结束循环,至此位置,#include “stdio.h“ void main() int a, b;for(a=1,b=1; a=10) break;if(b%3=1)b+=3; continue;printf(“%dn“,a); ,【例】 分析以下程序的运行结果。,程序运行结果:4,在循环体语句中又包含有另一个完整的循环结构的形式,称为循环的嵌套。如果内循环体中又有嵌套的循环语句,则构成多重循环。,3.5.6 循

38、环的嵌套,嵌套在循环体内的循环体称为内循环,外面的循环称为外循环。,while 、do-while、for三种循环都可以互相嵌套。,循环语句之间的关系,真,真,外循环初始条件,内循环初始条件,内循环体,外循环条件,假,内循环条件,假,内循环循环条件,外循环循环条件,循环结束,二重循环嵌套结构执行流程,例:输出图形:,*,编程分析:,采用双重循环,一行一行输出。,每一行输出步骤:一般3步。1)光标定位,3)每输完一行光标换行(n),2)输出图形。例如本题:共4行,若行号用k表示,则每一行有2*k-1个*号。,#include “ stdio.h “ void main() int k1,k2;f

39、or(k1=1;k1=4;k1+) putchar(t);for(k2=1;k2=k1;k2+)putchar(b);,for(k2=1;k2=k1*2-1;k2+)putchar(*);,putchar(n);, ,定位(还可以用空格的方法),输出,3.5.7 循环结构程序设计举例,【例1】 求,#include “stdio.h“ void main() float s=0,f1=2,f2=1,f=1,t,n; /*累加器赋初值*/for(n=1;n=10;n+) s=s+f*f1/f2; /*累加器当前值=累加器原来的值+新的要加的数据*/f=f*(-1);t=f2;f2=f1;f1=f

40、1+t; /*为求下一个要加的数据做准备*/ printf(“s=%fn“,s); ,【例2】输入任意一个整数,将其逆序输出,例如输入1234,输出4321。,include “stdio.h“ void main() long y,n;scanf(“%ld“, ,【例3】猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个。以后每天早晨猴子都吃掉前一天剩下的一半多一个。到第5天时,猴子再去吃桃子时发现只剩下1个桃子。问第一天猴子摘了多少个桃子?,#include “stdio.h“ void main() int x=1,n;for(n=4;n=1;n-)x=(x+1)*2;printf(“

41、%d“,x); ,【例4】 猜数游戏:任意设置一个整数,请用户从键盘上输入数据猜想设值的数是什么,告诉用户是猜大了还是小了。10次以内猜对,用户获胜。否则,告诉用户设置的数据是什么。,#include “stdio.h“ void main() int num=123,x,n;printf(“hint:0num) printf(“bigger!n“);if(xnum) printf(“smaller!n“);if(n=11) printf(“Lost!the number is %dn“,x); ,1、写出程序运行结果: void main() int i,j,x=0;for(i=0;i2;i

42、+)x+;for(j=0;j=3;j+)if(j%2) continue;x+;x+; printf(“x=%dn”,x); ,运行结果: x=8,练 习,void main() int x=1,y=0,a=0,b=0;switch(x)case 1: switch(y)case 0: a+;break;case 1:b+;break;case 2: a+;b+;break;case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); ,运行结果: a=2,b=1,2、将程序补充完整。以下程序从输入数据中统计正整数和负整数的个数.用输入0来结束输入.变量i存放正整数个数,变量j存放负整数的个数. void main() 1 i,j,n; i=j=0; scanf(“%d”, ,3.百钱买百鸡.公鸡5元一只,母鸡3元一只,小鸡1元三只;一百元买一百只鸡,且公鸡,母鸡,小鸡都要有.有几种买法? void main() int i,j,k,n=0; for(i= 1 )for(j= 2 )k=100-i-j;if( 3 =100)n+; printf(i=%d,j=%d,k=%dn”,i,j,k); printf(“n n=%d”,n); ,4、编程输出下面的数字金字塔(1到9 )。,112112321.12345678987654321,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报