C语言第十一讲课件

合集下载

C语言ppt课件(完整版)

C语言ppt课件(完整版)
编译 链接 v0o1i0d1q0u0it(1v1oi0d1);110001 11010011 01110001 11010011 01110001 11010011
源程序 目标程序 可执行程序 v0o1i1d1s0h0o0w1Ta1b1le0(1v0o0id1);1 01110001 11010011 01110001 11010011 10101010
11010011 11010011
01110001 10110111
v0o1i0d1h0a0n1d1le_0m11e1n0u(0v0o1id)1;1010011 01110001 11010011 01110001 11010011
i1n1t1m1e0n0u0_0se0le1c1t1(v0o0id0)1; 11010011 01110001 11010011 01110001 11010011
sum=number1+number2;
printf("\n%d+%d=%d",number1,number2,sum); }
返 回 上一页
பைடு நூலகம்下一页
思考:加法器的局限性在于,它只能对整数 进行加法运算,是否可以编写这样的程序,可 以对任意两个整数进行加和减运算呢?
分析:该计算器实现两个功能:加法功能和减 法功能,因此,分别编写两个函数实现这两个 功能:加法函数sum( ),减法函数sub( )。
返回
下一页
标志符的命名规则:
(1)标识符只能由字母、数字、下划线组成,且 第一个字符不能为数字。
(2)C语言区分大小写。 (3)标识符的名字不能和C语言中的关键字和特
定字相同。 (4)标识符的长度最好不要超过8个字符。 (5)标识符的命名最好做到见名知意。如age用

C语言第11章精品PPT课件

C语言第11章精品PPT课件

11.1 文件的概述
12
11.1.2 文件的打开与关闭
1. 文件打开函数fopen( )
常用的调用形式: FILE *fp; fp = fopen(文件名, 文件使用方式); 文件名:需要打开的文件名称(字符串)。 文件使用方式:是具有特定含义的符号。
函数功能:
按指定的文件使用方式打开指定的文件。 若文件打开成功,为该文件分配一个文件缓冲区和一个 FILE类型变量,返回一个FILE类型指针; 若文件打开失败,返回NULL。
设备文件
在C语言中,“文件”的概念被进一步扩大, 把每台与主机相连的输入输出设备都看作是一个 文件。即把实际的物理设备抽象为逻辑文件,它 们被称为设备文件。
对外部设备的输入输出就是对设备文件的 读写。
2021/2/21
11.1 文件的概述
5
11.1.1 文件和文件指针
2. 文件的种类
按文件存储数据的形式
1
C 语言程序设计
第11章 文 件
计算机科学系
第11章 文件
2
11.1 文件的概念 11.2 文本文件的读写 11.3 二进制文件的读写
2021/2/21
11.1 文件的概述
3
11.1.1 文件和文件指针
1. 什么是文件
文件:存储在外部存储介质上相关数据的集合。
例如:程序文件中保存着程序,数据文件中保存着数据。
因此对uunnss于iiggnn每eedd 个cha使r 用*ics中utrepm的;p; 磁//**盘CTue文rmrpeo件nrta必rayc须t*i/v先e p定oin义ter一*/ 个FILsEho类rt型的文件t指oke针n;变量/* 并Use指d f向or此va变lid量ity。checking */

C语言教程十一函数参数的传递和值返回

C语言教程十一函数参数的传递和值返回

C语言教程十一、函数参数的传递和值返回前面我们说的都是无参数无返回值的函数,实际程序中,我们经常使用到带参数有返回值的函数。

一、函数参数传递1.形式参数和实际参数函数的调用值把一些表达式作为参数传递给函数。

函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数。

在函数调用之前,实际参数的值将被拷贝到这些形式参数中。

2.参数传递先看一个例子:void a(int); /*注意函数声明的形式*/main(){int num;scanf(%d,&num);a(num); /*注意调用形式*/}void a(int num_back) /*注意定义形式*/{printf(%d\n,num_back);}在主函数中,先定义一个变量,然后输入一个值,在a()这个函数中输出。

