第3章程序结构_第1页
第3章程序结构_第2页
第3章程序结构_第3页
第3章程序结构_第4页
第3章程序结构_第5页
已阅读5页,还剩182页未读 继续免费阅读

下载本文档

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

文档简介

1、3.1 顺序程序设计举例顺序程序设计举例3.2 C语句分类语句分类3.3 赋值赋值语句语句3.4 数据的输入输出数据的输入输出3.1顺序程序设计举例 例3.1 有人用温度计测量出用华氏法表示的温度(如 F,今要求把它转换为以摄氏法表示的温度(如 C) 。解题思路:找到二者间的转换公式解题思路:找到二者间的转换公式)32(95fcf代表华氏温度代表华氏温度,c代表摄氏温度代表摄氏温度3.1顺序程序设计举例算法:算法:输入f的值输出c的值)32(95fc 例例3.1 有人用温度计测量出用华氏法表示有人用温度计测量出用华氏法表示的温度的温度(如如 F,今要求把它转换为以摄氏,今要求把它转换为以摄氏法

2、表示的温度法表示的温度(如如 C) 。N-S图图3.1顺序程序设计举例)32(95f#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; 定义定义f和和c为单精度浮点型变量为单精度浮点型变量指定指定f的值的值计算计算c的值的值输出输出f和和c的的值值3.1顺序程序设计举例 例3.2 计算存款利息。有1000元,想存一年。有三种方法可选: (1)活期,年利率为r1 (2)一年期定期,年利率为r2 (3)存两次半年定期,年利率为r3 请分别计算出一年后按三种方法所得到

3、的本息和。3.1顺序程序设计举例n解题思路:确定计算本息和的公式。从数学知识可知:若存款额为p0,则:活期存款一年后本息和为: p1=p0(1+r1)一年期定期存款,一年后本息和为: p2=p0(1+r2)两次半年定期存款,一年后本息和为: ) 23+)(123+p0(1=p3rr3.1顺序程序设计举例n算法:输入p0,r1,r2,r3的值计算p1=p0(1+r1)计算p2=p0(1+r2)计算p3=p0(1+ )(1+ )输出p1,p2,p323r23r3.1顺序程序设计举例#include int main ( ) float p0=1000, r1=0.0036,r2=0.0225, r

4、3=0.0198, p1, p2, p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%fn%fn%fn”,p1, p2, p3); return 0; 定义变量定义变量同时同时赋予初值赋予初值3.2 C语句3.2.1 C语句的作用和分类3.2.2 最基本的语句-赋值语句3.2.1 C语句的作用和分类语句分为以下5类:(1)控制语句 (2) 函数调用语句(3) 表达式语句(4) 空语句(5) 复合语句(一)控制语句: 完成一定的控制功能 1 if() else 条件语句

5、2 for() 循环语句 3 while() 循环语句 4 do while() 循环语句 5 continue 结束本次循环语句 6 break 中止执行switch或循环语句 7 switch() 多分支选择语句 8 goto 转向语句 9 return 返回语句(二)函数调用语句 由一个函数调用加一个分号构成例: printf(“This is a C statement.”);(三)表达式语句 由一个表达式加一个分号构成一个语句 a = 3 ;(四)空语句 只有一个分号的语句 (什么也不做)n用来做流程的转向点n用来作为循环语句中的循环体(五)复合语句 用一对 括起来的语句 z=x+y

6、;t=z/100;printf(“%f”,t); n语句块内可以定义变量变量仅在定义它的复合语句内有效变量必须在复合语句的开头定义n复合语句可以用在任何可以使用语句的地方例:#include main() int a = 0; int a = 1; printf(In: a = %dn, a); printf(Out: a = %dn, a); 3.3 最基本的语句-赋值语句n在C程序中,最常用的语句是:赋值语句输入输出语句n其中最基本的是赋值语句3.4 数据的输入输出3.4.1 输入输出举例输入输出举例3.4.2 有关数据输入输出的概念有关数据输入输出的概念3.4.3 用用printf函数输

7、出数据函数输出数据3.4.4 用用scanf函数输入数据函数输入数据3.4.5 字符数据的输入输出字符数据的输入输出3.4.1 输入输出举例例3.5 求 方程的根。a、b、c由键盘输入 设 02cbxaxacb423.4.1 输入输出举例n解题思路:首先要知道求方程式的根的方法。n由数学知识已知:如果 0,则一元二次方程有两个实根:acb42aacbbx2421aacbbx2422abp2aacbq242若记若记qpx1qpx2#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&

8、amp;b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;程序中程序中调用数学函数调用数学函数sqrt输入输入a,b,c的值的值#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(dis

9、c)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;输入的是双输入的是双精度型实数精度型实数#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0

