C语言程序设计课件(苏小红)第3章

合集下载

c语言课件ppt苏小红

c语言课件ppt苏小红
使用文件指针来标识和操 作文件,文件指针指向文 件的开头或结尾。
文件的读写操作
文件读取
使用fscanf()、fgets()等函 数从文件中读取数据。
文件写入
使用fprintf()、fputs()等 函数将数据写入文件。
文件读写模式
根据需要选择不同的文件 读写模式,如只读、只写 、追加等。
程序调试技巧和方法
内存释放
动态分配的内存在使用完毕后需要释 放,以避免内存泄漏。C语言提供了 free函数来释放动态分配的内存。
07
文件操作和程序调试
文件的打开和关闭
01
02
03
文件打开
使用fopen()函数打开文 件,指定文件名和打开模 式。
文件关闭
使用fclose()函数关闭已打 开的文件,释放资源。
文件指针
03
控制结构
条件语句
条件语句
用于根据特定条件执行不同的 代码块。
if语句
根据条件判断,如果条件为真 ,执行if后面的代码块。
switch语句
根据表达式的值,执行不同的 代码块。
三元运算符
根据条件返回两个值中的一个 ,类似于if-else语句。
循环语句
循环语句
用于重复执行一段代码,直到满足特定条件 。

C语言最初的设计目的是为了编 写操作系统的内核,后来逐渐发
展成为一种通用的编程语言。
C语言的发展历程中,出现了许 多重要的版本和标准,如C89、
C99和C11等。
C语言的特点和应用领域
C语言是一种结构化编程语言,支持 过程化、面向对象和泛型编程范式。
C语言在操作系统、编译器、数据库 等领域的开发中扮演着重要的角色。

哈工大苏小红版C语言课件cha

哈工大苏小红版C语言课件cha

C语言的特点和应用领域
系统软件
嵌入式系统
操作系统、编译器等核心软件都是用 C语言编写的。
在嵌入式系统中,C语言被广泛应用 于开发底层驱动程序和操作系统内核。
应用软件
数据库、游戏、图形界面等应用软件 也广泛使用C语言开发。
C语言的基本语法结构
数据类型
运算符
控制结构
包括整型、浮点型、字 符型、数组类型、结构
短整型通常占用2个字节,整型 占用4个字节,长整型占用8个 字节。
浮点型数据类型
浮点型数据类型用于 存储小数,包括单精 度浮点数和双精度浮 点数。
浮点型数据类型用于 存储实数,包括正实 数、负实数和零。
单精度浮点数通常用 float表示,双精度浮 点数通常用double 表示。
字符型数据类型
01
05 指针和内存管理
指针的定义和使用
01
02
03
04
指针是变量,用于存储 内存地址。
指针变量必须先定义后 使用。
使用指针前需要先赋值。
指针可以指向同类型的 变量或数组元素。
内存管理的基本概念
01
02
03
04
内存分为堆区和栈区。
堆区用于动态内存分配,由程 序员管理。
栈区用于存储局部变量,由系 统自动管理。
内存管理涉及内存的申请、使 用和释放。
动态内存分配和释放
使用`malloc()`函数在堆区分配内存。
使用`realloc()`函数调整已分配内存 的大小。
使用`calloc()`函数在堆区分配并初始 化内存。
使用`free()`函数释放已分配的内存。
06 文件操作
文件的打开和关闭
要点一
打开文件

C语言程序设计第3章课件