当程序运行a(num);这一步时,把num的值赋值给num_back,在运行程序过程中,把实际参数的值传给形式参数,这就是函数参数的传递。

形参和实参可能不只一个,如果多于一个时,函数声明、调用、定义的形式都要一一对应,不仅个数要对应,参数的数据类型也要对应。

void a(int,float);main(){int num1;float num2;scanf(%d,&num1);scanf(%f,&num2);a(num1,num2);}void a(int num1_back,float num2_back){printf(%d,%f\n,num1_back,num2_back);}上面的例子中,函数有两个参数,一个是整型,一个是浮点型,那么在声明、调用、定义的时候,不仅个数要一样,类型也要对应。

如果不对应,有可能使的编译错误,即使没错误,也有可能让数据传递过程中出现错误。

再看一个例子:void a(int);main(){int num;scanf(%d,&num);a(num);}void a(int num){printf(%d\n,num);}看上面的例子,形式参数和实际参数的标识符都是num,程序把实际参数num 的值传递给形式参数num。

C语言PPT教程第十一章

C语言PPT教程第十一章
足以保存这一组数据 • 在内存中开辟空间,使用的方法:声明变量 • 声明变量时的数据类型决定了空间的大小 • 没有哪个基本数据类型所声明的变量可以保
存一组相关数据(一组中数据类型不同) • 解决办法——自己创建数据类型 • 该数据类型一定由多个基本数据类型组成
5
自己创建数据类型——声明结构体
•一般形式:
• 每插入一个数,需要同前面的其它数依次比 较,选择合适位置,所以要用循环
char author[20];
float price;};
int edn;
struct cat book1;
float price;
strcpy(book1.bk_name,“人月神 };
话”);
struct cat book1={“人月神
strcpy(Book1.author,“Brooks”); 话”,“Brooks”,2,30.00};
temp=a [ j ]; a [ j ]=a [ j-1]; a [ j -1]=temp; }
第2、3、4次将最小值置顶,该如何写?
25
将最小值置顶
for( j=4 ; j>0; j-- ) if(a [ j ]<a [ j -1]) { temp=a [ j ]; a [ j ]=a [ j-1]; a [ j -1]=temp; }
• 示例: struct unit
{
char ch;
int i; };
struct unit series [3] =
{ {'a', 100}, {'b', 200},
{'c', 300}
19
};
结构体指针

c++完全讲义ppt unit11

c++完全讲义ppt unit11

11.3. 1 矢量类
矢量容器的声明: 矢量容器的声明:
#include<vector> …… vector<inБайду номын сангаас> vi; //定义存放整形序列的向量容器对象 ,长度为 的空 定义存放整形序列的向量容器对象vi,长度为0的空 的空vector 定义存放整形序列的向量容器对象 vector<float> vf; //存放实型序列的向量容器 存放实型序列的向量容器 vector<char> vch; //存放字符序列的向量容器 存放字符序列的向量容器 vector<char*>vstr; //存放字符串序列的向量容器 存放字符串序列的向量容器
(3) 迭代子(Iterator): 迭代子( ):
迭代子是指针概念的泛型化,它指向容器中的元素,它能象 迭代子是指针概念的泛型化,它指向容器中的元素, 指针一样增减,轮流指示容器中每个元素. 指针一样增减,轮流指示容器中每个元素.所以说迭代子是 面向对象版本的指针.迭代子可以包括指针, 面向对象版本的指针.迭代子可以包括指针,但迭代子又不 仅仅是一个指针. 仅仅是一个指针. 迭代子把算法与容器连接起来. 迭代子把算法与容器连接起来.注意算法只是间接通过迭代 子操作容器元素,算法本身与容器无关. 子操作容器元素,算法本身与容器无关.算法通常返回迭代 子.
矢量类的迭代子: 矢量类的迭代子: 迭代子
每个容器都有自己所支持的迭代子类型, 每个容器都有自己所支持的迭代子类型,迭代子决定了可采用 哪种算法.vector支持随机访问迭代子 具有最强的功能. 支持随机访问迭代子, 哪种算法.vector支持随机访问迭代子,具有最强的功能. vector的迭代子通常实现为vector元素的指针 的迭代子通常实现为vector元素的指针. vector的迭代子通常实现为vector元素的指针.所谓选择容器 实际上很大部分是选择所支持的迭代子. 类,实际上很大部分是选择所支持的迭代子.

