计算机软件基础自考.ppt
计算机计算机 软件基础软件基础第一篇第一篇C语言程序设计基础语言程序设计基础第二章顺序结构、选择结构和第二章顺序结构、选择结构和第二章顺序结构、选择结构和第二章顺序结构、选择结构和循环结构的程序设计循环结构的程序设计循环结构的程序设计循环结构的程序设计第二章顺序结构、选择结构和第二章顺序结构、选择结构和 循环结构的程序设计循环结构的程序设计1 1 1 1、顺序结构、顺序结构、顺序结构、顺序结构用来表示一个操作系列,它的执行用来表示一个操作系列,它的执行用来表示一个操作系列,它的执行用来表示一个操作系列,它的执行过程是按顺序执行各序列。过程是按顺序执行各序列。过程是按顺序执行各序列。过程是按顺序执行各序列。2 2 2 2、选择结构、选择结构、选择结构、选择结构也称分支结构,根据假定条件,选也称分支结构,根据假定条件,选也称分支结构,根据假定条件,选也称分支结构,根据假定条件,选择执行某个分支操作。择执行某个分支操作。择执行某个分支操作。择执行某个分支操作。3 3 3 3、循环结构、循环结构、循环结构、循环结构根据条件重复执行某些操作。根据条件重复执行某些操作。根据条件重复执行某些操作。根据条件重复执行某些操作。一、顺序结构程序设计一、顺序结构程序设计顺序结构程序是最简单,最基本的程序设计,它由顺序结构程序是最简单,最基本的程序设计,它由简单的语句组成,程序的执行是按照程序员书写的简单的语句组成,程序的执行是按照程序员书写的顺序进行的,没有分支、转移、循环,且每条语句顺序进行的,没有分支、转移、循环,且每条语句都将被执行。顺序结构的程序是从上到下依次执行都将被执行。顺序结构的程序是从上到下依次执行的,其执行流程如图所示。的,其执行流程如图所示。图图 顺序结构执行流程顺序结构执行流程一、顺序结构程序设计一、顺序结构程序设计【实例实例2.1】求三角形的周长和面积。求三角形的周长和面积。程序分析:程序分析:输入三条边输入三条边a、b、C;计算周长:计算周长:l=a+b+c;计算面积:根据海伦公式,半周长计算面积:根据海伦公式,半周长hl=(a+b+c)2;三角形面积:三角形面积:s=sqrt(hl*(hla)*(hl -b)*(h1一一c);输出三角形的面积和周长。输出三角形的面积和周长。一、顺序结构程序设计一、顺序结构程序设计#include#include/添加数学函数所需头文件添加数学函数所需头文件void main()float a,b,c,l,h1,s;printf(请输入能组成三角形的三条边:请输入能组成三角形的三条边:n);/输出提示文字输出提示文字 scanf(%f,%f,%f,&a,&b,&c);/输入输入a、b、c的值的值 printf(a=%f,b=%f,c=%fn,a,b,c);/输入输入a、b、c的值的值 l=a+b+c;/计算三条边的和计算三条边的和 h1=l/2;/为为h1赋值赋值 s=sqrt(h1*(h1-a)*(h1-b)*(h1-c);/计算三角形的面积计算三角形的面积 printf(三角形的周长和面积分别为:三角形的周长和面积分别为:n);/输出面积的值输出面积的值 printf(l=%4.2f,s=%4.2f,l,s);/输出输出l和和s的值的值编写程序如下:编写程序如下:编写程序如下:编写程序如下:一、顺序结构程序设计一、顺序结构程序设计 一、赋值语句一、赋值语句 1语句书写形式语句书写形式 变量名变量名=表达式;表达式;2功能功能 赋值语句的功能是把表达式值算出后赋给变量。赋值语句的功能是把表达式值算出后赋给变量。注意,赋值语句就是赋值表达式后加上一个分号,分号作为注意,赋值语句就是赋值表达式后加上一个分号,分号作为语句的结束标志。语句的结束标志。例例2-1写出写出a、b两变量交换值的语句。两变量交换值的语句。方法一:方法一:m=a;a=b;b=m;一、顺序结构程序设计一、顺序结构程序设计 二、字符输入与输出函数二、字符输入与输出函数1getchar()函数函数getchar()函数是字符输入函数,它的功能是从键盘上函数是字符输入函数,它的功能是从键盘上输入一个字符。一般形式为:输入一个字符。一般形式为:getchar()Char ch;“ch=getchar();”2putchar()函数函数putchar()函数为字符输出函数,它的作用是在显示器函数为字符输出函数,它的作用是在显示器上输出一个字符。其一般形式为:上输出一个字符。其一般形式为:putchar(c);一、顺序结构程序设计一、顺序结构程序设计 二、字符输入与输出函数二、字符输入与输出函数例例2-2#include stdio.hvoid main()int x=97;char y=a;putchar(a);putchar(y);putchar(97);putchar(x);putchar(c-2);一、顺序结构程序设计一、顺序结构程序设计1.1.格式输出函数格式输出函数printf一般形式一般形式函数功能函数功能示例示例 printf printf(“(“格式控格式控制字符串制字符串”,”,输出输出对象表列)对象表列)按指定格按指定格式输出若式输出若干个任意干个任意类型的数类型的数据据(1 1)int a=61,b=-34;int a=61,b=-34;printf(“%d%dn”,a,b);printf(“%d%dn”,a,b);输出结果为输出结果为6161,-34.34.nn输出完后换一行。输出完后换一行。printf(“a=%d,b=%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果为输出结果为:a=61:a=61,b=-34b=-34。printf(“%3dprintf(“%3d,%2dn”,a,b);%2dn”,a,b);输出结果为输出结果为:a=61a=61,b=-34b=-34。这里的。这里的%md%md中的中的m m为指定输出宽度,为指定输出宽度,如果如果m m大于输出的位数,则在输出数前面补空至大于输出的位数,则在输出数前面补空至m m位;如果位;如果m m小于输出的位数,则按实际位数输出。小于输出的位数,则按实际位数输出。三、格式输入与输出函数三、格式输入与输出函数一、计算机语言、算法、程序的概念一、计算机语言、算法、程序的概念格式输出函数格式输出函数格式输出函数格式输出函数printfprintf注意事项注意事项注意事项注意事项 :1.格式控制字符串包含两部分内容:格式控制字符串包含两部分内容:(1)格式说明符,如)格式说明符,如%d,%f,%c等;等;(2)照原样输出的字符。)照原样输出的字符。2.输出数据表列是需要输出的数据(也可以是表达输出数据表列是需要输出的数据(也可以是表达式),多于一个时用逗号分开。式),多于一个时用逗号分开。printf(“格式控制字符串格式控制字符串”,输出对象列表)输出对象列表)一、顺序结构程序设计一、顺序结构程序设计2.2.格式输出函数格式输出函数printf (续)(续)一般形一般形式式函数功能函数功能示例示例 printf printf(“(“格式格式控制字控制字符串符串”,输出输出对象对象 列列表)表)按指定格按指定格式输出若式输出若干个任意干个任意类型的数类型的数据据(2 2)float x=2.1,y=-31.42;float x=2.1,y=-31.42;printf(“%f,%fn”,x,y);printf(“%f,%fn”,x,y);输出结果为输出结果为:2.100000:2.100000,-34.420000;-34.420000;默认状态下,单精度保留默认状态下,单精度保留6 6位小数。位小数。printf(“x=%5.1f,y=%3.1fn”,x,y);printf(“x=%5.1f,y=%3.1fn”,x,y);输出结果为输出结果为:x=2.1:x=2.1,m=-31.4;%m.nfm=-31.4;%m.nf,整个输出,整个输出m m位,小数位占位,小数位占n n位,小数点也位,小数点也1 1位(位(m m小于输出位数时,整数部分按实小于输出位数时,整数部分按实际位数输出)。际位数输出)。(3 3)char ch1=a,ch2=b;char ch1=a,ch2=b;printf(“%c,%3cn”,ch1,ch2);printf(“%c,%3cn”,ch1,ch2);输出结果为输出结果为:a b:a b。一、顺序结构程序设计一、顺序结构程序设计2.2.格式输入函数格式输入函数scanf一般形式一般形式函数功函数功能能示例示例Scanf(“Scanf(“格式控制格式控制字符串字符串”,”,输入对输入对象象地址地址列表)列表)输入若输入若干个任干个任意类型意类型的数据的数据(1 1)scanf(“%d%d”,&a,&b);scanf(“%d%d”,&a,&b);运行时,输入运行时,输入3 53 5(回车),则(回车),则a=3,b=5a=3,b=5。(2 2)scanf(“%d,%d”,&a,&b);scanf(“%d,%d”,&a,&b);运行时,输入运行时,输入3,53,5(回车),则(回车),则a=3,b=5a=3,b=5。(3 3)scanf(“%2d%3d”,&a,&b);scanf(“%2d%3d”,&a,&b);运行时,输入运行时,输入1234512345(回车),则系统自动(回车),则系统自动将将1212赋赋a,345a,345赋给赋给b b。一、一、顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计格式输入函数格式输入函数格式输入函数格式输入函数scanfscanf注意事项注意事项注意事项注意事项 :(1)输入实型数据时不能规定精度。)输入实型数据时不能规定精度。如:如:scanf(“%3.2f“,&a);是错误的。是错误的。(2)格式控制字符串后面对应的是)格式控制字符串后面对应的是“变量地址变量地址”,而,而 不是不是“变量名变量名”。如:如:scanf(“%f%f“,&a,&b);是是正确正确的;的;scanf(“%f%f“,a,b);是是错误错误的;的;(3)”%c”格式输入时只能接受一个字符。格式输入时只能接受一个字符。如:如:scanf(“%c“,&a);若输入若输入a,则,则ch=a;若输入;若输入abc,则输出仍然为,则输出仍然为a。一、一、顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计 例2-3输入一个字符,输出它的ASCII代码值,反过来输入一个字符的ASCII代码值,输出这个字符。#include *程序中使用了字符输入,输出系统函数*main()int x;char ch;ch=getchar();*从键盘上键入一个字符到变量ch*printf(%dn,ch);*将ch的十进制ASCII码输出*scanf(%d,&x);*从键盘键入一个十进制整数*putchar(x);*输出X这个整数所代表的字符*一、一、顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计例2-4输入一个十进制整数,输出它的八进制、十六进制数。程序如下:#include stdio.hvoid main()int a;scanf(%d,&a);/*键入十进制数到a中*/printf(%on,a);/*输出a的八进制数*/printf(%xn,a);/*输出a的十六进制数*/一、一、顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计例25输入一个小写字母,输出相应的大写字母。#include stdio.hvoid main()char ch1;scanf(%c,&ch1);/*输入小写字母*/printf(%c,ch1-32);/*输出表达式chl一32相应的字符*/一、一、顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计例2-6编写求任意半径圆的周长和面积的程序,要求周长四舍五入精确到小数点后第2,面积到第3位。#include stdio.hvoid main()float r,c,s,pi=3.14159;scanf(%f,&r);/*键入半径值r*/c=2.0*pi*r;/*计算周长C*/s=pi*r*r;/*计算面积s*/printf(r=%f,c=%6.2f,s=%7.3fn,r,c,s);/*按要求输出结果*/二、选择结构程序设计二、选择结构程序设计由于顺序结构程序是顺序执行的,无分支、无转由于顺序结构程序是顺序执行的,无分支、无转移、无循环,因此它不可能处理复杂的问题,而在数移、无循环,因此它不可能处理复杂的问题,而在数据处理过程中,通常需要根据不同的条件进行判断,据处理过程中,通常需要根据不同的条件进行判断,然后选择程序进行处理,由此可见,顺序结构无法满然后选择程序进行处理,由此可见,顺序结构无法满足要求,而选择结构就是为了解决这类问题而设定的。足要求,而选择结构就是为了解决这类问题而设定的。一般而言,一般而言,C语言中选择语句包括两种:语言中选择语句包括两种:if语句和语句和switch语句。所谓选择语句就是通过判断条件来选择语句。所谓选择语句就是通过判断条件来选择执行哪一条语句,进而达到编程目的。执行哪一条语句,进而达到编程目的。二、选择结构程序设计二、选择结构程序设计1.1.关系运算符和关系表达式关系运算符和关系表达式运算符运算符含义含义关系表达式运关系表达式运算规则算规则结果类型结果类型优先级优先级 大于大于关系表达式关系表达式成成立立,则关系表,则关系表达式的值达式的值为真为真,即即为为1 1;关系表达式关系表达式不不成立成立,则关系,则关系表达式的值表达式的值为为假假,即,即为为0 0;“真真”或或假;假;“1”1”或或“0”0”。优先级相同,优先级相同,高于高于=,!,!=大于等于大于等于 小于小于=4)!=5的值为的值为真真。二、选择结构程序设计二、选择结构程序设计2.2.逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式运算符运算符含义含义对象类型对象类型结果类型结果类型优先级优先级!逻辑非逻辑非数值型、数值型、字符型等字符型等逻辑真逻辑真1 1逻辑假逻辑假0 0高高&逻辑与逻辑与中中|逻辑或逻辑或低低二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计逻辑运算符逻辑运算符说明说明说明说明 :(1)逻辑运算、算术运算和关系运算的优先级)逻辑运算、算术运算和关系运算的优先级由高到由高到低低排列的顺序为:排列的顺序为:(2)对于)对于逻辑与逻辑与,只有当运算符左边的值为真时,才,只有当运算符左边的值为真时,才计算运算符右边的表达式。如:计算运算符右边的表达式。如:!*,/,%+,-,=,b)&(c=b)后,后,c的值仍为的值仍为3。二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计逻辑运算符逻辑运算符说明(续)说明(续)说明(续)说明(续):(3)对于)对于逻辑或逻辑或,只有当运算符左边的值为假时,才,只有当运算符左边的值为假时,才计算运算符右边的表达式。如:计算运算符右边的表达式。如:int a=1,b=2,c=3;执行执行(ab)|(c=b)后,后,c的值仍为的值仍为3。(4)设)设x是一个整数,如果是一个整数,如果!x的值为的值为0,则,则x的值为非的值为非0,不能简单的说不能简单的说x的值为的值为1,因为非,因为非0的数不仅仅是的数不仅仅是1.二、选择结构程序设计二、选择结构程序设计单分支单分支if语句语句语句格式语句格式单分支单分支ifif语句流程语句流程if(if(表达式表达式 )语句语句 s;s;表达式表达式表达式表达式语句语句语句语句s s下一语句下一语句下一语句下一语句Y YN N二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计单单if语句语句说明说明说明说明:(1)语句)语句s可以是一个语句,也可以是若干语句,如果可以是一个语句,也可以是若干语句,如果是若干语句,必须用是若干语句,必须用“”将这些语句括起来。如:将这些语句括起来。如:if(ab)m=a;a=b;b=m;(2)注意)注意“=”(赋值)和(赋值)和“=”(相等)的区别。(相等)的区别。下面哪个代码段不能正确输出一个下面哪个代码段不能正确输出一个“*”号()。号()。A.int a;if(a=1)printf(“*”);B.int a;if(a=1)printf(“*”);C.int a=1;if(a=1)printf(“*”);D.int a=1;if(a=1)printf(“*”);二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计单单if语句语句说明(续):说明(续):说明(续):说明(续):(3)常量、变量和函数也是表达式,它们是表达式)常量、变量和函数也是表达式,它们是表达式的特列。的特列。(4)实型运算中,常量尽可能写成小数,如)实型运算中,常量尽可能写成小数,如10写成写成。二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计二、选择结构程序设计 例例2-7 铁路上托运行李规定,行李重量小于等于铁路上托运行李规定,行李重量小于等于20kg时免费,超时免费,超20kg时超过时超过部分每元,试编写根据行李重量计算运费的部分每元,试编写根据行李重量计算运费的C程序。程序。设行李重量用设行李重量用P,运费用,运费用W表示,它们都按实型对待,其数学式为:表示,它们都按实型对待,其数学式为:程序一:程序一:void main()float P,W;scanf(%f,&P);/*输入行李重量输入行李重量P*/if(P20.0)W=(P-20.0)*0.5;printf(P=%f,W=%fn,P,W);/*输出重量输出重量P和运费和运费W*/程序二程序二(只写运算部分只写运算部分):;二、选择结构程序设计二、选择结构程序设计双分支双分支if语句语句语句格式语句格式单分支单分支ifif语句流程语句流程if(if(表达式表达式 )语句语句 s1;s1;elseelse 语句语句 s2;s2;(语句(语句1 1和语句和语句2 2,都可以,都可以是复合语句)是复合语句)表达式表达式表达式表达式if if语句的下一个语句语句的下一个语句语句的下一个语句语句的下一个语句语句语句语句语句1 1语句语句语句语句2 2Y YN N二、选择结构程序设计二、选择结构程序设计嵌套的嵌套的if语句语句语句格式语句格式单分支单分支if语句流程语句流程if(表达式表达式1)if(表达式表达式2)语句语句1;else 语句语句2;else if(表达式表达式3)语句语句3;else 语句语句4;表达式表达式表达式表达式1 1语句语句语句语句1 1语句语句语句语句2 2表达式表达式表达式表达式2 2表达式表达式表达式表达式3 3语句语句语句语句3 3语句语句语句语句4 4Y YY YY YN NN NN N二、选择结构程序设计二、选择结构程序设计条件运算符(?)和条件表达式条件运算符(?)和条件表达式语句格式语句格式条件表达式流程条件表达式流程变量名变量名=表达式表达式1 1?表达式?表达式2 2:表达式:表达式3 3;(1)”?:”是是C中唯一的一中唯一的一个三目运算符;个三目运算符;(2)求值过程:如果表达)求值过程:如果表达式式1的值为的值为“真真”,那么整,那么整个个表达式取表达式表达式取表达式2的值,否的值,否则,取表达式则,取表达式3的值,并赋的值,并赋值给最左边的变量。值给最左边的变量。表达式表达式表达式表达式1 1取表达式取表达式取表达式取表达式2 2的值的值的值的值真真真真假假假假取表达式取表达式取表达式取表达式3 3的值的值的值的值二、选择结构程序设计二、选择结构程序设计例题例题2-8 有如下分段函数:有如下分段函数:y=-101(x0)试编写通过输入试编写通过输入x值,求值,求y值的程序。值的程序。二、选择结构程序设计二、选择结构程序设计单分支单分支if语句编程:语句编程:main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);if(x0)if(x0)if(x0)y=1;y=1;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);二、选择结构程序设计二、选择结构程序设计嵌套嵌套if语句编程(语句编程(1):):main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);if(x=0)if(x=0)if(x0)if(x0)y=-1;y=-1;elseelsey=0;y=0;elseelsey=1;y=1;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);二、选择结构程序设计二、选择结构程序设计嵌套嵌套if语句编程(语句编程(2):):main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);if(x0)if(x0)y=-1;y=-1;elseelse if(x=0)if(x=0)y=0;y=0;elseelsey=1;y=1;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);二、选择结构程序设计二、选择结构程序设计条件表达式编程:条件表达式编程:main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);y=x0?-1:(x=0?0:1);y=xb)m=a;a=b;b=m;if(bc)m=b,b=c,c=m;/*此为逗号表达式语句此为逗号表达式语句*/if(ab)m=a,a=b,b=m;printf(a=%6.2f,b=%6.2f,c=%6.2fn,a,b,c);二、选择结构程序设计二、选择结构程序设计例例2-12编写求编写求a、b、c、d四个数中最大数的程序。四个数中最大数的程序。#include stdio.hvoid main()float a,b,c,d,max;scanf(%f%f%f%f,&a,&b,&c,&d);/*输入输入4个数个数*/max=a;/*先假设第先假设第1个数个数a最大最大,将其保存在将其保存在max中中*/if(bmax)max=b;/*下面各数依次和当前最大数比较下面各数依次和当前最大数比较*/if(cmax)max=c;if(dmax)max=d;printf(max=%fn,max);/*输出最大数输出最大数*/二、选择结构程序设计二、选择结构程序设计 例例2-13 输入一个字符,判断它是否为大写字母,若是则变成小写字母,若输入一个字符,判断它是否为大写字母,若是则变成小写字母,若不是则不处理。最后输出这个字符。不是则不处理。最后输出这个字符。#include stdio.hvoid main()char ch;scanf(%c,&ch);/*输入字符输入字符*/if(ch=A&ch=A&ch=Z)?ch+32:ch;二、选择结构程序设计二、选择结构程序设计例例2-14判断某一年是否为闰年的条件是符合下面二者之一:判断某一年是否为闰年的条件是符合下面二者之一:能被能被4整除,但不能被整除,但不能被100整除。整除。能被能被400整除。试编写整除。试编写C程序。程序。判断闰年的条件,可用一个逻辑表达式来表示:判断闰年的条件,可用一个逻辑表达式来表示:(year%4=0&year100!=0)|year400=0程序一:程序一:#include stdio.hvoid main()int year;scanf(%d,&year);if(year%4=0&year%100!=0)|year%400=0)printf(%d is a leap yearn,year);else printf(%d is not a leap yearn,year);二、选择结构程序设计二、选择结构程序设计程序二程序二(流程如图流程如图2-5所示所示):#include stdio.hvoid main()int year,a;/*用用a=1标志闰年标志闰年*/scanf(%d,&year);if(year%4!=0)a=0;else if(year%100!=0)a=1;else if(year%400!=0)a=0;else a=1;if(a=1)printf(%d is a leap yearn,year);else printf(%d is a not a leap yearn,year);三、循环结构程序设计三、循环结构程序设计 许多问题都会遇到规律性的重复操作。例如,求许多问题都会遇到规律性的重复操作。例如,求和问题、求有一定规律的问题和一些迭代等问题都和问题、求有一定规律的问题和一些迭代等问题都会用到循环结构。循环结构是结构化程序设计的基会用到循环结构。循环结构是结构化程序设计的基本结构之一,它与顺序结构、选择结构共同构成了本结构之一,它与顺序结构、选择结构共同构成了作为各种复杂程序的基本构造单元。本节重点讲解作为各种复杂程序的基本构造单元。本节重点讲解3种循环语句:种循环语句:while语句、语句、dowhile语句和语句和for语句。语句。三、循环结构程序设计三、循环结构程序设计条件(当型)循环(条件(当型)循环(while)语句书写形式语句书写形式流程图流程图while(while(表达式表达式)循环体;循环体;表达式非表达式非表达式非表达式非0 0?循环体循环体循环体循环体 结束循环,结束循环,结束循环,结束循环,执行下面的执行下面的执行下面的执行下面的语句语句语句语句Y YN N例例2-15编写求编写求S=1+2+100的程序。的程序。#include stdio.hvoid main()int i=1,s=0;while(i=100)s=s+i;i+;printf(s=%dn,s);三、循环结构程序设计三、循环结构程序设计三、循环结构程序设计三、循环结构程序设计直到型循环(直到型循环(do-while)语句书写形式语句书写形式流程图流程图DoDo 循环体;循环体;while(while(表达式表达式);表达式非表达式非表达式非表达式非0 0?循环体循环体循环体循环体 结束循环,结束循环,结束循环,结束循环,执行下面的执行下面的执行下面的执行下面的语句语句语句语句Y YN N例例2-16编写求编写求S=1+2+100的程序。的程序。#include stdio.hvoid main()int i=1,s=0;do s=s+i;i+;while(i=100);printf(s=%dn,s);三、循环结构程序设计三、循环结构程序设计三、循环结构程序设计三、循环结构程序设计次数型循环(次数型循环(for)语句书写形式语句书写形式流程图流程图for(for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3)循环体;循环体;表达式表达式表达式表达式2 2非非非非0 0?循环体循环体循环体循环体 结束循环,结束循环,结束循环,结束循环,执行下面的执行下面的执行下面的执行下面的语句语句语句语句Y YN N计算计算计算计算 表达式表达式表达式表达式1 1计算计算计算计算 表达式表达式表达式表达式3 3例例2-17编写求编写求s=1+2+100的程序。的程序。#include stdio.hvoid main()int i,s=0;for(i=1;i=100;i+)/*i从从1至至100,每次加,每次加1*/s=s+i;/*不断把各次不断把各次i值加到值加到s中中*/printf(s=%dn,s);三、循环结构程序设计三、循环结构程序设计三、循环结构程序设计三、循环结构程序设计循环辅助语句(循环辅助语句(break)(1)语句功能:)语句功能:Break语句只能用于语句只能用于switch或循环语或循环语句当中,其句当中,其功能功能是跳出是跳出switch语句或跳出本层循环,语句或跳出本层循环,转去执行其他后继语句。转去执行其他后继语句。(2)使用技巧:当循环次数不确定,需要在循环语)使用技巧:当循环次数不确定,需要在循环语句执行过程中提前结束循环,或需要循环语句中提供句执行过程中提前结束循环,或需要循环语句中提供多个出口时,可用多个出口时,可用break语句。语句。(3)使用方法:在循环语句中,)使用方法:在循环语句中,break语句一般与语句一般与if语句配合使用,用语句配合使用,用if语句设置退出条件,语句设置退出条件,break语句则语句则执行退出操作。执行退出操作。三、循环结构程序设计三、循环结构程序设计循环辅助语句(循环辅助语句(break)#include stdio.hvoid main()int i,s=0;for(i=1;i10)break;printf(i=%d,s=%dn,i,s);三、循环结构程序设计三、循环结构程序设计循环辅助语句(循环辅助语句(continue)(1)语句功能:执行)语句功能:执行continue时,循环体中时,循环体中continue 下面的语句都不执行,而重新进行循环判断,以决定下面的语句都不执行,而重新进行循环判断,以决定是否继续进行下次循环。是否继续进行下次循环。(2)使用方法:在循环语句中,)使用方法:在循环语句中,continue语句一般语句一般与与if语句配合使用。语句配合使用。break与与continue的区别:的区别:continue只结束本次循环重只结束本次循环重新进行下次判断,而新进行下次判断,而break结束整个循环。结束整个循环。三、循环结构程序设计三、循环结构程序设计循环辅助语句(循环辅助语句(continue)#include stdio.h#include stdio.hvoid main()void main()int i,s=0;int i,s=0;for(i=1;i=100;i+)for(i=1;i10)break;if(s10)break;printf(i=%d,s=%dn,i,s);printf(i=%d,s=%dn,i,s);三、循环结构程序设计三、循环结构程序设计例例2-18:分析下列程序:分析下列程序,写出运行结果。写出运行结果。#include stdio.h#include stdio.hvoid main()void main()int i,j,k;int i,j,k;for(i=1;i=3;i+)/*i for(i=1;i=3;i+)/*i从从从从1 1到到到到3 3变化变化变化变化,输出输出输出输出3 3行行行行*/for(j=1;j=3;j+)/*for(j=1;j=3;j+)/*每行输出每行输出每行输出每行输出3 3个算式个算式个算式个算式*/k=i*j;k=i*j;printf(%1d*%1d=%1d ,i,j,k);printf(%1d*%1d=%1d ,i,j,k);printf(n);/*printf(n);/*每行输出完后换一行每行输出完后换一行每行输出完后换一行每行输出完后换一行*/三、循环结构程序设计三、循环结构程序设计例例2-19:分析下列程序:分析下列程序,写出运行结果。写出运行结果。#include stdio.h#include stdio.hvoid main()void main()int i,j;int i,j;for(i=1;i=3;i+)for(i=1;i=3;i+)for(j=1;j=11-i;j+)for(j=1;j=11-i;j+)printf();printf();for(j=1;j=2*i-1;j+)for(j=1;j=2*i-1;j+)printf(*);printf(*);printf(n);printf(n);for(i=1;i=2;i+)for(i=1;i=2;i+)for(j=1;j=8+i;j+)for(j=1;j=8+i;j+)printf();printf();for(j=1;j=5-2*i;j+)for(j=1;j=5-2*i;j+)printf(*);printf(*);printf(n);printf(n);三、循环结构程序设计三、循环结构程序设计例例2-20输入一个整数,判断是否为素数输入一个整数,判断是否为素数 当型结构程序如下:当型结构程序如下:当型结构程序如下:当型结构程序如下:#include stdio.h#include stdio.hvoid main()void main()int m,i=2;int m,i=2;scanf(%d,&m);scanf(%d,&m);/*i /*i从从从从2 2开始开始开始开始,若若若若mm是是是是i i的倍数则结束循环的倍数则结束循环的倍数则结束循环的倍数则结束循环,否则否则否则否则i i不断加不断加不断加不断加1,1,重复判断重复判断重复判断重复判断*/while(m%i!=0)i+;while(m%i!=0)i+;if(m=i)/*if(m=i)/*当当当当i i和和和和mm相等时相等时相等时相等时,说明说明说明说明mm除以除以除以除以2 2m-1m-1均除不尽均除不尽均除不尽均除不尽*/printf(%d is a prime mubern,m);printf(%d is a prime mubern,m);else else printf(%d is not a prime mubern,m);printf(%d is not a prime mubern,m);三、循环结构程序设计三、循环结构程序设计 若要求出若要求出45以内所有素数,且每行输出以内所有素数,且每行输出7个,方法如下:个,方法如下:#include stdio.h#include stdio.hvoid main()void main()int i,k=1,m;int i,k=1,m;printf(%5d,2);/*printf(%5d,2);/*先输出最小的素数先输出最小的素数先输出最小的素数先输出最小的素数2,2,输出宽度为输出宽度为输出宽度为输出宽度为5 5是为了数据分开是为了数据分开是为了数据分开是为了数据分开*/for(m=3;m=45;m=m+2)/*for(m=3;m=45;m=m+2)/*从从从从3 3开始开始开始开始4545以内奇数循环以内奇数循环以内奇数循环以内奇数循环*/i=2;i=2;while(m%i!=0)i+;while(m%i!=0)i+;if(m=i)if(m=i)printf(%5d,m);/*l=printf(%5d,m);/*l=输出素数输出素数输出素数输出素数*/k+;/*k+;/*素数个数加素数个数加素数个数加素数个数加l*/l*/if(k%7=0)/*k if(k%7=0)/*k为为为为7 7的倍数换一行的倍数换一行的倍数换一行的倍数换一行*/printf(n);printf(n);三、循环结构程序设计三、循环结构程序设计例例2-21输出输出Fibonacci数列前数列前8个数,每行输出个数,每行输出4个。这个数列有如个。这个数列有如下特点:一个数列从第下特点:一个数列从第3个数开始,各个数等于前两个数之和。个数开始,各个数等于前两个数之和。#include stdio.h void main()int i,a=1,b=2;/*设前两个数为设前两个数为1和和2*/for(i=1;i=4;i+)/*i从从1到到4,循环循环4次共输出次共输出8个数个数*/printf(%5d%5d,a,b);/*每次输出两个数每次输出两个数*/if(i%2=0)/*若若i是是2倍数倍数,即每行输够即每行输够4个个,则换一行则换一行*/printf(n);a=a+b;/*形成下面的两个数形成下面的两个数*/b=a+b;1 2 3 5 8 13 21 341 2 3 5 8 13 21 34 a b a b a b a b a b a b a b a