10、;要求输入要求输入3个实数个实数自动自动转成实数转成实数后赋给后赋给a,b,c#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;输出输出数据占数据占7列,其中小数占列,其中小数占2列列3.4 有关数据输入输出的概念n几乎每一个C程

11、序都包含输入输出n输入输出是程序中最基本的操作之一3.4 有关数据输入输出的概念(1) 所谓输入输出是以计算机主机为主体而言的n从计算机向输出设备(如显示器、打印机等)输出数据称为输出n从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入3.4 有关数据输入输出的概念(2) 语言本身不提供输入输出语句n输入和输出操作是由C标准函数库中的函数来实现的nprintf和scanf不是语言的关键字,而只是库函数的名字nputchar、getchar、puts、gets3.4 有关数据输入输出的概念(3)在使用输入输出函数时,要在程序文件的开头用预编译指令#include 或#includ

12、e stdio.h3.4.1 用printf函数输出数据n在C程序中用来实现输出和输入的,主要是printf函数和scanf函数n这两个函数是格式输入输出函数n用这两个函数时,必须指定格式3.4.1 用printf函数输出数据1.printf函数的一般格式printf(格式控制,输出表列)例如:(1)printf(”i=%d,c=%cn”,i,c);格式声明格式声明3.4.1 用printf函数输出数据1.printf函数的一般格式printf(格式控制,输出表列)例如:printf(”i=%d,c=%cn”,i,c);普通字符普通字符3.4.1 用printf函数输出数据1.printf函数

13、的一般格式printf(格式控制,输出表列)例如:printf(”i=%d,c=%cn”,i,c);可以是常量、变量或表达式可以是常量、变量或表达式3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符格式符格式符。用来输出一个有符号的。用来输出一个有符号的十进制十进制整数整数n可以在格式声明中指定输出数据的域宽可以在格式声明中指定输出数据的域宽(所占的列(所占的列数)数) 若域宽大于所需的最小宽度,用空格来填充;若域宽大于所需的最小宽度,用空格来填充; 若域宽小于数据的长度,域宽失效,数据全部输若域宽小于数据的长度,域宽失效,数据全部输出出; 若域宽为正,即数据向右靠,左边补空

14、格;若域宽为正,即数据向右靠,左边补空格; 若域宽为负则数据向左靠,右边补空格。若域宽为负则数据向左靠,右边补空格。3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符格式符格式符。用来输出一个有符号的。用来输出一个有符号的十进制十进制整数整数nprintf(”%5d,%-5d,%3dn”,12,-345,12345);n%d输出输出int型数据型数据n%ld输出输出long型数据型数据n格式说明与输出表列中的数据个数,类型与顺序,必须一致。格式说明与输出表列中的数据个数,类型与顺序,必须一致。3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符格式符格式符。用

15、来输出一个字符。用来输出一个字符 char ch=a; printf(”%c”,ch); 或或 printf(”%5c”,ch);输出字符输出字符:a3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符格式符格式符。用来输出一个字符串。用来输出一个字符串 printf(”%s”,”CHINA”); 输出字符串输出字符串:CHINA3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符f格式符格式符。用来输出实数,以小数形式输出。用来输出实数,以小数形式输出不不指定指定输出输出数据宽度和小数位数,用数据宽度和小数位数,用%f 例例3.6 用用%f输出实数,只能得到位