c语言char11

c语言char11
类型标识符
方式二:可以在说明结构体时真接定义变量, 方式二:可以在说明结构体时真接定义变量,如: struct student{ int num; char name[20]; …} s1, s2, b[10], *p; 方式三:可在说明一个无名结构体类型时, 方式三:可在说明一个无名结构体类型时,同时直接定义变 。(此方式只可在不再需要定义此类型变量的场合下 量。(此方式只可在不再需要定义此类型变量的场合下 使用) 使用) struct { int num; char name[20]; …}s1, s2, b[10], *p;
name “ Li Lin”
sex ‘M’ year 1982
birthday month 12 day 4
score 85.5
a
二、对结构体变量的成员操作: 对结构体变量的成员操作:
结构体变量中的每个成员都属于某个具体的数据类型。因此, 结构体变量中的每个成员都属于某个具体的数据类型。因此, 对结构体变量中的每个成员的操作与普通变量一样, 对结构体变量中的每个成员的操作与普通变量一样,包括 输入输出。换句话说,如果某个成员是某基本类型, 输入输出。换句话说,如果某个成员是某基本类型,就可 以将该成员作为基本类型变量来处理。 以将该成员作为基本类型变量来处理。 例: scanf(“%ld %ld”,&a.num); /*长整型量输入 长整型量输入* scanf( %ld ,&a.num); /*长整型量输入*/ gets(); /*字符串输入 字符串输入* gets(); /*字符串输入*/ sex=ˊMˊ; /*字符变量赋值 字符变量赋值* a.sex=ˊMˊ; /*字符变量赋值*/ score=93 93. /*实型变量赋值 实型变量赋值* a.score=93.5; /*实型变量赋值*/ (i=0 name[i]!=ˊ\ for (i=0;[i]!=ˊ\0ˊ;i++) printf(“% ,a name[i]); ,a. /*输出字符值 输出字符值* printf( %c”,[i]); /*输出字符值*/ sum=sum+a.score;

C语言第十一章[57页]


结构体类型的声明
struct student {
long id; char name[20]; char sex; int age; float score[5]; char addr[30]; };
声明了一个结构体类型
结构体的名字 称为结构体标 签(Structure Tag)
构成结构体的变量 称为结构体的成员
第十一章 自定义数据类型
目录/Contents 结构体数据类型,共用体数据类型、枚举数据类型、定 义数据类型的别名 结构体变量、结构体数组、结构体指针的定义和初始化 结构体成员的引用、成员选择运算符、指向运算符 向函数传递结构体变量、结构体数组、结构体指针 动态数据结构、动态链表
问题的提出
在程序里怎样表示一个人的信息(姓名、年龄、性别…)? 想表示多个人呢? 如何用计算机程序实现下述表格的管理?
long id; char name[20]; char sex; int age; float score[5]; char addr[30]; }STUDENT;
stu.id=1232019101; strcpy(,”张三丰”); stu.sex=‘M’;
stu.age=20;
stu.score[ ]= {85,78,90,83,77}; Stu.addr=“北京”;
typedef struct date {
int month; int day; int year; }DATE;
结构体.成员名
stu.id=1232019101; 当出现结构体嵌套时,必须以级联方式 访问结构体成员
stu.birthday.year=2000; stu.birthday.month=5; stu.birthday.day=12;

C语言基础讲义课件


