C语言课件.ppt

上传人:小** 文档编号:25642783 上传时间:2021-07-29 格式:PPT 页数:291 大小:1.84MB
收藏 版权申诉 举报 下载
C语言课件.ppt_第1页
第1页 / 共291页
C语言课件.ppt_第2页
第2页 / 共291页
C语言课件.ppt_第3页
第3页 / 共291页
资源描述:

《C语言课件.ppt》由会员分享,可在线阅读,更多相关《C语言课件.ppt(291页珍藏版)》请在装配图网上搜索。

1、1 2 第 一 章 C语 言 概 述第 二 章 算 法第 三 章 数 据 类 型 、 运 算 符 与 表 达 式第 四 章 最 简 单 的 C程 序 设 计第 五 章 选 择 结 构 程 序 设 计第 六 章 循 环 控 制第 七 章 数 组第 八 章 函 数第 九 章 预 处 理 命 令第 十 章 指 针 第 十 一 章 结 构 体第 十 三 章 文 件 3 前 言 4 前 言 5 前 言 6 10 第 一 章 C语 言 概 述例 1.2 已 知 角 度 值 45 , 求 正 弦 值 的 2倍 。 /*example 1.2*/ #include “math.h” main( ) float

2、 x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); 运 行 结 果 : Y=1.413650 11 第 一 章 C语 言 概 述例 1.3 已 知 三 角 形 三 边 a, b, c, 求 面 积 。 /*example 1.3*/ #include “math.h” main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(“P=%f n S=%f ”, p, s); 输 入 :4, 5, 6 输

