林子雨《C语言程序设计》讲义PPT

Similar documents
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT

Microsoft PowerPoint - 01_Introduction.ppt

《C语言程序设计》教材习题参考答案

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程

C/C++程序设计 - 字符串与格式化输入/输出

新版 明解C言語入門編

CC213

《计算概论》课程 第十九讲 C 程序设计语言应用

新・解きながら学ぶC言語

C/C++ - 函数

新・明解C言語入門編『索引』

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

C/C++语言 - C/C++数据

Ps22Pdf

《C语言程序设计》第2版教材习题参考答案

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是

保母人員丙級應檢資料第二部份 doc

林子雨《C语言程序设计》讲义PPT

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

chap07.key

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C/C++ 语言 - 循环

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C 1

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63>

C/C++ - 文件IO

《太平广记》第二册

untitled

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

《C语言程序设计》教材习题参考答案

zyk00168ZW.PDF

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378>

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 正文.doc

untitled

C C

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等

nooog

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf("%d\n",a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2

期中考试试题讲解

untitled

PowerPoint 演示文稿

第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1


89SQSY.s92

Microsoft Word - 095_ 什麼最快樂 (白話與經文加註)-ok .doc

Ps22Pdf


2009年挑战乔戈里

2015年计算机二级(C语言)模拟试题及答案(四)

Ps22Pdf

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

Microsoft Word - CPE考生使用手冊 docx

校园之星

C/C++ - 字符输入输出和字符确认

! $%%& $%%#! " $%%# $%%& $%%& $%%# $%%& $%%#! "##$%%

C

2012年 MBA系统班数学应用题部分

2011-论文选集-2.cdr

H1428

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循

《C语言程序设计》教材习题参考答案

ttian

! "#$%& $()*+#$, $(-.&,./.+#/(-.&01( &-#&(&$# (&2*(,#-3.,14& $ +()5(*-#5(-#/-/#(-1#&-+)(& :;<<= > A B?

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容

Microsoft PowerPoint - C_Structure.ppt

C/C++ - 数组与指针

Microsoft Word - 新建 Microsoft Word 文档.doc

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总


语言教程 1 C 语言概述 C 语言的发展过程 当代最优秀的程序设计语言 C 语言版本 C 语言的特点 面向对象的程序设计语言 C 和 C 简单的 C 程序介绍 输入和

《C语言程序设计》教材习题参考答案

4.C ( 详细解析见视频课程 绝对值 01 约 21 分 15 秒处 ) 5.E ( 详细解析见视频课程 绝对值 01 约 32 分 05 秒处 ) 6.D ( 详细解析见视频课程 绝对值 02 约 4 分 28 秒处 ) 7.C ( 详细解析见视频课程 绝对值 02 约 14 分 05 秒处 )

Microsoft PowerPoint - 03.Fortran程序设计基础1

<4D F736F F D AB4FA5C0A448ADFBA4FEAFC5C0B3C0CBB8EAAEC6B2C4A447B3A1A5F E646F63>

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

中華民國青溪協會第四屆第三次理監事聯席會議資料

网C试题(08上).doc

# # # # # # = #, / / / / # 4 # # # /# 02-1 / 0 /? / 0 / 0? # # / >

2016 年 全 国 硕 士 研 究 生 招 生 考 试 管 理 类 专 业 学 位 联 考 综 合 能 力 冲 刺 密 押 试 卷 ( 一 ) 一 问 题 求 解 : 第 1~15 小 题, 每 小 题 3 分, 共 45 分 下 列 每 题 给 出 的 A B C D E 五 个 选 项 中,

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab


2010年江西公务员考试行测真题


格式化字符串 Weifeng Sun School of Software, DLUT

untitled

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

林子雨《C语言程序设计》讲义PPT

PowerPoint 演示文稿

2015年计算机二级(C语言)模拟试题及答案(三)

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

! "#$! " # $%%&#! ()*+, - %& - %.,/ - /!! ! " ! #0 $ % &0 123.! 4(5 $%%& %3 &$!!!!!!!!!!!!!!! % % - /&%.&.33!!! &! 3%% - 3 % -

PowerPoint 演示文稿

山东2014第四季新教材《会计基础》冲刺卷第二套

Transcription:

C 语言程序设计 厦门大学计算机科学系 2012-02-26 林子雨 ziyulin@xmu.edu.cn 2012-02-26 厦门大学非计算机专业本科生公共课 (2011-2012 第 2 学期 ) C 语言程序设计 林子雨厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu

课程提要 第一章绪论 第二章 C 语言基础 第三章结构化程序设计 第四章选择结构 第五章循环结构程序设计 第六章函数 第七章编译预处理 第八章数组 第九章结构体 共用体和枚举类型 第十章指针

第 3 章结构化程序设计 3.1 结构化程序设计方法 3.2 语句的概念 3.3 程序的三种基本结构 3.4 赋值语句 3.5 输入输出函数 3.6 顺序结构程序设计举例

3.1 结构化程序设计方法 结构化程序设计方法是一整套指导软件开发的方法, 涵盖了系统分析 系统设计和程序设计这三个方面的内容 采用自顶向下 逐步细化 模块化的方法进行程序设计 强调程序设计风格和程序结构的规范化, 提倡清晰的程序结构 基本思路是 : 把一个复杂问题的求解过程分阶段进行, 每个阶段处理的问题都控制在人们容易理解和处理的范围内 具体实现步骤 : (1) 按自顶向下逐步细化的方法对问题进行分析和设计 ; (2) 系统的模块设计 ; (3) 结构化编码

3.2 语句的概念 3.2.1 表达式语句 3.2.2 控制语句 3.2.3 复合语句 3.2.4 空语句

3.2.1 表达式语句 在 C 语言中, 只要在任何表达式的结尾加上分号 ;, 就构成了表达式语句, 如 : i=1,j=2,k=3; j+k;( 合法但无效 ) i++; fun(j,j+k,6);

3.2.2 控制语句 控制语句是程序中用来控制执行次序的语句, 它能够影响其他语句的执行次序 C 语言提供了 9 种控制语句, 分为 3 类 : (1) 选择语句 :if else,switch (2) 循环语句 :while, do while,for (3) 转向语句 :break,continue,goto,return

3.2.3 复合语句 复合语句是由大括号 {} 把一些语句括起来组成 例如 :{temp=x;x=y;y=temp;} 复合语句在语法上相当于一个语句 复合语句可以嵌套 复合语句在编程中主要用于两种情形 : (1) 语法要求用一条语句, 但又难以用一条简单语句表达清楚的情形, 如作为 for while 语句等的内嵌语句 (2) 形成局部化的封装体 如块语句中定义的变量只在本块范围内可用 注意 : 复合语句内的各条语句都必须以分号 ; 结尾, 但在复合语句结束标志右大括号 } 后面则不能加分号