几个基本概念: 类、对象、属性、事件、方法
三类机制: 封装、继承、多态
第一章 C语言概述
§1.3 简单C程序分析
例1.1 打印(显示)一串字符。
/* example1.1 */ #include<stdio.h> void main( ) { printf(“This is an example. \n”); 运} 行结果: This is an example.
else z=y ;
c=max( a , b ) ;
return (z) ;
printf(“max=%d\n ”, c) ;
}
}
14
第一章 C语言概述
C程序结构
1、C程序由函数构成
{一个主函数(main函数)
C程序= 一个主函数+若干其他函数(子或库)
{ { 说明部分
2、函数 { 函数体 }
数据定义(语句) 执行部分
11
第一章 C语言概述
例1.2 已知角度值45°, 求正弦值的2倍。
/*example 1.2*/
#include<stdio.h>
#include<math.h>
void main( ) { float x, y;
x=45; y=2*sin(x*3.14/180); printf(“Y=%f \n”, y); }
第二章 算法
§2.1 算法的概念
算法:为解决一个问题而采取的方法和步骤。 对同一个问题, 算法是不唯一的。例如:
1+2+3+……+100=5050 或 100+1+99+2+98+……+49+51+50= 100+49*100+50=5050

C语言第十一章课件


sex:%c\n”,(*p).num,(*p).name, (*p).sex);
}
引用结构体成员的三种形式:
结构体变量名.成员名 (*p).成员名
指向运算符。其优先级 高于自增、自减运算符
p- >成员名
试分析以下运算:
p->n 得到p指向的结构体变量中的成员n的值 p->n++ 得到p指向的结构体变量中的成员n的值,
char ch;
float fdata
{int i; char ch; 先定义 float f; 类型
};
union data a,b,c;
union {int i; char ch; float f; } a,b,c;
直接 定义
注意共用体类型变量与结构体类型变量的 区别
行赋值或存取以及运算。
如:student1.birthday.year
(续)
(接上片)
3. 对成员变量可以象普通变量一样进行各种运算, 如:
sumage=student1.age+student2.age;
4. 可以引用成员的地址,也可以引用结构体变量的
地址,如 scanf(“%d”,& student1.num);
不能只指定一个变 量为“struct型”而不 指定结构体名
struct student student1, student2;
•有时,可用符号常量代表一个结构体类型,如:
#define STUDENT struct student
STUDENT
{int num; char name[20]; char sex; int age; char addr[30];
struct date {int month; int day; int year; };

C++第11课if语句(课件) 适合小学中高年级

_c__in_>_>__n______; ← n来啦
ge=n%10;
shi=(n/10)%10;
_b__a_i=_n__/1_0_0____; ← 求百位
he=ge+shi+bai;
cout<<“各个数位之和是:”<<he<<endl;
return 0;
}
Hi,各位同学: 我们是“/”、“%”,你们还
return 0;
}
完善程序
从键盘输入一个整数,判断是不是偶数,若是就输出“是偶数”
#include<iostream> using namespace std; int main() {
int n; cout<<“请输入一个整数:” _____________; ← 整数来啦 if (__________) cout<<n<<“是偶数”; ← 判断 return 0; }
1.计算机需要有一个小房子(变量)来存储这个整数。
用int a;来申请一个名字叫作a的小房子(变量),来存储 需要判断的整数。
2.你需要告诉计算机这个数是什么?
用cin>>a;来读入一个整数,并将这个数存储在小房子a中。
3.计算机需要判断是这个是否正数。 4.输出计算机的判断结果。
if
(a>0)
cout<<“是正数”;
出发 图书馆
公园 电影院
回家
流程图:
开始 输入
处理 输出 结束
顺序结构
出发 图书馆
天气