16、小数。输出实数,只能得到位小数。 double a=1.0; printf(”%fn”,a/3);3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符f格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用指定数据宽度和小数位数。用%m.nf printf(%20.15fn,1/3); printf(%.0fn”,10000/3.0);3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符f格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用指定数据宽度和小数位数。用%m

17、.nf float a; a=1/3.0; printf(%5.4fn,a);3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符f格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出 输出的数据向左对齐,用输出的数据向左对齐,用%-m.nf3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符f格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出nfloat型数据只能保证型数据只能保证6位有效数字位有效数字ndouble型数据能保证型数据能保证15位有效数字位有效数字n计算机输出的数字计算机输出的数字不都不都是绝对精确有效

18、的是绝对精确有效的3.4.1 用printf函数输出数据2. 常用常用格式字符格式字符e格式符。指定以指数形式输出实数格式符。指定以指数形式输出实数n%e,VC+给出小数位数为位给出小数位数为位 指数部分占指数部分占5列列 小数点前必须有而且只有小数点前必须有而且只有1位非零数字位非零数字 printf(”%e”,123.456); 输出:输出:1.234560 e+0023.4.1 用printf函数输出数据2. 常用常用格式字符格式字符e格式符。指定以指数形式输出实数格式符。指定以指数形式输出实数n%m.ne printf(”%13.2e”,123.456); 输出:输出: 1.23e+0

19、02 (前面有前面有4个空格个空格)3.4.2 用scanf函数输入数据1. scanf 函数的一般形式 scanf(格式控制,地址表列)含义同含义同printf函数函数3.4.2 用scanf函数输入数据1. scanf 函数的一般形式 scanf(格式控制,地址表列)可以是变量的地址,或字可以是变量的地址,或字符串的首地址符串的首地址3.4.2 用scanf函数输入数据2. scanf函数中的格式声明函数中的格式声明n与与printf函数中的格式声明相似函数中的格式声明相似n以开始以开始,以一个格式字符结束,中间可以以一个格式字符结束,中间可以插入附加的字符插入附加的字符scanf(a=%

20、f,b=%f,c=%f,&a,&b,&c);3.4.2 用scanf函数输入数据3.使用使用scanf函数时应注意的问题函数时应注意的问题scanf(”%f%f%f”,a,b,c); 错错scanf(”%f%f%f”,&a,&b,&c); 对对对于对于scanf(a=%f,b=%f,c=%f,&a,&b,&c); 1 3 2 错错 a=1,b=3,c=2 对对 a=1 b=3 c=2 错错3.4.2 用scanf函数输入数据3.使用scanf函数时应注意的问题对于scanf(”%c%c%c”,&c1,&c2

21、,&c3); abc 对 a b c 错对于scanf(”%d%c%f”,&a,&b,&c);若输入 1234a123b.263.4.2 用scanf函数输入数据3.使用scanf函数时应注意的问题对于scanf(”%c%c%c”,&c1,&c2,&c3); abc 对 a b c 错对于scanf(”%d%c%f”,&a,&b,&c);若输入 1234a123b.263.4.2 用scanf函数输入数据3.使用scanf函数时应注意的问题对于scanf(”%c%c%c”,&c1,&c2,&

22、c3); abc 对 a b c 错对于scanf(”%d%c%f”,&a,&b,&c);若输入 1234a123b.263.4.3 字符数据的输入输出1.用用putchar函数输出一个字符函数输出一个字符n从计算机向显示器输出一个字符从计算机向显示器输出一个字符 nputchar函数的一般形式为函数的一般形式为: putchar(c) 3.4.3 字符数据的输入输出例3.8 先后输出BOY三个字符。 n解题思路:定义3个字符变量,分别赋以初值B、O、Y用putchar函数输出这3个字符变量的值 3.4.3 字符数据的输入输出#include int main ( )

23、char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); return 0; 向显示器输出字符向显示器输出字符B向显示器输出换行符向显示器输出换行符3.4.3 字符数据的输入输出#include int main ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); return 0; 改为改为int a=66,b=79,c=89;3.4.3 字符数据的输入输出putchar(101) (输出字符)putchar() (输出单撇号字