3.2.4 空语句 没有表达式的语句称为空语句, 即它是只有一个分号 ; 的语句 ; 空语句也可看成是一个特殊的表达式语句, 但不做任何事情 作用是 : 用于语法上需要一条语句的地方, 而该地方不需要做任何事情例如 :for(i=1;i<=100000;i++); 用于 耗时

3.3 程序的三种基本结构 1966 年, 计算机科学家经过研究证实, 所有程序, 不论简单还是复杂, 都能够由三种控制结构组合来实现 : 顺序结构 物理上相邻的多条语句在执行时, 按照其物理排列的前后顺序, 一条一条地顺序执行 选择结构 流程不按照语句在程序中出现的先后顺序逐条执行, 而是根据判断项的值有条件地选择部分语句执行 循环结构 根据需要反复执行程序中的某些语句

3.4 赋值语句 格式 : 变量 = 表达式 ; 例 3.4.1 交换变量 x 和 y 的值 #include <stdio.h> main() { int x=6,y=8,temp; printf( x=%d,y=%d\n,x,y); temp=x; // 将 x 的初值赋予变量 temp x=y; // 仅改变变量 x 的值,y 的值不变 y=temp; // 变量 y 被赋予新的值, 原值被覆盖 printf( x=%d,y=%d\n,x,y); }

3.4 赋值语句 例 3.4.2 输入一个 4 位整数, 然后打印出它的 4 位数字的和 #include <stdio.h> void main() { int n,a,b,c,d,sum; printf("input n:"); scanf("%d",&n); a=n%10; // 求个位数 b=n/10%10; // 求十位数 c=n/100%10; // 求百位数 d=n/1000; // 求千位数 sum=a+b+c+d; printf("n=%d,sum=%d\n",n,sum); }

3.5 输入输出函数 3.5.1 格式输出函数 printf 3.5.2 格式输入函数 scanf 3.5.3 字符输出函数 putchar() 3.5.4 字符输入函数 getchar()

3.5.1 格式输出函数 printf 3.5.1.0 printf 概述 3.5.1.1 整型格式控制符 3.5.1.2 浮点型格式控制符 3.5.1.3 字符型格式控制符 3.5.1.4 字符串格式控制符