C语言程序设计第3章课件
【例3-2】产生10~100间的随机整数,并输出。 #include <stdio.h>
#include <math.h> #include <time.h> main()
{
int a,b;
srand( time( 0 ) ) ; / * 时 间 作 为 随 便 数 种 子 , 每 运 行 一 次 , 随 机 值均不同*/
v宏定义
在C源程序中允许用一个标识符来表示一个字 符串, 称为“宏”。
在C语言中, “宏”分为有参数和无参数两种。 下面分别讨论这两种“宏”的定义和调用。
大学计算机基础
网络信息中心教研室
26
3.6 编译预处理
1 不带参数的宏定义
不带参数的宏的一般定义方式为: #define 标识符 字符串
说明:
(1) “#define”为宏定义的关键字, “标识符”表示定义 的宏名, “标识符”用大写字母,以便区分于变量名或 函数名,也可以用小写字母;
第3章
顺序结构程序设计与编译预处理
网络信息中心教研室
主要内容
3.1 C语句概述 3.2 赋值语句 3.3 输入与输出 3.4 常用函数举例 3.5 编译预处理 3.6 顺序结构程序设计举例
大学计算机基础
网络信息中心教研室
2
3.1 C语句概述
C语言的语句用来向计算机系统发出指令, 单 独的一条语句或者是复合语句完成特定的操作, 这些操作的不同组合,用来实现一系列数据处理 功能。
4. 复合语句 把多个语句用{语句1;语句2;...语句n}这种形式
构成一个比较复杂的语句称为复合语句,又称为 语句块。
如两个变量之间数据的交换。此时,应把复合语句 看成一个单条语句。例如:

第3章简单的C程序设计ppt课件

第3章简单的C程序设计ppt课件

问题5:限定用户输入数据为以下格式为
12↙
34↙
同时要求程序输出结果为a = "12", b = "34"
C语言大学实用教程课件 制作人苏小红
24
输入数据的格式控制——例3.10
#include <stdio.h> main() {
int a, b;
ssccaannff(("%"d%d%%d*"c,%&da",, &&b)a;, &b);
问题4:限定用户输入数据为以下格式为 1234↙
同时要求程序输出结果为a = 12, b = 34
C语言大学实用教程课件 制作人苏小红
23
输入数据的格式控制——例3.10
#include <stdio.h> main() {
int a, b;
scanf("%d%%dd"",,&&aa,,&&bb));; printf("a = %\d",%db\"=, %bd\=n"\,"%ad,\"b\)n;", a, b); }
int data1, data2, sum; char op;
printf("Please enter the expression
data1 + data2\n");
scanf("%d%c%d",&data1, &op, &data2);
printf("%d%c%d = %d\n", data1, op, data2, data1+data2);

c语言程序设计第三版苏小红_C语言学习日志(三)

c语言程序设计第三版苏小红_C语言学习日志(三)

c语⾔程序设计第三版苏⼩红_C语⾔学习⽇志(三)参考资料:C语⾔程序设计(第三版)练习⽹站:PTA第三章:分⽀结构任何程序都可以使⽤三种基本的控制结构来实现,即顺序结构,分⽀结构和循环结构。

⼆分⽀结构与多分⽀结构(if型)例3-1//简单的猜数游戏3-2://判断整数的奇偶性例3-3//输⼊⼀批学⽣的成绩,计算平均分,并统计不及格的学⽣⼈数例3-4//计算多分段函数以上是多种分⽀结构在实际程序中的使⽤。

字符型数据及其输⼊与输出3-5://求解简单的四则运算表达式1:字符型常量每个字符都有唯⼀的次序之,即ASCII码2:字符型变量字符型变量在定义时⽤类型名char,例如:char = op;定义了⼀个字符型变量op,它的值是字符型数据。

op='+'将字符型常量‘+’赋给字符型变量op。

3:字符型数据的输⼊与输出字符型数据的输⼊输出可以调⽤函数scanf(),printf(),getchar(),putchar().注:在上述函数调⽤的过程中,格式控制字符串中相应的格式控制说明为%cgetchar()可以从键盘输⼊⼀个字符,putchar()可以从键盘输出⼀个字符逻辑运算C语⾔提供了三种逻辑运算符:单⽬:! 逻辑⾮双⽬:&& 逻辑与 和 || 逻辑或!a:如果a为真,则结果为假;如果a为假,则结果为真。

a&&b:当a和b都为真时,结果为真;否则结果为假。

a||b:当a和b都为假时,结果为假;否则结果为真。

例3-6://统计字符,包括英⽂字母,数字字符和其他字符switch语句3-8://查询⾃动售货机中商品的价格switch语句可以处理多分⽀选择问题,根据其中break语句的使⽤⽅法,⼀般分为三种情况1:在switch语句的每个语句段中都使⽤break语句switch注:switch语句中的default可以省略,如果省略了default,当表达式的值与任何⼀个常量表达式的值都不相等时,就什么都不执⾏。

《C语言程序设计》(第2版)苏小红-13章 3

《C语言程序设计》(第2版)苏小红-13章 3
第3章 简单的算术运算 和表达式
哈尔滨工业大学 计算机科学与技术学院
苏小红
本章学习内容
算术运算符 增1和减1运算符 宏常量与 const常量 表达式与赋值中的自动类型转换 强制类型转换运算符 常用的标准数学函数
2021/8/6
2/51
运算符( Operator )
详见附录C
常见的运算符 –算术运算符 –赋值运算符 –强制类型转换 –关系运算符 –逻辑运算符 –增1和减1 –位运算符
#include <stdio.h> main() {
int x = 153, b0, b1, b2, sum; b2 = x / 100; b1 = (x - b2 * 100) / 10; b0 = x % 10; sum = b2 + b1 + b0; printf("b2=%d, b1=%d, b0=%d, sum=%d\n", b2, b1, b0, sum); }
32/51
增1和减1运算符
(Increment and Decrement)
良好的程序设计风格提倡:
在一行语句中,一个变量只能出现一次增1 或者减1运算 – 过多的增1和减1运算混合,不仅可读性差,而
且因为编译器实现的方法不同,导致不同编译 器产生不同的运行结果
2021/8/6
33/51
【例3.2】计算圆的周长和面积
num 1250
Example: num += 5; similar to num = num + 5
2021/8/6
shorthand assignment operator 25/51
已知 int a = 3; 执行 a += a -= a * a 后,变量a的值?