24、符)3.4.3 字符数据的输入输出2. 用getchar函数输入一个字符n向计算机输入一个字符向计算机输入一个字符ngetchar函数的一般形式为: getchar( )3.4.3 字符数据的输入输出 例3.9 从键盘输入BOY三个字符,然后把它们输出到屏幕。n解题思路:用3个getchar函数先后从键盘向计算机输入BOY三个字符用putchar函数输出3.4.3 字符数据的输入输出#include int main ( ) char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c)

25、; putchar(n); 输入一个字符,送给输入一个字符,送给变量变量an解题思路:假设给定的三个边符合构成三角形的条件n关键是找到求三角形面积的公式n公式为:其中s=(a+b+c)/2)()(csbsassarea例3.6 给出三角形的三边长,求三角形面积。#include #include int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area

26、); return 0; 对边长对边长a、b、c赋值赋值计算计算s计算计算area#include #include int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 数学函数,数学函数,计算计算平方根平方根调用数学函数调用数学函数加此行加此行#include #include int main ( ) double a

27、,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 转义字符转义字符,使输出位置跳使输出位置跳到下一个到下一个tab位置位置调用数学函数调用数学函数加此行加此行 3.5 if语句语句 P40#include main() int a , b; printf(请输入数请输入数 a:); scanf(%d,&a); printf(请输入数请输入数 b:); s

28、canf(%d,&b);1 1.if.if语句的表达式要表示判断条件语句的表达式要表示判断条件“x“x不等于不等于0”0”,下面,下面表达式写法中正确的是表达式写法中正确的是( )。)。 A. x=0 B. x C. !=0 D. x02任何复杂的程序,都是由(任何复杂的程序,都是由( )构成的。)构成的。 A)分支结构、顺序结构、过程结构)分支结构、顺序结构、过程结构 B)循环结构、分支结构、过程结构)循环结构、分支结构、过程结构 C)顺序结构、循环结构、分支结构)顺序结构、循环结构、分支结构 D)循环结构、分支结构)循环结构、分支结构课课 堂堂 练练 习习3设有设有 int x,

29、y; 以下语句判断以下语句判断x和和y是否相等,正是否相等,正确的说法是该语句(确的说法是该语句( )。)。 if (x=y) printf( x is equal to y.); A)语法错)语法错B)不能判断)不能判断x和和y是否相等是否相等 C)编译出错)编译出错D)能判断)能判断x和和y是否相等是否相等4以下以下if语句错误的是(语句错误的是( )。)。 A)if (xy) x+; y+; else x-; y-; B)if (x) x+y; C)if (x=0) if(x0) y=0; else y=-1; printf(y=%dn,y);输出结果为:输出结果为: y=510有如下程