3.5.1.0 printf 概述 printf 函数的调用形式为 : printf( 格式控制字符串, 表达式 1, 表达式 2,, 表达式 n); 当 n=0 时, 调用形式 : printf( 格式控制字符串 ); 格式控制符 : 总是由 % 字符开始, 并以一个类型描述符结束, 中间是一些可选的附加说明项 完整格式如下 : %[- 0 m.n l/h] 格式字符

3.5.1.1 整型格式控制符 用于控制整型数据的输出格式 (1) 十进制形式 : 以十进制形式输出整型数据 : %d 或 %md 用于基本整型 %ld 或 %mld 用于长整型 %u 或 %mu 用于无符号基本整型 %lu 或 %mlu 用于无符号长整型 (2) 八进制形式 : 以八进制形式输出整型数据 ( 无前缀 0): %o 或 %mo 用于基本整型 %lo 或 %mlo 用于长整型 (3) 十六进制形式 : 以十六进制形式输出整型数据 ( 无前缀 0x): %x 或 %mx 用于基本整型 %lx 或 %mlx 用于长整型 注意 :m 表示输出的整型数据所占总宽度 ( 即列数 ) 如果数据的位数小于 m, 则左端补空格, 若大于 m, 则按实际位数输出 如果在格式控制符中没有用 m 来说明数据所占的宽度, 则以输出数据的实际位数为准 如 : printf( %3d,%4d,a,b); 若 int a=12,b=12345, 则输出结果为 : 12,12345

3.5.1.2 浮点型格式控制符 以小数形式输出浮点型数据, 格式控制符为 : %m.nf 或 %f 其中,m 表示输出数据所占的总宽度, 包括小数点所占的一列,n 表示小数点后面所占的位数 注意 : 在 C 语言中, 用于输出单精度浮点型数据和双精度浮点型数据的格式控制符是一样的 double 型数据输出使用 %lf 和 %f 无区别 例 3.5.3 输出实数时指定小数位数 #include <stdio.h> main() { } float f = 234.567; printf( %f\n,f); printf( %10.2f\n,f); printf( % 10.2f\n,f); printf( %.2f\n,f); printf( %10f\n,f); 运行结果 : 234.567001( 系统默认输出全部整数和 6 位小数 ) 234.57 234.57 234.57 234.567001( 占 10 位, 浮点数在内存中存储误差 )

3.5.1.3 字符型格式控制符 用于说明字符型数据的输出格式 其格式控制符为 : %mc 或 %c 其中,m 表示输出的宽度, 在输出字符的左边将要补 m-1 个空格例如 :char c= A ;printf( %5c,c); 输出结果为 A 注意 : 一个整数, 只要它的值在 0 127 范围内, 也可以用字符形式输出, 在输出前, 系统会将该整数作为 ASCII 码转换成相应的字符 ; 反之, 一个字符数据也可以用整数形式输出 例 3.5.4 字符数据的输出 main() { char c= B ; int i=66; printf( %c,%d\n,c,c); printf( %c,%d\n,i,i); } 运行结果 : B,66 B,66

3.5.1.4 字符串格式控制符 用来输出一个字符串 (1)%s, 按紧凑格式输出字符串 例如 :printf( %s%s, China, Beijing ); 输出字符串 :China Beijing( 定界符双引号不输出 ) (2)%ms (3)%-ms (4)%m.ns (5)%-m.ns

3.5.2 格式输入函数 scanf 当程序调用 scanf 函数时, 用户可以直接从键盘向内存中的变量输入不同类型的数据 其调用形式为 : scanf( 格式控制字符串, 输入项地址列表 ) 格式化字符参见教材 78 页表 3.5.1 注意 : 在使用 scanf 时, 务必保证格式控制字符串中以 % 开头格式控制符的个数, 与输入项地址表列的项数相同, 且类型匹配, 否则将产生不可预测的效果

3.5.2 格式输入函数 scanf (1) 附加格式说明符 m 可以指定数据宽度 scanf( %3d%3d,&a,&b); 输入 :123456( 回车 ) 系统自动把 123 截取给 a,456 截取给 b (2) 输入 long int 型数据必须用 %ld, 输入 double 型数据必须用 %lf (3) 附加格式符 * 使对应的输入数据不赋给相应变量 double a; int b; float c; scanf( %f,%2d,%*d,%5f,&a,&b,&c); 输入 4.6,25,123,2.34567( 回车 ) 赋值后,a=0(double 型使用 %f 是错误的 ),b=25,c=2.345 (4) 注意逗号和空格的使用, 不要使用 \n