键盘输入与屏幕输出-3单个字符的输入和输出

键盘输入与屏幕输出-3单个字符的输入和输出

第3章键盘输入与屏幕输出——单个字符的输入和输出哈尔滨工业大学苏小红本节要讨论的主要问题⏹用getchar()从键盘输入单个字符⏹用putchar()向屏幕输出单个字符字符常量⏹字符常量是用单引号括起来的一个字符'3'表示一个数字字符,而3则表示一个整数数值⏹转义字符(Escape Character)一些特殊字符(无法从键盘输入或者另有他用) 所有的ASCII码都可以通过转义方式表示出来字符在内存中是如何存储的?对应的ASCII码的二进制值‘B'的ASCII码值是十进制——66八进制——0102十六进制——0x42所有的ASCII码都可通过转义方式表示'B''\102''\x42'字符型变量⏹定义一个字符型变量char ch;⏹字符型变量的值单个字符的输入输出⏹字符输出函数putchar()putchar(ch)向屏幕输出一个字符,字符型变量ch的值⏹字符输入函数getchar()ch = getchar()从键盘接收的字符作为getchar()的函数值无参数大写英文字母转换成小写英文字母小写英文字母转换成大写英文字母ch = ch - 32;大写英文字母转换成小写英文字母大写英文字母转换成小写英文字母两种输入输出方法的比较⏹输入字符的两种方法ch = getchar();scanf("%c", &ch);⏹输出字符的两种方法putchar(ch);printf("%c", ch);讨论。

教学课件:《C语言程序设计》(第4版)苏小红

教学课件:《C语言程序设计》(第4版)苏小红

Domain of Low level language
– “高级”在哪里?
– 可以在一个更高的级别上进行编程 – 不像低级语言那样依赖于硬件 – 更远离机器语言 – 更易学易用,具有可移植性
19/37
问题14:如何将高级语言翻译成机器语 言?
• 编译型语言
– 通过编译器(Compiler)把源程序全部翻译成逻辑上与之等价的机 器语言表示的目标代码(Object Code),才能被计算机识别和执 行
眼睛和耳朵
大脑
11/37
问题7:什么是软件?
• 人驾驭计算机的手段之一是编写软件(OS, 软O件ffic(Seo, fItEw,a…re))
系统软件—为使用计算机提供最基本的功能
操作系统—用户与计算机硬件系统之间的接口, 管理计算机系统的各种软、硬件资源,使得它们 可以协调工作,最内层
支撑软件—环境数据库、接口软件和工具软件
应用软件—直接面向特定应用的软件
图像处理,文字处理,计算机动画,CAD…
12/37
问题8:软件与硬件的关系是什么?
• 硬件——计算机的躯壳和肉体 • 软件——计算机的灵魂和思想 • 软件促进了计算机从裸机到计算机系统的
进化
13/37
问题9:程序和软件有区别吗?
• 程序(Program)
– 为了实现特定目标或解决具体问题而用计算机语 言编写的指令的有序集合
27/37
C语言标准
1978年,Dennis M.Richie和Brian W.Kernighan合著影响 深远的名著《The C Programming Language》
1982年,美国国家标准化协会( American National Standards Institute,ANSI)成立C标准委员会

c语言程序设计(三章11.30).ppt