30、序有如下程序main( ) int a=2,b=-1,c=2; if(ab) if(bb?x:b-+x?+b:x; x、b、y 的值分别为的值分别为( )、(、( )、()、( )课课 前前 回回 顾顾3.若执行以下程序时从键盘上输入5,程序的输出结果是( )。 #include main() int x; scanf(%d,&x); if(x+5) printf(%dn,x); else printf(%dn,x-); 实验问题1、比较x和y的值,如果x的值小于y的值,则使x的值增加10,最后输出显示x,y的值。2、比较x和y,如果x较小,则使x的值增加10, y的值减少10,最后输

31、出显示x,y的值。#include main() int x=30,y=20; if (xy) x + =10; y - =10; printf(“x=%d,y=%dn”,x,y);本节重点内容n3.6 switch语句语句switch语句语句 (多分支选择语句) 1、一般形式:P45 例例3-12n#include nmain()n int grade;n printf(please input a number(0100):);n scanf(%d,&grade);n switch(grade/10)n n case 10:n case 9:printf(An);n case 8:

32、printf(Bn);n case 7:printf(Cn);n case 6:printf(Dn);n case 5:case 4:case 3:case 2:case 1:case 0:printf(Fn);n default:printf(Errorn);n n注意:注意:1、switch后的表达式,必须是字符型或者整后的表达式,必须是字符型或者整型的。型的。2、当表达式的值与、当表达式的值与case后的常量表达式的值后的常量表达式的值相等时,执行相等时,执行case后面的语句;若都不相后面的语句;若都不相等,执行等,执行default后面的语句。后面的语句。3、每个、每个case表达式

33、的值必须互不相同。表达式的值必须互不相同。4、case和和default出现的次序不影响执行的结出现的次序不影响执行的结果。果。注意:注意:5、执行完一个、执行完一个case语句,流程控制转移到下语句,流程控制转移到下一语句继续执行,一语句继续执行,“case 常量表达式常量表达式”只只起语句标号作用,并不在该处进行条件判断。起语句标号作用,并不在该处进行条件判断。 因此:因此:在在case语句后加上语句后加上break语句,语句,每当每当执行一个执行一个case分支后,流程跳出分支后,流程跳出switch结结构,即,终止构,即,终止switch语句的执行。语句的执行。nP45 例例3-12n

34、#include nmain()n int grade;n printf(please input a number(0100):);n scanf(%d,&grade);n switch(grade/10)n n case 10:n case 9:printf(An);break;n case 8:printf(Bn); break;n case 7:printf(Cn); break;n case 6:printf(Dn); break;n case 5:case 4:case 3:case 2:case 1:case 0:printf(Fn); break;n default:p

35、rintf(Errorn);n ncase 5:case 4:case 3:case 2:case 1:case 0:printf(Fn); break;例例3:由成绩等级来判断及格与否。由成绩等级来判断及格与否。#include main() char grade; scanf (“%c”,&grade); switch (grade) case A : case B : case C : printf(“及格!及格!n”) ; break; case D : printf(“不及格!不及格!n”) ; break; default : printf(“输入错误!输入错误!n”);

36、1与下有关与下有关switch语句的说法正确的是语句的说法正确的是( )。)。 A. break语句是语句中必需的一部分语句是语句中必需的一部分 B. 在在switch语句中可以根据需要使用或不使用语句中可以根据需要使用或不使用break语句语句 C. break语句在语句在switch语句中不可以使用语句中不可以使用 D. 在在switch语句中的每一个语句中的每一个case都要使用都要使用break语句语句课课 堂堂 练练 习习3、功能:判断从键盘接收数据的奇偶性,请填空。、功能:判断从键盘接收数据的奇偶性,请填空。#include main( ) int number; printf(“

37、请输入一个整型数请输入一个整型数: ); scanf(%d, &number); if ( ) printf(“此数为偶数此数为偶数. n); else printf(“此数为奇数此数为奇数. n); 作作 业业1、编写一个菜单显示程序,输入、编写一个菜单显示程序,输入1表示:添加记录表示:添加记录(add record)、2表示:显示记录表示:显示记录(display record)、3表示:读取记录表示:读取记录(read record)、4表示:保存记录表示:保存记录(save record)、0表示:结束运行表示:结束运行(exit),输入,输入04可以进行相应的选择。可以进行

38、相应的选择。 (用(用switch语句实现)语句实现)2、给出一百分制成绩,要求输出成绩等级、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为分以上为A ,8089分为分为B,7079分为分为C,6069分为分为D,60分以下为分以下为E。 (用(用switch语句实现)语句实现)n在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题要向计算机输入全班50个学生的成绩分别统计全班50个学生的平均成绩求30个整数之和教师检查30个学生的成绩是否及格例如:全班有例如:全班有50个学生个学生,统计各学生,统计各学生三门课三门课的平均成绩的平均成绩。scanf(“%f,%f

39、,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver); 输入学生输入学生1的三门课成绩,并计算平均值后输出的三门课成绩,并计算平均值后输出scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver); 输入学生输入学生2的三门课成绩,并计算平均值后输出的三门课成绩,并计算平均值后输出要对要对50个学生进行相同操作个学生进行相同操作重复重复50次次大多数的应用程序都会包含循环结构大多数的应用程序