3、出 :P=7.500000S=9.921567 12 第 一 章 C语 言 概 述max( int x , int y ) main( ) /*max number*/ int z ; int a , b , c ; if(xy) z=x ; scanf(“%d,%d”, else z=y ; c=max( a , b ) ; return(z) ; printf(“max=%dn ”, c) ; 例 1.4 已 知 整 数 a, b, 求 其 中 的 最 大 数 。 13 第 一 章 C语 言 概 述C程 序 结 构1、 C程 序 由 函 数 构 成C程 序 =一 个 主 函 数 ( mai

4、n函 数 )一 个 主 函 数 +若 干 其 他 函 数 (子 或 库 )说 明 部 分2、 函 数 函 数 体 数 据 定 义执 行 部 分 ( 语 句 ) Turbo C有300多 个 跳 转3、 语 句 书 写 自 由 , 后 带 分 号 “ ; ”4、 可 用 /*/ 对 C程 序 作 注 释前 一 页 14 x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); 16 例 如 :1+2+3+100=5050 或100+1+99+2+98+49+51+50=100+49*100+50=5050第 二 章 算 法 2.1 算 法 的 概 念算 法

5、:为 解 决 一 个 问 题 而 采 取 的 方 法 和 步 骤 。 17 第 二 章 算 法 2.4 算 法 的 表 示 (用 流 程 图 表 示 算 法 )起 止 框处 理 框判 断 框 输 入 /出 框流 程 线连 接 点注 释 框 18 第 二 章 算 法例 2.1 计 算 265的 平 方 根顺 序 结 构 开 始X=265Y=X输 出 Y结 束NS图X=265Y=XY开 始结 束 19 第 二 章 算 法例 2.2 打 印 X的 绝 对 值分 支 结 构 NS图X=0y n 打 印 x 打 印 -xX=0? x -x结 束开 始 20 第 二 章 算 法例 2.3 计 算 1到 1

6、00的 和循 环 结 构 i=100 n NS图 i=1,s=0s=s+ii=i+1 打 印 sy i=1,s=0s=s+ii=i+1打 印 s当 i = = !=逻 辑 运 算 符 ! float x ; x=3.6 ; i=(int)x ; printf(“x=%f , i=%dn” , x , i ) ; 运 行 结 果 :x=3.600000 , i=3 51 第 三 章 数 据 类 型 、 运 算 符 与 表 达 式四 、 自 增 、 自 减 运 算1、 运 算 规 则+i -i 使 用 前 使 i值 加 (减 ) 1i+ i- 使 用 后 使 i值 加 (减 ) 12、 注 意(1

7、) 只 能 用 于 变 量(2) 右 结 合 方 向(3) 使 用 时 谨 防 出 错j=+i;j=i+; 相 当 于 i=i+1;j=i;j=i;i=i+1; 52 第 三 章 数 据 类 型 、 运 算 符 与 表 达 式3、 例 运 算 前 表 达 式 运 算 后 i=3 j=(i+)+(i+)+(i+) i=6, j=9 i=3 j=(+i)+(+i)+(+i) i=6, j=18 i=3, j=4 k=i+j i=4, k=7 i=3 j= -i+ i=4, j=-3 i=3 printf(“%d,%d”,i,i+) 结 果 : 4, 3 53 第 三 章 数 据 类 型 、 运 算

8、 符 与 表 达 式 3.9 赋 值 运 算 符 和 赋 值 表 达 式一 、 赋 值 运 算 符 及 其 操 作= 将 一 个 表 达 式 的 值 赋 给 一 个 变 量二 、 赋 值 表 达 式 说 明 : (1) 发 生 类 型 转 换 ( 自 学 60-61页 ) (2) 右 结 合例 : x= -b/(2*a) a=b=c=5 a= (b=4)+(c=6) 那 么 a=5=b=c? 54 第 三 章 数 据 类 型 、 运 算 符 与 表 达 式三 、 复 合 赋 值 运 算复 合 赋 值 运 算 符 =运 算 符 +赋 值 号例 : a+= 3 a+= 3 a=a+3a*= x+y

9、 a*= x+y a=a*(x+y)a%= b a%= b a=a%b 例 : 设 a=3 求 下 列 表 达 式 的 值a+=a-=a*a a+=(a-=a*a)a+=(a=a-a*a) a=a+(a=a-a*a) -12 55 第 三 章 数 据 类 型 、 运 算 符 与 表 达 式 3.10 逗 号 运 算 符 和 逗 号 表 达 式1、 逗 号 表 达 式表 达 式 1, 表 达 式 2, , 表 达 式 n2、 运 算 规 则从 左 到 右 依 次 计 算 各 表 达 式 的 值 , 以表 达 式 n的 值 作 为 最 终 值 ( 其 优 先 级 最 低 )例 : 比 较 (设 a

10、=3)a= 3*5, a*4 a= (3*5, a*4)计 算 后 : 值 60, a=15 a=12 56 第 三 章 数 据 类 型 、 运 算 符 与 表 达 式举 例 3.11main()int i ; float f=7.2 ; printf(“i=%d n” ,(f+=4 , i=f) ; printf(“f=%f n” , f ) ; 运 行 结 果 :i=11f=11.200000 57 if ( ( a=b ) ) x=a; if (a=b ) y=a;在 if 后 面 的 小 括 号 内 必 须 是 表 达 式 60 C 程 序 最 基 本 的 成 分 是 语 句 目 前

11、我 们 已 掌 握 的 语 句 : 变 量 说 明 语 句 : int a,b,c; 表 达 式 语 句 : x+y; 特 别 地 : a=5; 赋 值 语 句 61 可 以 编 写 简 单 程 序 如 : main() int x,y; x=5; y=2*x*x+3*x-1; 该 程 序 语 法 上 完 整 , 但 还 缺 少 输 出 。 62 数 据 的 输 出 用 输 出 函 数 实 现 ,其 中 的 两 种 输 出 函 数 : 1.putchar 函 数 ( 字 符 输 出 函 数 ) 用 于 输 出 一 个 字 符 。 如 : putchar (a); putchar (100);

12、char c=b; putchar (c); 63 例 : 输 出 单 词 Boy的 完 整 程 序 : #include “stdio.h” 注 意 该 语 句 的 作 用 main() char a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c); 64 2. printf函 数 ( 格 式 输 出 函 数 ) 任 意 类 型 、 任 意 格 式 、 任 意 个 数 。 例 如 : int a=100,b=56; printf(“ a=%d,b=%d” ,a,b); 普 通 字 符 格 式 说 明 格 式 控 制 输

13、出 表 列 输 出 结 果 : a=100,b=56“ %” 后 的 字 符 称 格 式 字 符 , 不 同 格 式 字 符 对 应 不 同 的 数 据 类 型 。 65 d格 式 符 : 按 整 数 格 式 输 出 几 种 用 法 : %d 不 指 定 宽 度 , 按 实 际 宽 度 输 出 %md 按 指 定 宽 度 输 出 , m为 宽 度 %ld 用 于 输 出 长 整 型 数 66 例 : int a=125,b=453; long c=65535; printf(“ a=%d,b=%5d,c=%ld” ,a,b,c); 输 出 结 果 : a=125,b= 453,c=65535

14、67 c格 式 符 : 用 于 输 出 字 符 char c= A ; printf(“ c=%c,%c” ,c, B ); 输 出 结 果 : c=A,B 输 出 对 象 既 可 以 是 字 符 变 量 、 字 符 常 量 , 还 可 以是 整 型 表 达 式 。 68 如 : int a=100; char b= A ; printf(“ n%d,%c” ,a,a); printf(“ n%c,%d” ,b,b); 输 出 结 果 : 100,d A,65 69 完 整 前 面 的 程 序 :main() int x,y; x=5; y=2*x*x+3*x-1; printf(“ n y=

15、%d” ,y); 70 例 4.1 已 知 三 角 形 三 边 a, b, c, 求 面 积 #include “math.h”main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(“p=%fns=%f n”, p, s); 第 四 章 最 简 单 的 C程 序 设 计 71 第 四 章 最 简 单 的 C程 序 设 计例 4.2 已 知 整 型 变 量 x, y的 值 分 别 是 3和 5, 试 将 它 们 的 值 互 换 。int x=3, y=5,

16、 z;z=x; x=y; y=z;z y3 5x 35 3 72 第 四 章 最 简 单 的 C程 序 设 计 4.3字 符 数 据 的 输 入 /输 出2、 语 句 功 能 : 从 指 定 设 备 读 一 个 字 符输 出 c的 值 (字 符 )1、 语 句 格 式 输 入 : getchar( );输 出 : putchar(c);3、 说 明使 用 标 准 I/O函 数 时 , 应 在 程 序 前 加 预编 译 命 令 : #include “stdio.h”字 符 变量 73 第 四 章 最 简 单 的 C程 序 设 计例 4.3 输 入 一 个 字 符 并 把 它 输 出 出 来 #

17、include “stdio.h” main( ) char c; c=getchar( ); putchar(c); 74 第 四 章 最 简 单 的 C程 序 设 计1、 语 句 格 式输 入 scanf(格 式 控 制 , 地 址 表 列 );输 出 printf(格 式 控 制 , 输 出 表 列 );2、 语 句 功 能按 格 式 控 制 描 述 的 格 式 给 地 址 表 列 中 的 量 输 入 值 或 输 出 输 出 表 列 中 各 量 的 值3、 格 式 控 制“ ” 括 起 来 的 一 串 格 式 字 符 和 其 它 字 符 4.4 格 式 输 入 与 输 出 75 第 四

18、章 最 简 单 的 C程 序 设 计4、 格 式 字 符格 式 字 符 描 述 对 象 说 明 %d 整 型 数 据 有 %md ,%ld %f 实 型 数 据 小 数 部 分 输 出 6位 %e 带 e实 数 指 数 4位 , 2位 整 数 %c 字 符 数 据 %s 字 符 串 数 据 指 定 输 出 宽 度 在 格 式 符 中 插 入 : m.n例 : %10d %10.4f %12.5e 76 else x=0;思 考 题 : 上 式 去 掉 括 号 后m=ab 否 则 , 判 断 e 3 的 值 , 其 值 非 0执 行 语 句 3; 否 则 , . 判断 em 的 值 , 其 值

19、非 0执 行 语 句 m ;否 则 , 执 行 语 句 n 00 e1e3eme2 语 句 1语 句 3语 句 2语 句 m语 句 n 下 条 语 句非 0非 0非 0非 000. 85 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制例 5.1 从 键 盘 输 入 两 个 整 型 数 , 输 出 最 大 数 。main() int a ,b ; scanf(“%d,%d”, if(a=b)printf(“max=%dn”,a); if(ba)printf(“max=%dn”,b); 开 始enda , babaa) a=b; printf(“max=%dn”,a); 开 始enda ,

20、 bbaa a=b非 00 87 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制例 5.2 输 入 两 个 整 型 数 , 按 大 小 输 出 。main() int a ,b ,temp ; scanf(“%d,%d”, if (ba) temp=a;a=b;b=temp; printf(“%d,%dn”,a,b); 开 始enda , bbaa,b a b非 00 88 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制例 5.3 输 入 互 不 相 等 的 三 个 数 , 按 从 小 到 大 顺 序 输 出 它 们 。分 析 : 设 已 知 的 三 个 数 为 a, b, c

21、。( 1) 可 直 接 通 过 逻 辑 表 达 式 和 条 件 语 句 设 计 程 序 。( 2) 可 通 过 条 件 语 句 和 互 换 变 量 值 设 计 程 序 , 即 经 过 处 理 后 使 :abc 89 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制方 法 ( 1) :main( )float a, b, c; scanf(“%f %f %f ”, if(ab if(ac if(ba if(bc if(cb if(caa=b;b=t; if(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; printf(“%5.2f, %5.2f, %5.2f ”, a

22、, b, c); 91 例 5.4 求 一 元 二 次 方 程 ax2+bx+c=0 的 解第 五 章 逻 辑 运 算 和 判 断 选 取 控 制 求 x1、 x2x1、 x2endd=0无 实 根 yn 开 始d=b2-4aca, b, c开 始求 根 : x1、 x2x1、 x2enda, b, cd=b2-4ac 92 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制#include main( ) float a, b, c, d, x1, x2; scanf(“%f %f %f ”, d=b*b-4*a*c; if (d=0) x1=(-b+sqrt(d)/(2*a); x2=

23、(-b-sqrt(d)/(2*a); printf(“x1=%f,x2=%fn ”, x1,x2); else printf(“It is no real roots.”); 93 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制例 5.5某 运 输 公 司 吨 公 里 基 本 运 费 为 p, 根 据 距 离 s的 远 近 计 费 标 准 如 下 : s250km 没 有 折 扣 250 s500 2% 折 扣500 s1000 5% 折 扣 1000 s2000 8% 折 扣 2000 s=3000) d=0.15; else if(s=2000) d=0.10; else if(s

24、=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0.0; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); 95 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制三 、 if 语 句 的 嵌 套嵌 套 if 的 一 般 形 式if ( ) if ( ) 语 句 1 else 语 句 2else if ( ) 语 句 3 else 语 句 4 内 嵌 if内 嵌 if注 意 : else 总 是 与 它 上 面 最 近 的 if 配 对 96 第 五 章 逻 辑 运 算 和

25、判 断 选 取 控 制if ( ) if ( ) 语 句 1else if ( ) 语 句 2 else 语 句 3 内 嵌 if if ( ) if ( ) 语 句 1 else if ( ) 语 句 2 else 语 句 3 内 嵌 ifif ( ) if ( ) 语 句 1else 语 句 2 if ( ) if ( ) 语 句 1 else 语 句 2 97 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制分 析 : a=0 不 是 二 次 方 程 。 b2-4ac=0 有 两 个 相 等 实 根 。 b2-4ac0 有 两 不 等 实 根 。 b2-4ac0求 x y y n

26、nd=b -4ac2y na=0开 始a , b , cend 99 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制if ( fabs(a)1e-6) printf(“No!”);else d=b*b-4*a*c; if ( fabs(d)0 ) x1=(-b+sqrt(d)/(2*a); x2=(-b -sqrt(d)/(2*a); printf(“Two real roots:%f,%f ”,x1,x2); else xr= -b/(2*a); xi=sqrt(-d)/(2*a); printf(“Complex roots:%f,%f ”, xr,xi); 100 第 五 章 逻

27、 辑 运 算 和 判 断 选 取 控 制四 、 条 件 运 算 符 与 条 件 表 达 式1、 条 件 表 达 式 的 一 般 形 式 ? : 2、 运 算 规 则先 计 算 表 达 式 1, 若 为 非 0,则 以 表 达 式 2的 值 作 为 条 件 表 达 式 的 值 ;否 则 , 以 表 达 式 3的 值 为 条 件 表 达 式 的 值 。3、 优 先 级算 术 关 系 逻 辑 运 算 (!除 外 ) 条 件 运 算 赋 值 运 算高 低右 结 合 101 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制(1)输 出 x和 y当 中 的 最 大 值 z=xy ? x : y ;

28、printf(“max=%d”,z);或 printf(“max=%d”,xy?x:y); 或 xy?printf (“%d”,x) : printf (“%d”,y); 举 例 :(2)ab?a:b+1等 价 于 ab?a:(b+1)而 不 是 (ab?a:b)+1(3)ab?a:cd?c:d等 价 于 ab?a:(cd?c:d)(4)xy?1:5.6 表 达 式 的 值 的 类 型 取 高 的(5)ch=(ch=A 102 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制 5.4 switch 语 句一 、 语 句 格 式 switch(表 达 式 ) case 常 量 表 达 式

29、1: 语 句 1 case 常 量 表 达 式 2: 语 句 2 case 常 量 表 达 式 n: 语 句 n default : 语 句 n+1 103 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制二 、 执 行 过 程当 switch后 的 表 达 式 的 值 与 某 一 个 case后的 常 量 表 达 式 的 值 相 等 时 , 执 行 其 后 的 语句 ; 若 无 匹 配 , 则 执 行 default后 的 语 句 。三 、 break 语 句使 流 程 跳 出 switch结 构 ,终 止 switch语 句 的 执 行 。 104 第 五 章 逻 辑 运 算 和 判

30、 断 选 取 控 制例 5.7 用 switch语 句 设 计 “ 例 5.5运 费 程 序 ” 跳 转 s 1 d=0 1 s 2 d=0.2 2 s 4 d=0.05 4 s 8 d=0.08 8 s 12 d=0.112 =3000) c=12; else c=s/250; switch(c) case 0 : d=0; break; case 1 : d=0.02; break; case 2 : case 3 : d=0.05; break; case 4 : case 5 : case 6 : case 7 : d=0.08; break; case 8 : case 9 : ca

31、se 10: case 11: d=0.1; break; case 12: d=.15; break; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); 106 第 五 章 作 业第 111页 5.3 、 5.5、 5.7上 机 调 试 作 业第 111-112页 5.6、 5.7第 五 章 逻 辑 运 算 和 判 断 选 取 控 制 107 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制习 题 5.5 已 知 x, 求 分 段 函 数 值 ymain() float x, y; scanf(“%f”, if(x=1 printf(“x=%f, y=%fn

32、”, x, y); 程 序 1: 108 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制main() float x, y; scanf(“%f”, if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; printf(“x=%f, y=%fn”, x, y); 程 序 2: 109 第 五 章 逻 辑 运 算 和 判 断 选 取 控 制习 题 5.6分 析 : 设 百 分 制 成 绩 为 x, 成 绩 等 级 为 y Ax90B 80 x90C 70 x80D 60 x70E x60y= 110 第 五 章 逻 辑 运 算 和 判 断 选 取

33、 控 制习 题 5.10 10 a|b|c|d0 其 他h=分 析 : 设 坐 标 为 ( x, y) , 高 度 为 h设 : a=(x-2) + (y-2) 1b=(x+2) + (y-2) 1c=(x+2) + (y+2) 1d=(x-2) + (y+2) 12 22 22 22 2 111 L2: 语 句 . L1: 语 句 goto L2;例 :1、 语 句 格 式 goto 语 句 标 号 写 在 语 句 前 的 标 识符 (后 加 : ) 114 第 六 章 循 环 控 制二 、 用 法1、 与 if语 句 联 合 使 用 构 成 循 环2、 用 来 实 现 从 多 重 循 环

34、体 内 转 出L1: if(e) 循 环 体 goto L1; ( 当 型 循 环 ) L2: 循 环 体 if(e) goto L2; ( 直 到 型 循 环 ) 115 第 六 章 循 环 控 制例 6.1 求 s=1+2+3+.+n 的 值 。 main( ) int i=1, sum=0, n; scanf(“%d”,L1:sum=sum+i; i+; if(i=n) goto L1; printf(“s=%d”,sum); main( ) int i=1, sum=0, n; scanf(“%d”, L1:if(i=n) sum=sum+i; i+; goto L1; printf(

35、“s=%d”,sum); 116 第 六 章 循 环 控 制 6.3 while语 句 “ 当 型 ” 循 环一 、 语 句 格 式while( e) 循 环 体二 、 执 行 过 程 ( 先 判 断 后 执 行 )当 表 达 式 e 值 为 非 0时 , 执 行循 环 体 , 然 后 重 复 执 行 while语 句 ; 当 e 的 值 为 0 时 , 结 束循 环 , 执 行 后 继 语 句 。 非 0 0循 环 体e单 语 句 或 复 合 语句 117 第 六 章 循 环 控 制例 6.2 求 s=1+2+3+.+n 的 值 (用 while循 环 n=100)。main( ) int

36、i=1, s=0, n; scanf(“%d”, while(i=n) s=s+i; i+; printf(“s=%d”, s); main( ) int i=1, s=0, n; scanf(“%d”, while(i=n) s+=i+; printf(“s=%d”, s); 118 第 六 章 循 环 控 制 6.4 do-while语 句 “ 直 到 型 ” 循 环一 、 语 句 格 式do 循 环 体while( e) ;二 、 执 行 过 程 ( 先 执 行 后 判 断 )先 执 行 do后 的 循 环 体 , 然 后 判 断表 达 式 e 的 值 , 若 为 非 0, 重 复执 行

37、 循 环 体 , 直 到 while中 的 表达 式 e 为 0, 结 束 循 环 。 循 环 体e 0非 0单 语 句 或 复 合 语句 119 第 六 章 循 环 控 制例 6.3 求 s=1+2+.+n 的 值 (用 do-while循 环 n=100)。main( ) int i=1, s=0, n; scanf(“%d”, do s=s+i; i+; while(i=n); printf(“s=%d”, s); main( ) int i=1, s=0, n; scanf(“%d”, do s+=i+; while(i=n); printf(“s=%d”, s); 120 第 六 章

38、 循 环 控 制 6.5 for语 句 及 其 构 成 的 循 环一 、 语 句 格 式for(表 达 式 1;表 达 式 2;表 达 式 3) 循 环 体计 算 表 达 式 1计 算 表 达 式 3表 达 式 2循 环 体 下 一 条 语 句 0非 0二 、 执 行 过 程1、 计 算 表 达 式 1。2、 判 断 表 达 式 2。 若 非 0, 执 行 循 环 体 , 转 3; 否 则 , 结 束 循 环 , 转 4。3、 计 算 表 达 式 3。 转 2。4、 执 行 for语 句 的 下 一 条 语 句 。 121 第 六 章 循 环 控 制三 、 说 明1、 for语 句 最 简 单

39、 、 最 常 用 的 应 用 形 式for(循 环 变 量 赋 初 值 ; 循 环 条 件 ; 循 环 变 量 增 值 ) 循 环 体例 6.4 求 s=1+2+.+n 的 值 (用 for循 环 n=100)。 main( ) int i, s=0, n; scanf(“%d”, for(i=1; i=n; i+) s=s+i; printf(“s=%d”, s); 122 第 六 章 循 环 控 制2、 for语 句 中 的 三 个 表 达 式 均 可 省 略 注 意 : (1) 分 号 不 能 省 略 。 (2) 应 保 证 循 环 正 确 执 行 。例 main( ) int i, s

40、, n; scanf(“%d”, for(i=1,s=0; i=n;) s+=i+; printf(“s=%d”, s); main( ) int i=1, s=0, n; scanf(“%d”, for(; in)break; printf(“s=%d”, s); 123 第 六 章 循 环 控 制例 6.5 给 一 年 级 的 小 学 生 出 10道 100以 内 的 加 法 练 习 题 。分 析 :1、 出 题 2、 回 答 3、 判 断 对 错 #include “stdlib.h” main( ) int i , x , y , z ; randomize(); for(i=1; i

41、=10; i+) x=random(99); y=random(99); printf(“%d+%d=”, x , y ); scanf(“%d”, if(z=x+y)printf(“nright!n”); else printf(“nwrong!n”);思 考 :1、 做 对 几 题 2、 总 成 绩 i l t li . ain( ) int i ,x ,y ,z ; int count=0 ,score=0 ; randomize(); for(i=1; i=3) ( 注 : 一 行 打 印 3个 数 字 ) main( ) long i=1, j=1, k ; int n ; prin

42、tf(“%8ld%8ld”, i , j) ; for(n=3; n=30; n+) k=i+j ; printf(“%8ld”, k) ; if(n%3= =0) printf(“n”) ; i=j ; j=k ; 125 第 六 章 循 环 控 制例 6.7 求 分 数 序 列 : 1/2, 2/3, 3/5, 5/8, 8/13, 13/21, .的 前 20项 之 和 。main() int k ; float i=1 , j=2 , s=0; for(k=1 ; k=20 ; k+) s=s+i/j ; j=i+j ; i=j-i ; printf(“sum=%10.6fn ”, s

43、); 126 第 六 章 循 环 控 制1、 循 环 的 嵌 套 概 念 对 各 种 循 环 结 构 是 一 样 的 , 即 某 一 循 环 的 循 环 体 内 包 含 另 一 循 环 结 构 。2、 各 种 循 环 结 构 可 以 互 相 嵌 套 。例 for嵌 套for( ; ; ) . for( ; ; ) . . for-while嵌 套for( ; ; ) . while( ) . . 6.6 循 环 的 嵌 套 多 重 循 环 127 第 六 章 循 环 控 制1、 各 种 循 环 结 构 可 以 互 相 替 代 , 但 不 提 倡 使 用 用 goto构 成 的 循 环 。2、

44、在 while和 do-while语 句 构 成 的 循 环 体 中 必 须 有 使 循 环 趋 于 结 束 的 语 句 , 如 i+。 6.7 几 种 循 环 的 比 较3、 在 while和 do-while语 句 构 成 的 循 环 中 , 循 环 变 量 的 初 始 化 必 须 在 循 环 之 前 完 成 。 4、 在 while、 do-while和 for语 句 构 成 的 循 环 中 , 可 以 用 break和 continue跳 出 或 结 束 本 次 循 环 128 第 六 章 循 环 控 制 6.8 break语 句 和 continue语 句一 、 break语 句1、

45、 用 来 跳 出 switch结 构 。2、 用 来 跳 出 当 前 循 环 。 循 环 break;二 、 continue语 句用 来 结 束 本 次 循 环 , 即 跳 过 当前 循 环 中 后 继 尚 未 执 行 的 语 句 ,进 行 下 一 次 循 环 循 环 continue; 129 第 六 章 循 环 控 制例 6.8 利 用 公 式 2/6=1-2 +2-2 +3-2 +4-2 +. 求 的 近 似 值 , 直 到 最 后 一 项 的 值 小 于 10-8为 止 。 #include “math.h” main() long i=1; double pi=0; while(i

46、*i=1e8) pi=pi+1.0/(i*i); i+; pi=sqrt(6.0*pi); printf(“ pi=%10.6fn ”, pi); 6.9程 序 举 例 130 第 六 章 循 环 控 制例 6.8 利 用 公 式 2/6=1-2 +2-2 +3-2 +4-2 +. 求 的 近 似 值 , 直 到 最 后 一 项 的 值 小 于 10-8为 止 。 #include “math.h” main() long i ; double pi=0; for( i=1 ; i=1e8) break; pi=pi+1.0/(i*i); pi=sqrt(6.0*pi); printf(“ p

47、i=%10.6fn ”, pi) ; 131 第 六 章 循 环 控 制例 6. 9 打 印 100以 内 个 位 数 为 6,且 能 被 3整 除 的 数 。 main() int i , j ; for(i=0;i=9;i+) j=i*10+6; if(j%3!=0) continue; printf(%d , j ); 可 以 省 略 132 第 六 章 循 环 控 制例 6.10 写 出 下 列 程 序 的 运 行 结 果 。 main() int i , j , a=0 ; for ( i=0 ; i2 ; i+ ) for ( j=0 ;j4 ;j+ ) if ( j%2 ) br

48、eak ; a+ ; a+; printf (%dn,a) ; 133 第 六 章 循 环 控 制例 6.11 打 印 99表 。1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9

49、=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 134 第 六 章 循 环 控 制例 6.11 打 印 99表 。main() int i , j ; for ( i=1 ; i=9 ; i+ ) for ( j=1 ; j=i ;j+ ) printf ( “%d*%d=%-3d”,j , i, i*j ) ; printf (n) ; 135 第 六 章 循 环 控 制例 6.12 百 鸡 百 钱 问 题 。公 鸡 一 只 5元 , 母 鸡 一 只 3元 , 小 鸡 三 只 1元 , 用 100元 买 一 百 只 鸡 ,

50、 问 公 鸡 、 母 鸡 、 小 鸡 各 多 少 只 ?设 : 公 鸡 x只 、 母 鸡 y只 、 小 鸡 z只列 等 式 :x+y+z=10015*x+9*y+z=300 136 第 六 章 循 环 控 制例 6.12 百 鸡 百 钱 问 题 。main() int x , y , z ; for ( x=1 ; x=20 ; x+ ) for ( y=1 ; y=33 ; y+ ) for ( z=1 ; z=100 ; z+ ) if(x+y+z=100 137 第 六 章 循 环 控 制例 6.13 求 e x的 台 劳 级 数 展 开 式 的 前 n项 之 和 。e x=1+x+ +

51、 + (- x)x22! x33! xn-1 (n-1)!main() float x, s=1,t=1 , f=1 ; int i, n; scanf(“%f,%d”, for ( i=1 ; i1 ; i- ) if (m%i=0) break ; if(i=1)printf( “%d is a prime number.n”,m); else printf( “%d is not a prime number.n”,m); 139 第 六 章 循 环 控 制例 6.15 用 牛 顿 迭 代 法 求 代 数 方 程 e x-x=0在 x=-2附 近的 一 个 实 根 。 直 到 满 足 |

52、xn+1-xn| =10-6为 止 。牛 顿 迭 代 公 式 :令 : f (x)= e -x -x xn+1=xn- f (xn)是 f (x)曲 线 在 xn点 处 的 切 线 斜 率 f (xn) f (xn)f(x)x 1f(x1)x2f(x2) x2=x1- f (x1) f (x1)f (x1)= f (x1) x1-x2 140 第 六 章 循 环 控 制例 6.15 用 牛 顿 迭 代 法 求 代 数 方 程 e x-x=0的 实 根 。#include“math.h”main() float f1 , f0 , x1=-2 , x0 ; do x0=x1; f0=exp(-x

53、0)-x0; f1=-exp(-x0)-1; x1=x0-f0/f1; while(fabs(x1-x0)1e-6); printf ( “%fn”,x1) ; 141 第 六 章 作 业上 机 调 试 作 业第 129页 6.2,6.8, 6.14第 129页 6.2, 6.4 , 6.6, 6.8第 六 章 循 环 控 制 142 float b5;定 义 一 维 整 型 数 组 a和 实 型 数 组 ba数 组 中 的 元 素 是 : a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;b数 组 中 的 元 素 是 : b0, b1, b2, b3, b4 14

54、5 第 七 章 数 组三 、 数 组 的 引 用以 数 组 元 素 作 为 引 用 对 象例 7.1 求 s=a1+a2+a10 main( ) int i; float s=0, a10; for(i=0; i10; i+) scanf(“%f ”, s=s+ai; printf(“s=%fn”, s); 146 第 七 章 数 组四 、 一 维 数 组 的 初 始 化1、 在 定 义 数 组 时 , 给 数 组 元 素 赋 初 值例 : int a6=1,2,3,4,5,6;2、 可 只 给 一 部 分 数 组 元 素 赋 初 值 。 例 : int a6=1,2,3;3、 未 赋 初 值

55、 的 数 组 , 各 元 素 值 不 确 定 。4、 数 组 的 大 小 由 初 始 化 的 数 据 个 数 决 定 。 例 : int a =1,2,3;5、 数 组 中 全 部 元 素 初 始 化 为 0 。 例 : int a6=0; 147 第 七 章 数 组例 7.2 求 Fibonacci数 列 的 前 30项 。 (一 行 三 个 ) main( ) long f30=1,1; int i; for(i=2; i30; i+) fi=fi-1+fi-2; for(i=0; i30; i+) if(i%3=0) printf(“n”) ; printf(“%8ld”, fi) ;

56、148 第 七 章 数 组例 7.3 已 知 一 组 数 (n个 ), 找 出 其 中 最 大 者 。main( ) int i, n ; float a20, max; scanf(“%d”, for( i=0; in; i+) scanf(“%f ”, max=a0; for(i=1; in; i+) if(maxai) max=ai; printf(“Max=%fn”, max); 149 第 七 章 数 组例 7.3 已 知 一 组 数 (n个 ), 找 出 其 中 最 大 者 (及 其 位 置 )。main( ) int i, n, position; float a20, max;

57、 scanf(“%d”, for( i=0; in; i+) scanf(“%f ”, max=a0; position =0; for(i=1; in; i+) if(maxai) max=ai; position =i; printf(“Max=%fnPosition=%dn”, max, position +1); 150 第 七 章 数 组例 7.4 对 任 意 10个 数 按 从 大 到 小 排 序 。 ( 选 择 法 ) main( ) float a10 , t ; int i , j , p ; for(i=0; i10; i+) scanf(“%f ”, for(i=0; i

58、9; i+) p=i; for(j=i+1; j10; j+) if(apaj) p=j; if(p!=i)t=ai;ai=ap;ap=t; for(i=0; i10; i+) printf(“%f ”, ai); 151 第 七 章 数 组例 7.4 对 任 意 10个 数 按 从 大 到 小 排 序 。 ( 交 换 法 ) main( ) float a10, t; int i, j; for(i=0; i10; i+) scanf(“%f ”, for(i=0; i9; i+) for(j=i+1; j10; j+) if(aiaj) t=ai; ai=aj; aj=t; for(i=0

59、; i10; i+) printf(“%f ”, ai); 152 第 七 章 数 组 7.2 二 维 数 组二 、 定 义类 型 关 键 字 数 组 名 常 量 表 达 式 1常 量 表 达 式 2例 : int a34; float b510;一 、 引 入 153 第 七 章 数 组三 、 数 组 元 素数 组 名 下 标 1下 标 2a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23 四 、 二 维 数 组 元 素 在 内 存 中 的 存 储 形 式 按 行 从 上 到 下 ,行 内 从 左 到 右 存 放 a00a01a02a03a10 a11

60、a12a13 a20a21a22a2312个连续存储单元体 积 : 12 序 号 12345 6789101112 154 第 七 章 数 组五 、 二 维 数 组 的 输 入 /输 出 问 题1、 输 入for ( i=0 ; i3 ; i+ ) for ( j=0 ; j4 ; j+ ) scanf ( “%f” , aij=x ; 2、 输 出for ( i=0 ; i3 ; i+ ) for ( j=0 ; jj ij 157 第 七 章 数 组 main( ) int y1010, i, j; for(i=0; i10; i+) yi0=1; yii=1; for(i=2; i10;

61、 i+) for(j=1; j=i-1; j+) yij=yi-1j+yi-1j-1; for(i=0; i10; i+) for(j=0; j=i; j+) printf(“%5d”, yij); printf(“n”); 158 第 七 章 数 组 main( ) int y1111, i, j; for(i=1; i=10; i+) yi1=1; yii=1; for(i=3; i=10; i+) for(j=2; j=i-1; j+) yij=yi-1j+yi-1j-1; for(i=1; i=10; i+) for(j=1; j=i; j+) printf(“%5d”, yij);

62、printf(“n”); 159 第 七 章 数 组 7.3 字 符 数 组用 来 存 放 字 符 串二 、 初 始 化1、 用 字 符 常 量 (结 尾 无 0构 不 成 字 符 串 )例 : char c6=H, a, p, p, y, !; char d =G, o, o, d, , B, y, e;例 : char a15, b20;一 、 定 义 160 第 七 章 数 组 注 : c数 组 长 度 为 7, 其 中 c6= 0 d数 组 长 度 为 9, 其 中 d8= 0 不 能 用 赋 值 语 句 将 一 个 字 符 串 常 量 或字 符 数 组 直 接 赋 给 一 个 字 符

63、 数 组 。c= “ Happy!”; d=c; ()例 : char c =“Happy!”; char d = “ Good Bye”;2、 用 字 符 串 常 量 161 第 七 章 数 组三 、 字 符 数 组 的 输 入 和 输 出 I/O1、 用 %c逐 个 元 素 的 I/O2、 用 %s整 个 字 符 串 I/O 例 : char c 20; scanf(“%s”, c); printf(“%s”, c); 注 意 : c为 数 组 名 , 其 作 为 输 入 项 时 不 加 str i != 0 ; i+ ) printf(“%c”,str i ); 162 第 七 章 数

64、组 四 、 字 符 函 数1、 puts(字 符 数 组 )例 如 : char str =“ChinanBeijing”; puts(str); (分 两 行 输 出 , 光 标 停 在 三 行 上 )2、 gets(字 符 数 组 ) 例 如 : char str20; gets(str); 从 键 盘 输 入 : How are you? 注 意 : scanf(“%s”,str); 只 接 受 How 163 第 七 章 数 组 3、 strcat(字 符 数 组 1,字 符 数 组 2) (string.h)例 如 : char str130=“Peoples Republic of

65、 ”; char str2 =“China ”; printf(“%sn”,strcat(str1,str2);4、 strcpy(字 符 数 组 1,字 符 串 2) 例 如 : char str110, str2 =“China ”; strcpy(str1,str2);或 strcpy(str1, “China ”,2); 注 意 : str1=“China ”; 或 str1=str2; 是 不 合 法 的 !for ( i=0 ; str2i != 0 ; i+ ) str1 i = str2 i ;str1 i = 0 ; 164 第 七 章 数 组5、 strcmp(字 符 串

66、1,字 符 串 2) 例 如 : if ( strcmp(str1,str2)=0) printf(“Yes”);注 意 : if (str1=str2) printf(“Yes”) ; 是 不 合 法 的 。6、 strlen(字 符 数 组 ) 例 如 : char str 10=“Chinan”; printf(“%d”,strlen(str); 结 果 为 6。7、 strlwr(字 符 串 ) (将 字 符 串 中 的 大 写 字 母 转 成 小 写 )8、 strupr(字 符 串 ) (将 字 符 串 中 的 小 写 字 母 转 成 大 写 ) 165 第 七 章 数 组例 7.6 有 三 个 字 符 串 , 要 求 找 出 其 中 最 大 者 。#includestring.hmain( ) char string20, str320 ; int i ; for(i=0; i0) strcpy(string,str0); else strcpy(string,str1); if ( strcmp(str2,string)0) strcpy(string,str2); p

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!