c语言程序设计(三章11.30).ppt
#include <stdio.h> void main( ) { int a,b; scanf(“%d%d”,&a,&b”); if (b= =10) y=a+b; else y=a-b;
if (a= =1)
if (b= =2) y=2*a-b; else y=a+2*b;
printf(“%d”,y);
}
【例】输入2个实数,按由大到小的顺序输出这2个数。 #include<stdio.h> if (a>b) void main( ) { printf(“%f,%f”,a,b);
If (a<b)
float a, b, temp; printf(“Input a, b:”);
scanf(“%f,%f”, &a, &b); if (a<b) { temp = a; //a,b交换 a = b; b = temp; } printf(“%f, %f\n”,a, b);
然后用这个变量的值与要比较的数逐个进行比较在比较时如果发现这个最大小值变量的值比这个要比较的数小大则将这个数存放到最大小值变量中使该变量始终存放着一个所有已比较的数中的最大小值
第三章
控制结构
重点:
1、单分支和双分支if语句的基本用法。 2、If语句的嵌套使用。 3、Switch语句的基本用法。 4、while、do-while语句的基本用法。 5、for 语句的使用。
例:
int a, b, c, d,sum; a = b+c*d; c ++;
sum =a+b++;
3)函数调用语句 通常函数调用语句作为表达式语句的一部分,因此函数调用语 句可并入表达式语句. 例: a=max(a,b,c); printf(“%d%o\n”,x , y+8); 4)空语句 只有一个;的语句叫空语句,是表达式语句的特例,该语句不 做任何事情。

教学课件 C语言程序设计(第2版)苏小红