40、都会包含循环结构循环结构和顺序结构、选择结构是结构循环结构和顺序结构、选择结构是结构化程序设计的化程序设计的三种基本结构三种基本结构,它们是各,它们是各种复杂程序的基本构造单元种复杂程序的基本构造单元1001nn 1001nn1、若、若 int i=10;则执行语句;则执行语句 while(i- - 5);后,变量;后,变量 i 的正确值为(的正确值为( )。)。 A. 5 B. 9 C. 10 D. 42、若、若 int i=5;则执行以下语句后,输出的结果为(;则执行以下语句后,输出的结果为( ) do printf(%d,-i); while(i); A. 43210 B. 4321 C

41、. 54321 D. 543210 作作 业业 把把100100200200之间的不能被之间的不能被3 3整除的整数整除的整数输出,要求每行只输出十个数。输出,要求每行只输出十个数。(分别用(分别用whilewhile和和dowhiledowhile两种方法实现)两种方法实现)2 2、编写程序,统计从键盘输入的一行字符、编写程序,统计从键盘输入的一行字符的个数。(用的个数。(用whilewhile循环实现)循环实现)把把100100200200之间的不能被之间的不能被3 3整除的数输出。整除的数输出。求求n!n! 1001nn1001nn相当于相当于相当于:相当于:课本例课本例3-18nvoi

42、d main()nn int flag=1;n int n,i;n printf(input n:);n scanf(%d,&n);n for(i=2;i=(int)sqrt(n);i+)n if(n%i=0)n n flag=0;n break;n n if(flag)n printf(%d is sushu.n,n);n elsen printf(%d is not sushu.n,n); n例例3-19打印九九乘法表打印九九乘法表n#include stdio.hnvoid main()nn int i,j;n for(i=1;i=9;i+)n n for(j=1;j=i;j+)

43、n printf(%d*%d=%-4d,j,i,i*j);n printf(n);n n例例3-10 1!+2!+3!。!。+n!求求n!:n#include stdio.hnvoid main()nn int i,j,n,s,sum;n sum=0;n s=1;n printf(input n:);n scanf(%d,&n);n for(i=1;i=n;i+) n s=s*i;n printf(s=%dn,s);n例例3-10 1!+2!+3!。!。+n!n#include stdio.hnvoid main()nn int i,j,n,s,sum;n sum=0;n printf

44、(input n:);n scanf(%d,&n);n for(i=1;i=n;i+)n n s=1;n for(j=1;j=i;j+)n s=s*j;n sum=sum+s;n n printf(sum=%dn,sum);n例3.11 输出以下4*5的矩阵。 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20n解题思路:可以用循环的嵌套来处理此问题用外循环来输出一行数据用内循环来输出一列数据按矩阵的格式(每行5个数据)输出#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5

45、;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;累计输出数据的个数累计输出数据的个数控制控制一行内一行内输输出出5个数据个数据#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;双重循环双重循环#include int main() int i,j,n=0; for (i=1;i=4;i+)

46、 for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;控制输出控制输出4行行#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;i=1时时j由由1变到变到5i*j的值是的值是1,2,3,4,5#include int main() int i,j,n=0; for (i=

47、1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;i=2时时j也也由由1变到变到5i*j的值是的值是2,4,6,8,10如何修改程序,不输如何修改程序,不输出第一行的空行?出第一行的空行?#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;if (i

48、=3 & j=1) break; 遇到第遇到第3行第行第1列,列,终止内循环终止内循环#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (%dt,i*j); printf(n); return 0;if (i=3 & j=1) continue; 原来第原来第3行第行第1个个数据数据3没有输出没有输出 例5.7用 公式求 的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。71513114n解题思路:求 近似值的方法很多,本题是一种其他方法:2222213121116n722)2() 1(75665344312222nnnn每项的分子都是1n后一项的分母是前一项的分母加2n第1项的符号为正,从第2项起,每一项的符号与前一项的符号相反71513114n121nsign=1,pi=0,n

温馨提示

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

评论

0/150

提交评论