3.5.2 格式输入函数 scanf 例 3.5.5 用 scanf 函数输入数据 main() { } int a;float b;double c; scanf( %d%f%lf,&a,&b,&c); printf( a=%d,b=%f,c=%f\n,a,b,c); 运行时按以下方式输入 a,b,c 的值 : 6 3.14 8.967( 回车 ) 运行结果 : a=6,b=3.140000,c=8.967000

3.5.3 字符输出函数 putchar() 调用形式为 :putchar(c); 其中,c 可以是字符型常量 字符型变量或整型变量 功能 : 在屏幕当前光标位置处, 显示 c 所表示的一个字符 例 3.5.6 用 putchar 函数输出单个字符 #include <stdio.h> //* 包含 I/O 标准库函数的头文件 */ main() { char a, b,c; // 定义字符型变量 a,b,c a= O ;b= K ;c=! ; // 对变量 a,b,c 进行赋值 putchar(a);putchar(b);putchar(c); // 输出 OK! putchar( \n ); // 输出换行 } 运行结果 : OK! AB putchar( \x41 );putchar( \102 );

3.5.4 字符输入函数 getchar() 字符输入函数 getchar() 没有参数, 一般形式为 : getchar(); 功能 : 接收从键盘输入的一个字符 例 3.5.7 输入单个字符 #include <stdio.h> main() {char c;int i; c=getchar();printf( c=% 4c,c); i= getchar ();printf( i=% 3d,i); printf( c1=% 4c,getchar()); } 在运行时, 如果从键盘输入 3 个字符 ;abc( 回车 ) 运行结果 : c=a i=98 c1=c a b c 97 98 99 10 回车符 注意 : 上面 getchar() 函数被调用三次, 分别得到字符 a, b, c, 回车符还继续留在缓冲区里, 如果再调用 getchar() 函数, 得到的就是回车符

3.6 顺序结构程序设计举例 例 3.6.1 输入长方体的长 宽 高, 求长方体的体积和表面积 #include <stdio.h> main() { float x,y,z,v,s; printf("input x,y,z:\n"); scanf("%f,%f,%f",&x,&y,&z); v=x*y*z; s=2* (x*y+x*z+y*z); printf("x=%8.3f,y=%8.3f,z =%8.3f,v =%8.3f\n",x,y,z,v); printf("s=%8.2f\n",s); } 运行程序 : Input x,y,z 键盘输入 2.2,3.3,4.4( 回车 ) 屏幕显示为 : x= 2.200,y= 3.300,z= 4.400,v= 31.944 s= 62.92

3.6 顺序结构程序设计举例 例 3.6.2 编写并运行一个程序, 打印出两个通过交互方式输入的整数的和 差 积 商及余数 #include <stdio.h> main( ) { int m,n,a,b,c,d,e; printf("input m,n:\n"); scanf("%d%d",&m,&n); a=m+n; b=m-n; c=m*n; d=m/n; e=m%n; printf("m+n=%d\tm-n=%d\tm*n=%d\tm/n=%d\tm%%n=%d\n", a,b,c,d,e); } 运行程序 : Input m,n: 键盘输入 :5 3( 回车 ) 屏幕显示 : m+n=8 m-n=2 m*n=15 m/n=1 m%n=2

3.6 顺序结构程序设计举例 例 3.6.3 求 ax 2 +bx+c=0 方程的根 #include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; printf("input a,b,c:\n"); scanf("%f%f%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a);q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf("x1=%5.2f\nx2=%5.2f\n",x1,x2); } 运行程序 : Input a,b,c: 键盘输入 :1 1-2( 回车 ) 屏幕显示 ; x1= 1.00 x2=-2.00

附件 : 课程教师和助教 (2011-2012 第 2 学期 ) 主讲教师 : 林子雨 单位 : 厦门大学信息科学与技术学院计算机科学系办公地点 : 福建省厦门市思明区厦门大学海韵园 E-mail:ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 助教 : 林尚青 单位 : 厦门大学计算机科学系 2010 级硕士研究生 E-mail:lsq1015@qq.com 手机 :15959206201 助教 : 赖明星 单位 : 厦门大学计算机科学系 2011 级硕士研究生 E-mail:joy_lmx@163.com 手机 :18050056577

附件 : 课程 FTP (2011-2012 第 2 学期 ) FTP 地址 :ftp://218.193.53.74 用户名 : stu_linziyu 密码 :123456 目录 : 下载教学内容 C 语言

附件 : 课程教材 (2011-2012 第 2 学期 ) C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 版次 :2011 年 10 月第 2 版 ISBN:978-7-302-26972-4 定价 :35 元

Department of Computer Science, Xiamen University, February 26, 2012