教学课件 C语言程序设计(第2版)苏小红
• 同种类型在不同的平台其占字节数不尽相同
– 如int在16位、32位和64位系统上分别占2、4和8 个字节
• 不要对变量所占的内存空间字节数想当然
– 用sizeof获得变量或者数据类型的长度
• 现象与危害
– 在平台间移植时会出现问题,导致数据丢失或者 溢出
sizeof到底是什么?
• C语言的关键字,并非函数
• 其他符号
– {和}标识函数体或语句块 – /*和*/是程序注释的定界符
• 常量(Constant)
2.1.1常量(Constant)
• 在程序中不能改变其十进值制 的量长整型 无符号整八型进十制六进制
• 包括:
十进制小指数数形式
– 整型(如 0,67, -2, 123L, 123u,
• 默认为int
– 是近年出现并获得关注的C/C++开发环境 – CB的功能远远优于TC,也优于VC 6.0 – CB只是一个IDE(集成开发环境),没有内置的
编译器和调试器 – 但可以支持多种编译器(不包括TC),例如GCC
编译器和GDB调试器
VC++ 6.0的初始界面
保存文件 建立新文件
运行 编译
在编译之前,VC先弹出对话框,询问是否建立一个默认的 项目工作区。VC必须有项目才能编译,所以这里必须选择 “Yes”。系统在保存.c文件的目录里自动生成与C源文件 同名的.dsw和.dsp等文件。以后可直接打开这些文件来修 改程序,不必再重复上面的过程
C语言“好”吗?
C语言诡异离奇, 缺陷重重,但却 获得巨大成功
C语言的爱与恨
•爱
– 信任程序员
– 给程序员最大的发 挥空间
– 运行效率高
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2017/12/11 33/51
【例3.2】计算圆的周长和面积
#include <stdio.h> main() { double r = 5.3; printf("circumference = %f\n", 2*3.14159*r); printf("area = %f\n", 3.14159*r*r); }
【例3.4】计算圆的周长和面积
#include <stdio.h> main() 宏替换 { double r; printf("Input r:"); scanf("%lf", &r); printf("circumference = %f\n", 2*PI*r); printf("area = %f\n", PI*r*r); }
简写的复合赋值(Shorthand Assignment)
2017/12/11 27/51
3.1.3增1和减1运算符 (Increment and Decrement)

n++,n--,++n,--n – ++让参与运算的变量加1,--让参与运算的变量减1 – 作为后缀(postfix)运算符时,先取n的值,然后加/减1
4 3
a = a + 1;
2017/12/11
32/51
3.1.3增1和减1运算符 (Increment and Decrement)
良好的程序设计风格提倡:

在一行语句中,一个变量只能出现一次增1 或者减1运算
–过多的增1和减1运算混合,不仅可读性差,
而且因为编译器实现的方法不同,导致不同编 译器产生不同的运行结果
2017/12/11
38/51
计算圆的周长和面积
#include <stdio.h> #define PI 3.14159; #define R 5.3; main() { printf("area = %f\n", PI * R * R); printf("circumference = %f\n", 2 * PI * R); }


详见附录C 常见的运算符 –算术运算符 –赋值运算符 –强制类型转换 –关系运算符 –逻辑运算符 –增1和减1 –位运算符
3/51
2017/12/11
3.1C运算符和表达式 (Operator and Expression)
何谓运算符和操作数?
Example:
W+Z
运算符 (Operator)
n++; m = ++n; m = n;
2017/12/11 29/51
前缀( Prefix )增1和减1运算符
Example:
j = ++i - 2
similar to
i
5 6 ?? 4
i = i + 1;
j = i – 2;
j
2017/12/11
30/51
后缀(Postfix)增1和减1运算符
第3章 简单的算术运算 和表达式
哈尔滨工业大学 计算机科学与技术学院 苏小红
sxh@
本章学习内容
算术运算符 增1和减1运算符 宏常量与 const常量 表达式与赋值中的自动类型转换 强制类型转换运算符 常用的标准数学函数
2017/12/11
2/51
运算符( Operator )
2017/12/11
8/51
求余(Modulus)

It returns the remainder that occurs after performing the division of 2 operands
Rule: – Operands must be integers

2017/12/11
High: * Low: + / %
算术表达式
不同优先级时的运算顺序:
——从高到低
相同优先级时的运算顺序:
——算术运算符为左结合(从左到右)
2017/12/11 15/51
(Arithmetic Expression)
Example:
算术表达式
2.5 + 6 – 2 * 2 = ?4.5 2.5 + 6 – 4
操作数 (Operand)
2017/12/11
操作数 (Operand)
4/51
3.1.1算术运算符和表达式
Arithmetic Operators
Addition (+) Subtraction (-)
2017/12/11
Modulus (%) Division (/)
5/51
Multiplication (*)
2017/12/11 26/51
3.1.2复合的赋值运算符 (Combined Assignment Operators)
Operation += -= *= /= %= Examples of expression num += 5; num -= 5; num *= 5; num /= 5; num %= 5; Description num = num + 5; num = num – 5; num = num * 5; num = num / 5; num = num % 5;
m = n; m = n++; n++;
2017/12/11 28/51
3.1.3增1和减1运算符 (Increment and Decrement)

n++,n--,++n,--n – ++让参与运算的变量加1,--让参与运算的变量减1 – 作为后缀(postfix)运算符时,先取n的值,然后加/减1 – 作为前缀(prefix)运算符时,先加/减1,然后取n的值
num
15 20
15 + 5 20
Example:
num += 5;
2017/12/11
similar to num = num + 5
shorthand assignment operator
25/51
已知 int a = 3; 执行 a += a -= a * a 后,变量a的值? a += a -= a * a a += a -= 9 -12 -6 3 a += -6 a = -12 执行 a += a -= a *= a 后,变量a的值? a += a -= a *= a a += a -= 9 a += 0 0 9 3 a = 0

解决方案: – 避免使用幻数 – 把幻数定义为常量(宏常量、const常量……)
36/51
2017/12/11
3.2宏常量与宏替换
#define 标识符 字符串

宏常量(Macro Constant )
–也称符号常量 –一般采用全大写字母表示

宏定义不是语句,而是一种编译预处理 命令
37/51
2017/12/11
Syntax:
变量x = 变量x 运算符op 表达式 ;
变量x 运算符op = 表达式;
这种形式看起来更直观,且执行效率一般也更高一些
2017/12/11 24/51
3.1.2复合的赋值运算符 (Combined Assignment Operators)
Example:
num = num + 5;
circumference = 33.300854 area = 88.247263
2017/12/11 34/51
【例3.3】计算圆的周长和面积
#include <stdio.h> 在程序中直接使用的常数称 main() 为幻数(Magic Number) { double r; printf("Input r:"); scanf("%lf", &r); printf("circumference = %f\n", 2*3.14159*r); printf("area = %f\n", 3.14159*r*r); }
9/51
求余(Modulus)
Example:
11 % 5 = 1
2 5 11 10
an integer
result
the result is the remainder of 11/5
remainder
an integer
2017/12/11 10/51
1
求余(Modulus)
Example:
【例3.1】计算并输出一个三位整 数的个位、十位和百位数字之和
#include <stdio.h> main() { int x = 153, b0, b1, b2, sum; b2 = x / 100; b1 = (x - b2 * 100) / 10; b0 = x % 10; sum = b2 + b1 + b0; printf("b2=%d, b1=%d, b0=%d, sum=%d\n", b2, b1, b0, sum); }
2017/12/11
19/51
算术混合运算
2017/12/11
20/51
【例3.1】计算并输出一个三位整 数的个位、十位和百位数字之和
关键是如何分离个位、十位和百位数字?
153 % 10 = 3 153 / 100 = 1 153 - 1*100 = 53 53 / 10 = 5
相关文档
最新文档