公园
回家
选择结构
流程图:
开始
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf ("%d, ", a); a += k ; 静态变量会记住前一次调用时留下来的值 }ຫໍສະໝຸດ 作业与实验• 作业
– P90:7,8,9,10,11,12,13,14
• 实验
–无
16/
4/
pi = 3.1418
例5-5 判断素数的函数
例5-5 求100以内的全部素数,每行输出10个。素数 就是只能被1和自身整除的正整数,1不是素数,2 是素数。 要求定义和调用函数prime (m)判断m是否为素数, 当m为素数时返回1,否则返回0。 • 算法描述:对2~100之间的每个数进行判断,若 是素数,则输出该数。
/* 复合语句结束 */
#include "stdio.h" 例5-7 全局变量定义 int x; /* 定义全局变量x */ int f( ) { 若局部变量与全局变量 int x = 4; /* x为局部变量 */ return x; 同名,局部变量优先 } int main(void) { int a = 1; x = a; /* 对全局变量 x 赋值 */ 4, 7 a = f( ); /* a的值为4 */ { int b = 2; b = a + b; /* b的值为6 */ x = x + b; /* 全局变量运算 */ } printf("%d %d" , a, x); return 0; }
变量从定义开始分配存储单元,到运行结束存储单元被回收 的整个过程。
12/
存储区
• 存储类型:
– 动态存储:自动变量
– 静态存储:全局变量、静态局部变量
• 用户存储空间
数 据 区
静态存储区
动态存储区
13/
静态局部变量
static 类型名 变量表 • 作用范围:局部变量 • 生命周期:全局变量
14/
例5-9 静态局部变量示例 #include <stdio.h> void fun (int k); int main (void) { int k; for (k = 1; k <= 3; k++) 0,1,3, fun (k); return 0; } void fun(int k) { static int a; 静态变量的初值为0
5.3 变量与函数
5.3.1 局部变量和全局变量
5.3.2 变量生命周期和静态局部变量
7/
5.3.1 局部变量和全局变量
• 局部变量
– 在函数内定义的变量(包括形参)
作用范围:本函数内部
– 定义在复合语句内的变量
作用范围:复合语句内部
• 全局变量
在函数以外定义的变量,不从属于任一函数。
作用范围:从定义处到源文件结束(包括各函数)
for(m = 2; m <= 100; m++) if (m是素数) printf("%d ", m);
5/
prime(m) != 0
例5-5 源程序
int prime (int m) { int i, n; if ( m == 1 ) return 0; n = sqrt (m); for( i = 2; i <= n; i++) if (m % i == 0){ return 0; } return 1; }
3/
例5-4 源程序
Enter e: 0.0001
double funpi (double e) /* 用格里高利公式计算π的近似值, { int denominator, flag; 精度为e */ double item, sum; #include <stdio.h> flag = 1; #include <math.h> denominator = 1; int main (void) item = 1.0; { double e, pi; sum = 0; while (fabs (item) >= e){ double funpi (double e); item = flag * 1.0 / denominator; printf ("Enter e:"); sum = sum + item; scanf ("%lf", &e); flag = -flag; pi = funpi (e); denominator = denominator + 2; printf ("pi = %f\n", pi); } return sum * 4; return 0; } }
变量作用范围示例
int x=1; void main( ) { int a=2; …….. { int b=3; ….. } f( ); ……….. } int t=4 ; void f( ) { int x=5, b=6; ……. } int a=7;
11/
x=? a=? b=? b=? x=5 b=6 t=4 a没定义 x=? b=? t=? a=?
5.3.2 变量生命周期和静态局部变量
•自动变量(auto): 普通的局部变量
int x, y; auto int x, y; char c1; auto char c1;
– 函数调用时,定义变量,分配存储单元。 – 函数调用结束,收回存储单元。 •全局变量:从程序执行开始,到程序的结束,存储单 元始终保持。 •变量生命周期
8/
例5-6 在复合语句中定义局部变量。
#include <stdio.h> int main (void) { int a; a = 1; { int b = 2; b = a + b; a = a + b; } printf ("%d " , a ); return 0; }
9/
4
/* 复合语句开始 */ b:小范围内的临时变量
6/
#include <stdio.h> #include <math.h> int main(void) { int count, m; int prime (int m); count = 0; for(m = 2; m <= 100; m++){ if ( prime(m) != 0 ){ printf("%6d", m ); count++; if (count %10 == 0) printf ("\n"); } } printf ("\n"); }
第十一讲
函数(2)
计算机信息与工程学院
1/
学习目标
• 掌握如何使用局部变量和全局变量 • 了解静态变量的定义
2/
5.2 使用函数编写程序
例5-4 输入精度e,使用格里高利公式求π的近 似值,精确到最后一项的绝对值小于 e。要 求定义和调用函数 funpi(e) 求π的近似值。
π 1 1 1 1 4 3 5 7
相关文档
最新文档