C语言程序设计 第九章
《C语言程序设计教程(第二版)》 第09章-指针(1)
访问p_int所 指向的变量
getch();
}
程序运行结果: num_int=12, *p_int=12 num_f=3.14, *p_f=3.14 num_ch=p, *p_ch=p
2019/2/22
11
1、指针变量的定义
指针变量的定义标识符
数据类型 *指针变量[,*指针变量2……];
例如, [案例9.1]中的语句:
int num_int=12, *p_int ;
特别说明:定义而未初始化的指针变量(例如 p_int)是悬空的。
使用悬空指针变量,很容易破坏系统,导致系统 瘫痪。
2019/2/22
12
2、取地址运算 : &变量名 例 如 , [ 案 例 9.1] 中 的 &num_int 、 &num_f 、 &num_ch 的结果,分别为对应变量的地址 (num_int 、 num_f、num_ch)。 注意:指针变量只能存放相同数据类型变量的 地址。 例如, [案例9.1]中的指针变量p_int、p_f、p_ch, 只能接收int型、float型、char型变量的地址,否则出 错。
使p_int指向变量num_int
2019/2/22
10
printf(“num_int=%d, *p_int=%d\n”, num_int, *p_int); printf(“num_f=%4.2f, *p_f=%4.2f\n”, num_f, *p_f); printf(“num_ch=%c, *p_ch=%c\n”, num_ch, *p_ch);
9.3* 1维数组的指针与列指针变量 9.4 字符串的指针和指向字符串的指针变量 9.5 指针数组与主函数main()的参数 9.6 返回指针值的函数
C语言程序设计 第9章 文件
9.3 文件的顺序读写
❖ 【例9.4】fputs函数和fgets函数的使用。
9.3 文件的顺序读写
❖ 9.3.3 fprintf函数和fscanf函数 ❖ fprintf与fscanf函数为格式读写函数,与printf、scanf类似,fprintf与
fscanf用于从文件中读取指定格式的数据和把指定格式的数据写入文件,这 是按数据格式要求进行文件的输入/输出。其一般形式为: ❖ fscanf(fp,format,args); ❖ fprintf(fp,format,args); ❖ 其中,fp为文件指针,format为格式控制字符串,args为输入或输出的地 址列表。 ❖ 例如,若文件指针fp已指向一个已打开的文件文本,a、b分别为整型变量 ,则以下语句从fp所指向的文件中读入两个整数放入变量a和b中。 ❖ fscanf(fp,”%d%d”,&a,&b); ❖ 又如,若文件指针fp已指向一个已打开的文件文本,x、y分别为整型变量 ,则以下语句将x、y中的数据按%d的格式输出到fp所指向的文件中。 ❖ fprintf(fp,"%d%d",&a,&b);
本章小结
❖ 本章主要介绍了以下内容。 ❖ (1)文件的概念 ❖ 介绍了文件及文件指针的基本概念,以及文件的打开与关闭
函数fopen、fclose等。 ❖ (2)文件的顺序读写 ❖ 主要介绍了从文件中输出字符、字符串,以及将字符、字符
串写入文件的函数。 ❖ (3)随机文件的读写及错误检测 ❖ 主要介绍了随机文件读写的应用,以及文件的出错检测。
❖ 在实际读写文件中,人们常常希望能直接读到某一数据 项而不是按物理位置顺序逐个读下来。这种可以任意指 定读写位置的操作称为文件的随机读写。可以想象,只 要能移动位置指针到所需要的地方,实现文件的定位, 就能实现随机读写。
《C语言程序设计教程》第三版课后习题参考答案
《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
c语言程序设计pdf
c语言程序设计pdf《C语言程序设计》是一本介绍和教授C语言的编程技能和知识的教材,具有广泛的应用和普及性。
本书可以帮助读者从零开始学习C语言,并逐渐提高编程能力。
以下是《C语言程序设计》这本书的内容概述。
第一章:简介本章为读者介绍了C语言的历史、特点和发展趋势,以及如何搭建和配置C语言的开发环境。
第二章:基本语法本章详细介绍了C语言的基本语法,包括变量声明、数据类型、运算符、条件语句、循环语句等。
第三章:数组和字符串本章详细介绍了C语言中的数组和字符串的相关知识,包括数组的声明、初始化、访问和操作,以及字符串的声明、初始化和处理等。
第四章:函数本章介绍了C语言中的函数的概念和使用方法,包括函数的声明、定义、调用和参数传递等。
第五章:指针本章详细介绍了C语言中的指针的使用方法,包括指针变量的声明、初始化、访问和操作等。
第六章:结构体和共用体本章介绍了C语言中的结构体和共用体的概念和应用,包括结构体和共用体的声明、定义、访问和操作等。
第七章:文件处理本章介绍了C语言中的文件处理的方法和技巧,包括文件的打开、读取、写入和关闭等。
第八章:动态内存分配本章介绍了C语言中的动态内存分配的方法和技巧,包括动态内存的分配、使用和释放等。
第九章:常用库函数本章介绍了C语言中常用的库函数,包括字符串处理函数、数学函数、时间日期函数等。
第十章:综合练习本章提供了一些综合的编程练习题,供读者巩固和应用所学的C语言知识。
《C语言程序设计》这本书是一本很好的C语言教材,对于初学者来说非常适合。
通过学习这本书,读者可以初步掌握C 语言的编程技能,并能够实现一些简单的程序设计。
对于想要深入学习C语言的人来说,这本书也是一个很好的起点。
总之,无论是初学者还是进阶者,都可以从《C语言程序设计》这本书中获得很多有用的知识和技能。
C语言程序设计(第3版)何钦铭-颜-晖-第9章--结构
第9章结构【练习9-1】定义一个能够表示复数的结构类型,一个复数包括实数与虚数两个局部。
解答:struct complex{float real;float imaginary;};【练习9-2】人的出生日期由年、月、日组成,请在例 9-1 中的通讯录结构中增加一个成员:出生日期,用嵌套定义的方式重新定义该结构类型。
解答:struct date{int year;int month;int day;};struct student{int num;char name[10];struct date birthday;int computer,english,math;double average;};【练习9-3】例 9-1 中,如果要计算的是三门课程的课程平均成绩,应该如何改写程序?解答:#include<stdio.h>struct student{int num;char name[10];int computer,english,math;double average;};int main(void){int i, n;double math_sum,english_sum,computer_sum;struct student s1;printf("Input n:");scanf("%d", &n);printf("Input the student's number, name and course scores:\n"); math_sum=english_sum=computer_sum=0;for(i=1;i<=n;i++){printf("No.%d:",i);scanf("%d%s%d%d%d",&s1.num,,&s1.math,&s1.english,&s1 puter);math_sum+=s1.math;english_sum+=s1.english;computer_sum+=s1 puter;}printf("math_ave:%.2lf\nenglish_ave:%.2lf\ncomputer_ave:%.2lf\n", math_sum/n,english_sum/n,computer_sum/n);return 0;}【练习9-4】定义一个包含 5 名学生信息的结构数组,并对该结构数组的所有元素进行初始化。
C语言程序设计 第3版 第9章 编译预处理
#include "test2.c" static int sum(int n) {
int i,s=0; for(i=1;i<=n;i++)
s=s+fact(i); return s; }
static int fact(int n) {
C语言程序设计
第9章 编译预处理
第1讲:编译预处理基本形式
提纲
1.宏定义 2.文件包含 3.条件编译
1.宏定义
不带参数宏定义 带参数宏定义
格式:
#define 标识符 字符串
功能:
指定标识符代替一个较复杂的字符串。
注意说明:
(1)宏名一般习惯用大写字母,例如宏名PI。 (2)宏名用做代替一个字符串,不作语法检查。 (3)宏定义无需在末尾加“;” (4)宏定义的有效范围为#undef命令终止。 (5)在进行宏定义时,可以引用已定义的宏名。
char web[50]; int i=0; gets(web); while(web[i]!='\0') {
#if(R==1) if(web[i]>='A'&&web[i]<='Z') {web[i]=web[i]+32; i++;}
#else if(web[i]>='a'&&web[i]<='z') {web[i]=web[i]-32; i++;}
形式3:
#ifndef 标识符 程序段1
#else 程序段2
《C语言程序设计》 课后习题答案 高等教育出版社
《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。
其特点包括语法简洁、执行效率高、可移植性强等。
第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。
整型可以进一步细分为有符号整型和无符号整型。
第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。
这些运算符用于执行各种数学和逻辑操作。
第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。
if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。
第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。
函数定义包括函数返回类型、函数名、参数列表和函数体等部分。
第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。
C语言中可以使用数组来存储和操作大量数据。
第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。
通过指针,可以直接访问和修改对应内存地址中的数据。
第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。
C语言通过字符数组来表示和操作字符串。
第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。
第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。
C语言提供了一系列函数来实现文件的读写操作。
总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。
希望本文对读者有所帮助。
苏小红c语言程序设计课后答案
苏小红c语言程序设计课后答案苏小红的《C语言程序设计》是一本广泛使用的教材,它以清晰的结构和丰富的示例,帮助学生掌握C语言的基础知识和编程技巧。
课后答案对于学生来说是一个重要的学习资源,可以帮助他们检查自己的学习成果,加深对知识点的理解。
以下是一些可能的课后答案示例,用于帮助学生复习和理解C语言程序设计的相关概念。
第一章:C语言概述1. C语言的发展历史:C语言由Dennis Ritchie在20世纪70年代初期开发,最初用于UNIX操作系统的编写。
2. C语言的特点:C语言是一种结构化语言,具有高度的灵活性和强大的功能,能够进行底层系统编程。
第二章:C语言基础1. 数据类型:C语言提供了多种数据类型,包括整型(int)、浮点型(float和double)、字符型(char)等。
2. 变量声明:变量在使用前必须声明,声明时需要指定数据类型和变量名。
第三章:运算符和表达式1. 算术运算符:包括加(+)、减(-)、乘(*)、除(/)等。
2. 赋值运算符:如`=`,`+=`,`-=`等,用于给变量赋值或进行运算后赋值。
第四章:控制结构1. 条件语句:如`if`,`else if`,`else`,用于根据不同的条件执行不同的代码块。
2. 循环语句:包括`for`循环、`while`循环和`do-while`循环,用于重复执行代码块。
第五章:数组1. 一维数组:存储相同类型的元素,可以通过下标访问数组元素。
2. 多维数组:如二维数组,可以看作是数组的数组。
第六章:函数1. 函数定义:使用`return`类型和函数名来定义函数。
2. 函数调用:通过函数名和必要的参数来调用函数。
第七章:指针1. 指针变量:存储另一个变量的内存地址。
2. 指针运算:包括地址运算和指针的增减。
第八章:结构体和联合体1. 结构体:可以包含不同类型的数据成员。
2. 联合体:所有成员共享相同的内存位置。
第九章:预处理指令1. 宏定义:使用`#define`来定义常量或代码片段。
程序设计语言 编译原理(第三版)第9章
TOP 32
d
31
c
30
v
29
u
28
2
27
11
SP 26 25
返回地址 17
24
d
23
c
22
v(形参)
21
u(形参)
20
2(形参个数)
19
11
18
返回地址
17
11
16
i
15
b(形参)
14 1(形参个数)
13
0
12
返回地址
11
5
10
i
9
c
8
0
7
0
6
返回地址
5
0
4
x
3
a
2
0
1
返回地址
0
0
25
9.5 嵌套过程语言的栈式实现
0
0
过程S中调 用Q时
过程P中 调用S时
23
过程Q中调用R时
TOP
24
d
23
c
22
v(形参)
21
u(形参)
20 2(形参个数)
19
11
18 返回地址
SP
17
11
16
i
15
b(形参)
14 1(形参个数)
13
0
12
返回地址
11
5
10
i
9
c
8
0
7
0
6
返回地址
5
0
4
x
3
a
2
0
1
返回地址
0
0
(完整版)C语言程序设计第四版第九章答案谭浩强
The shortest way to do many things is
average=0; max=0; maxi=0; for(i=0;i<3;i++) {sum=0; for(j=0;j<3;j++)
sum+=stu[i].score[j]; stu[i].avr=sum/3.0; average+=stu[i].avr; if(sum>max) {max=sum; maxi=I; } } average/=N; printf(“NO. name score1 score2 score3 average\n”); for(I=0;I<N;I++) {printf(“%5s%10s”,stu[i].num, stu[i].name); for(j=0;j<3;j++) printf(“%9d”,stu[i].score[j]); printf(“%8.2f\n”,stu[i].avr); } printf(“average=%6.2f\n”,average); printf(“The highest score is:%s,score total:%d.”stu[maxi].name,max); } 9.6 编写一个函数 new,对 n 个字符开辟连续的存储空间,此函数应返回一个指针,指向字 符串开始的空间。New(n)表示分配 n 个字节的内存空间。 解:new 函数如下: #define NULL 0 #define NEWSIZE 1000 char newbuf[NEWSIZE]; char *newp=newbuf; char *new(int n) {if (newp+n<=newbuf+ NEWSIZE)
967c语言程序设计参考书
967c语言程序设计参考书《C语言程序设计》参考书前言:C语言是一种广泛应用于计算机编程领域的高级程序设计语言。
它简洁、灵活、强大,被广泛使用于操作系统、嵌入式系统、游戏开发等领域。
为了帮助读者更好地掌握C语言程序设计,本书对C语言的基本概念、语法规则以及常用库函数进行了详尽的讲解,并通过大量的实例演示和习题练习,引导读者从简单到复杂、从理解到应用,深入学习C语言的编程技巧和实践经验。
第一章 C语言概述本章主要介绍了C语言的发展历程、特点及其所适用的编程领域。
通过对C语言历史的回顾,帮助读者了解C语言的起源和发展变迁。
同时,通过对C语言的特点和优势的讲解,激发读者的兴趣和学习动力。
第二章基本数据类型和运算符本章详细介绍了C语言的基本数据类型及其对应的运算符。
涵盖了整型、浮点型、字符型和指针等数据类型,并且对基本运算符进行了逐一介绍,包括算术运算符、关系运算符、逻辑运算符等。
通过对数据类型和运算符的学习,读者可以了解C 语言的基本数据处理方式,为后续章节的学习打下基础。
第三章控制语句本章系统介绍了C语言中常用的控制语句,包括顺序结构、分支结构和循环结构。
通过对条件语句和循环语句的讲解,帮助读者理解C语言程序的执行流程和控制逻辑。
同时,通过实例分析和习题练习,培养读者对控制语句的灵活运用能力。
第四章函数与数组本章详细讲解了C语言中的函数和数组的概念和用法。
通过对函数和数组的讲解,读者可以深入了解C语言中的模块化和数据组织的概念,并通过实例演示和习题练习,提高对函数和数组的使用和编写能力。
第五章指针本章系统介绍了C语言中的指针的概念和用法。
指针是C语言的重要特性之一,对于理解和掌握C语言的高级特性和底层实现机制有着重要作用。
通过对指针的讲解,读者可以了解指针的概念、指针的运算和指针的应用,为后续章节的学习打下坚实基础。
第六章结构体与共用体本章详细讲解了C语言中的结构体和共用体的概念和用法。
结构体和共用体是C语言中用于组织和管理复杂数据的重要方法,通过对结构体和共用体的讲解,读者可以了解如何定义和使用结构体和共用体,并通过实例分析和习题练习,提高对结构体和共用体的灵活运用能力。
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案第一章:C语言基础1. 以下为C语言的特点:- C语言是一种结构化编程语言,可以通过模块化的方式构建复杂的程序。
- C语言具有较高的可移植性,可以在不同的操作系统和硬件平台上运行。
- C语言提供了丰富的库函数,方便开发者进行程序开发。
- C语言对指针的支持较好,可以进行底层的内存操作。
2. C语言中的标识符规则:- 标识符由字母、数字和下划线组成,且第一个字符不能是数字。
- 标识符区分大小写,因此变量名"num"和"Num"是不同的。
- 标识符不能与关键字重名,如"if"、 "for"等。
- 标识符长度一般不超过32个字符。
3. 在C语言中,预处理指令的作用是在程序编译之前对代码进行处理,包括宏展开、文件包含等。
预处理指令以"#"开头,常见的预处理指令有:- #include:用于包含头文件,将头文件中的内容插入到当前文件中。
- #define:用于定义宏,将宏名称替换为指定的值或代码片段。
- #ifdef、#ifndef、#endif:用于条件编译,根据条件是否成立来选择性地编译代码。
4. C语言中的数据类型分为基本数据类型和派生数据类型两种。
基本数据类型包括整型、浮点型、字符型和布尔型,派生数据类型包括数组、指针、结构体和共用体。
5. C语言中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。
算术运算符用于执行加减乘除等基本算术操作,关系运算符用于比较两个值的大小关系,逻辑运算符用于组合多个条件的判断结果,位运算符用于对二进制位进行操作,赋值运算符用于将右侧的值赋给左侧的变量。
第二章:C语言程序结构1. C语言程序结构由函数、语句和注释组成。
每个C语言程序至少包含一个main()函数,作为程序的入口。
2. 以下为C语言程序的基本结构:```c#include <stdio.h>int main() {// 程序代码return 0;}```3. C语言中的控制语句包括条件语句和循环语句。
《C语言程序设计》李学刚数字资源9章 参考答案 3拓展训练答案 单元2 拓展训练答案
单元2 拓展训练答案一、单项选择题1.下面4个选项中,均是合法整型常量的是(D )。
A.-0x4al,2e2,0x B.-0xcdf,0la,0xeC.-01,0,0686 D.0,0xabcd,1L2.下面4个选项中,不是合法十六进制数的是的(B )。
A.0XF2A B.01234C.-0xdddd D.0xdefl3.下列正确的转义字符是(A )。
A.'\a' B.'\B' C.'\c' D.'\d' 4.下面4个选项中,均不是不合法的转义字符的是(C )。
A.'\=','\\','xf' B.'\1011','\','\A'C.'\011' ,'\f','\1' D.'\abc','\101','xlf' 5.字符串"\'\\\a\bcde\f\'"的长度是(B )。
A.8 B.9 C.10 D.11 6.下列不能正确定义const常量是(C )。
A.const int b=0; B.int const b=12;C.const int c; D.int const c=10+2;7.宏替换过程是在(B )进行的。
A.运行前B.编译前C.编译后D.编辑后8.有宏定义#define L 10和#define M L+1,则printf("%d\n",10*M-1);输出的结果为( B )。
A.110 B.100C.109 D.1019.若有以下说明语句:char s="\\\\092" ; 则下面正确的是(B )。
A.使s的值包含5个字符B.说明语句不合法10.若有这样的定义和语句:unsigned short a=65535,b;b=a+1;程序其它部分正确,则printf("%d\n",b);输出的值为( A )。
967c语言程序设计参考书
967c语言程序设计参考书介绍本文档是一本C语言程序设计参考书,旨在帮助读者系统学习和掌握C语言编程。
通过详细的示例和解释,逐步引导读者理解C语言的基本概念和编程技巧,并提供在实际项目中应用这些知识的实例。
本书适合初学者和有一定编程基础的读者使用。
目录1.[第一章:C语言入门](#第一章:C语言入门)2.[第二章:数据类型和运算符](#第二章:数据类型和运算符)3.[第三章:流程控制](#第三章:流程控制)4.[第四章:函数与模块化编程](#第四章:函数与模块化编程)5.[第五章:数组与指针](#第五章:数组与指针)6.[第六章:结构体和联合体](#第六章:结构体和联合体)7.[第七章:文件操作](#第七章:文件操作)8.[第八章:动态内存分配](#第八章:动态内存分配)9.[第九章:高级C语言特性](#第九章:高级C语言特性)第一章:C语言入门1.1C语言简介C语言是一种通用的高级编程语言,具有简洁、高效的特点,被广泛应用于系统软件开发、嵌入式系统、游戏开发等领域。
本节将介绍C语言的起源和特点。
1.2开发环境搭建在学习C语言编程之前,我们需要正确配置开发环境。
本节将介绍如何搭建C语言开发环境,包括安装编译器、编辑器等。
1.3第一个C程序让我们从一个简单的"He ll oW or ld!"程序开始。
本节将教你如何编写、编译和运行你的第一个C程序。
第二章:数据类型和运算符2.1基本数据类型C语言提供了多种基本的数据类型,包括整型、浮点型、字符型等。
本节将介绍各种数据类型的定义和使用方法。
2.2运算符C语言支持各种算术、逻辑和关系运算符,用于完成不同类型的运算。
本节将详细介绍这些运算符的使用方法和优先级。
2.3类型转换在C语言中,不同类型的数据可以相互转换。
本节将介绍隐式和显式类型转换的规则,以及类型转换可能导致的一些问题。
第三章:流程控制3.1条件语句条件语句用于基于给定条件选择性地执行代码块。
C语言程序设计实例教程第2版习题答案作者李红第9章结构体和共用体.doc
9.4课后习题9.4.1项目练习一.练习目的1.进一步巩固结构体类型和共用体类型的定义与引川2.进一步复习链表的建立过程3.进一步巩固枚举类型的定义与枚举元索的引用方法二.练习内容1.用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点Z间的距离。
#include "stdio.h"include "math.h"struct pin{float x;float y;}a,b;main(){printfC*请输入a点的横纵坐标:“);scanf("%f%f"/&a.x,&a.y);printfC'Xn");printf("请输入b点的横纵坐标scanf(,,%f%f"/&b.x,&b.y);printf("\n n);printff"输出a、b 两点之间的距离是:%f",sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));getch();}2.16个同学围成一-圈,从笫1个人开始按1、2、3的顺序报号,凡报到3者退出圈子。
找出最后昭在圈子中的人原来的序号。
ttinclude "stdio.h"#include "stdlib.h"#define LEN sizeof(struct game)struct game{int num;struct game *next;};struct game *creat(){ struct game *head,*p;head=p=(struct game *) malloc(LEN);p->num=l;int i=2;while(i<=16){ p・>next=(struct game *) malloc(LEN);p->next-:>nu m=i;i++;p=p->n ext; }p->next=head; return(head);} struct game *delete(struct game *head) { struct game*pl=head,*p2=head,*x; int k=l;while(pl->next!=pl) {if(k==3) {x=pl; pl=pl->next;p2・>n ext=pl; free(x); x=NULL; k=0;} else {P2=pl; pl=pl->next;}pl->next=NULL;return(pl);}void print(struct game *head){ struct game *p;p=head;while(p!=NULL) {printf("%d\t",p->num);p=p->n ext;}printfCAn");}main(){ struct game *pt,*p;pt=creat();p=delete(pt);print(p);free(p);getch();}3.建立一个链表,每个结点包含的成员为:职工号、工资。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习目标
熟练掌握结构体和枚举类型的定义和引用方法; 熟练掌握结构体和枚举类型的定义和引用方法; 掌握结构数组的定义及其应用; 掌握结构数组的定义及其应用;
学习内容
结构体 结构体类型的定义 结构体变量的定义和引用 结构体变量的赋值 结构体数组 枚举类型变量的定义和引用 本章小结
学习内容
结构体 结构体类型的定义 结构体变量的定义和引用 结构体变量的赋值 枚举类型变量的定义和引用 综合举例 本章小结
9.1 结构体
结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------------自定 用途:把不同类型的数据组合成一个整体-------自定 义数据类型 引入结构体的好处: 引入结构体的好处:加强数据项之间的联系 如学生的基本信息,包括学号、姓名、性别、年龄、 如学生的基本信息,包括学号、姓名、性别、年龄、班 成绩等数据项。 级、成绩等数据项。这些数据项描述了一个学生的几个不同 侧面。 侧面。
结构体变量的引用 引用规则 成员(分量) 成员(分量)运算符 结合性: 结合性:从左向右 结构体变量不能整体引用 (分量)运算符 不能整体引用, 分量) 结构体变量不能整体引用,只能引用变量成员 成员( 成员 引用方式: 引用方式:
结合性: 结合性:从左向右 结构体变量名. 结构体变量名.成员名 //非指针型结构体变量的引用 //非指针型结构体变量的引用 结构体指针结构体指针->成员名 或 (*结构体指针).成员名 结构体指针) //指针型结构体变量的引用 //指针型结构体变量的引用 例 struct student stu1.birthday.month = 12; { struct 例 struct student student 例 struct 例 struct student student 例 stu1.num = 10; 可以将一个结构体变量赋值给另一个结构体变量 可以将一个结构体变量赋值给另一个结构体变量 strcpy int num; {例 struct student (, "zhangMing"); { { { { char结构体嵌套时逐级引用 intname[20];int num; num; int num; 结构体嵌套时逐级引用 if>birthday.year =\(n”,stu1); (×) int num; printf(“%d,%s,%c,%d,%f,%s\ printf(“%d,%s,%c,%d,%f,%s √ (stu1 = stu2 Stu2 stu2) struct date char int num;stu.score -=(stu1 ==stu1;) (√) stu1); (× char name[20]; name[20]; pstu1 stu1.score = 85.5;2008; char name[20];pstu1- 80; char name[20]; char name[20]; …….. (× (×) 结构体变量名. 结构体变量名 成员名.子成员名……最低级子成员名 { char sex; char sex; .成员名.子成员名……最低级子成员名 char sex; char sex; char int month; int age; sex; ->score += 10; int age; int age; pstuint age; int age;pstu int day; float score; float score; float score; float score; stu1.score += stu2.score; float score; char addr[30]; num name int year; 注意:在利用指针引用结构体成员时, ,‘M’birthday“DaLian” 注意:在利用指针引用结构体成员时,-和>之间不能有空格。 }; ( char addr[30]; stu1={101,“Wan Lin” , (*pstu).score); char addr[30]; ("%s %f", 之间不能有空格。 stu1={101,“ char addr[30]; char addr[30]; Lin”month ,19,87.5, year printf stu1.age++;,19,87.5,“DaLian” day }}birthday; ;=} &stustu2; ; birthday; } stu1, stu2; stu, *pstu &stu; stu2 stu1,; stu2; } stu1, stu2 stu2; } &stu1; stu2; } stu1, stu2, *pstu = stu1, stu2; &stu1;
char no[9]; char name[20]; char sex; unsigned int age; unsigned int classno; float grade;
数据项为一个整体
1、结构体类型的定义
struct [结构体类型名] 结构体类型名] { 数据类型名1 成员名1 数据类型名1 成员名1; 数据类型名2 成员名2 数据类型名2 成员名2; …… 数据类型名n 成员名n 数据类型名n 成员名n; };
struct Student_Info { struct Student_Info char no[9]; //学号 //学号 { char name[20]; //姓名 //姓名 char no[9], name[20], sex; char sex; //性别 //性别 unsigned int age, classno; unsigned int age; //年龄 //年龄 float grade; 注意:结构类型只是用户自定义的一种数据类型, 注意 classno; //班级 unsigned int:结构类型只是用户自定义的一种数据类型,用 //班级 }; float grade; //成绩 //成绩 来定义描述结构的组织形式,不分配内存, 来定义描述结构的组织形式,不分配内存,只有用它来定 }; 义某个变量时,才会为该变量分配结构类型所需要大小 义某个变量时,
第九章
结构体共同体和枚举类型
制作人:李敏 制作人:
学习的意义
整 型
短整型short 短整型short 整型int 整型int 长整型long 长整型long 单精度型float 单精度型float 双精度型double 双精度型double
只能定义单一的 数据类型, 数据类型,反映 事物单一属性
基本类型
no name sex age classno grade
9字节 20字节 20字节 1字节 2字节 2字节 4字节
… … … … … …
例:
struct Student_Info { char no[9], name[20], sex; unsigned int age, classno; float grade; }; struct Student_Info student;
struct Point 例结构类型中的成员名,可以与程序中的变量同名, : (3) 结构类型中的成员名,可以与程序中的变量同名,它们 { student struct date 代表不同的对象, 代表不同的对象,互不干扰 { int x, y; (4)int month; 结构体类型及变量的作用域和生存期与基本类型变量相 }; num; birthday 同int day;Img Student_Info student; name struct struct char name[20]; birthday num num name month day { int year; structchar name[20]; date month day }; int tag; { struct Img //正确 正确, structmonth; *pimg; //正确,可以包含自身类型的指针 int student struct //错误,不能包含自身类型的变量 //错误 错误, { int day; Img img; }; int num; int year; char name[20]; } birthday; birthday; birthday; } struct date birthday; stu; } stu; year year
2、结构体变量的定义和引用 结构体变量的定义 间接定义法:先定义结构类型,再定义结构变量 间接定义法:先定义结构类型,
struct 结构体类型名 { 数据类型名1 成员名1 数据类型名1 成员名1; …… 数据类型名n 成员名n 数据类型名n 成员名n; }; struct 结构体类型名 变量名列表; 变量名列表;
以分号; 以分号;结尾
//学号 //学号 //姓名 //姓名 //性别 //性别 //年龄 //年龄 //班级 //班级 //成绩 //成绩
例 2: struct Date { int year; //年 //年 int month; //月 //月 int day; //日 //日 };
在结构体中数据类型相同的成员,既可逐个、 在结构体中数据类型相同的成员,既可逐个、逐行分别 定义,也可合并成一行定义,就象一次定义多个变量一样。 定义,也可合并成一行定义,就象一次定义多个变量一样。
//学号 //学号 //姓名 //姓名 //性别 //性别 //年龄 //年龄 //班级 //班级 //成绩 //成绩
或
Hale Waihona Puke //学号 //学号 //姓名 //姓名 //性别 //性别 //年龄 //年龄 //班级 //班级 //成绩 //成绩
几点说明: 几点说明: (1) 结构体类型与结构体变量概念不同 类型: 不分配内存; 变量: 类型: 不分配内存; 变量: 分配内存 类型: 不能赋值、存取、运算; 变量: 类型: 不能赋值、存取、运算; 变量: 可以 (2) 结构体可以嵌套