C语言第11章

合集下载

C#程序设计 第11章 结构体、联合体与位运算

C#程序设计  第11章  结构体、联合体与位运算

第11章结构体、联合体与位运算本章介绍结构体、联合体及枚举类型等三种新的构造型数据类型以及位运算的基本方法,包括结构体的含义;结构体类型变量的定义、引用及初始化方法;结构体数组的定义和数组元素的引用;结构体类型指针的概念及链表的基本操作方法;联合体的含义;联合体类型变量的定义方法;枚举类型的定义; TYPEDEF的作用和位运算的基本方法等。

11.1 结构体类型通过前面有关章节的学习,我们认识了整型、实型、字符型等C语言的基本数据类型,也了解了数组这样一种构造型的数据结构,它可以包含一组同一类型的元素。

但仅有这些数据类型是不够的。

在实际问题中,有时需要将不同类型的数据组合成一个有机的整体,以便于引用。

例如,在新生入学登记表中,一个学生的学号、姓名、性别、年龄、总分等,它们属于同一个处理对象,却又具有不同的数据类型。

如图11-1。

每增加、删减或查阅一个学生记录,都需要处理这个学生的学号、姓名、性别、年龄、总分等数据,因此,有必要把一个学生的这些数据定义成一个整体。

图11-1虽然数组作为一个整体可用来处理一组相关的数据,但不足的是,一个数组只能按序组织一批相同类型的数据。

对于一组不同类型的数据,显然不能用一个数组来存放,因为数组中各元素的类型和长度都必须一致。

为了解决这个问题,C语言中给出了另一种构造数据类型——“结构体”。

11.1.1 结构体类型与结构体变量结构体是一种构造类型,它由若干“成员”组成。

每一个成员可以是一个基本数据类型或者又是一个构造类型。

结构体既然是一种构造而成的数据类型,那么在使用之前必须先定义它,如同在调用函数之前要先定义或声明一样。

定义一个结构体类型的一般形式为:struct 结构体名{ 成员1 类型1;成员2 类型2;...成员n 类型n;};“结构体”这个词是根据英文单词structure译出的。

结构体中的每个成员均须作类型说明,成员名的命名应符合标识符的书写规定,成员名可以与程序中的变量名同名,二者不代表同一对象,互不干扰。

C语言第11章结构体

C语言第11章结构体

29
【例】30张选票,对三名侯选人之一投票选举,输 入得票人名字,按名字计数,输出最后选举结果。 #include "stdio.h" #define N 30 struct person { char name[20]; int count; };
Li
0 Zhang 0 Wang 0
led[0].name
第十一章 结构体与பைடு நூலகம்用体
本章目标
1.理解结构体,共用体的数据类型
2.学会定义结构体、共用体的数据类型 的变量 3.能够正确使用结构体、共用体的成员
§11.1
已了解的数据类型:
引言
整型 浮点型 字符型 数组
简单数据类型
用户定义的数据类型
特点:所有的元素都是同一种类型
指针型 存在的问题:难以处理较复杂的数据
18
圆点运算符
引用形式:结构体变量名 . 成员名 其中:成员运算符’ . ‟ : 一级,自左而右;
stu1.num 引用结构体变量stu1的num成员; 引用stu1的name成员(字符指针); [i] 引用name成员的第i个元素; stu1.birthday.y 只能对最低级成员进行引用;
二、定义完结构体后,定义结构变量并初始化 struct student x2={0002, "Li Ming ", 85.5};
16
§11.4 访问结构成员
访问结构变量实质上是引用其成员 有两种运算符可访问结构成员
17
struct date { int m; int d; iny y; }; struct student { long num; char name[20]; char sex; struct date birthday; float score; char tel[15]; } stu1, stu2;

C语言程序设计(姜学峰版)PPT课件第十一章

C语言程序设计(姜学峰版)PPT课件第十一章

8
5)定义结构体类型仅仅声明了一种数据结构,编译 系统不会为类型分配存储空间的;此时可用已定 义的结构体类型去定义结构体变量或数组,编译 系统将为结构体变量分配存储空间;
9
2. 定义结构体类型的变量 有三种方法: 1)先定义结构体类型,再用类型标识去定义变量 struct student stu1, stu2; struct student是已定义的结构体类型标识符; stu1、stu2是所定义的结构体变量;编译时将为 结构体变量分配各自的存储空间; 2)定义类型的同时定义变量 struct student { …; …; } stu1, stu2;
18
5. 结构体变量的指针、结构体成员的指针 注:&优先级为2级,低于.和[ ]; stu1 变量stu1的指针:&stu1 图示: num
num成员指针:&stu1. num
4
20 1
name第i个元素指针:&stu1. name[i]
name sex m

birthday d 最低级成员y的指针:&stu1.birthday.y y score
5
例:定义可表示学生基本情况的结构体类型。
项目: 学号 姓名 性别 出生日期 成绩 电话号码 数据: 010510 Li Feng M 1981.5.4 680 029-8482500
类型: 长整/字串 字串
字符
字串
整型
字串
struct student /*结构体类型标识*/ { long num; char name[20]; char sex; char birthday[12]; float score; char tel[15]; };

C语言 习题十一 参考答案

C语言 习题十一 参考答案

3.已有一个存放数千种仓库物质信息的文件 CK,每个信息元素含两个内容:物质编号 kno 和库存量 KNOM。请编程通过检查全库物质的库存量,建立一个新的文件 XK,它包含所有库存量大于 100 的物质 的编号和库存量。 参考程序: /*p360_3.c*/ #include "stdio.h" main() {int n,m;
{scanf("%d%s",&n,xm); for(j=0;j<5;j++) scanf("%d",&sc[i][j]); }
fp=fopen("abc.txt","w"); for(i=0;i<N;i++)
fprintf(fp,"%5d%s%4d%4d%4d%4d%4d\n",n,xm,sc[i][0],sc[i][1],sc[i][2],sc[i][3],sc[i][4]); fclose(fp); } /*p360_1a.c*/ #include "stdio.h" main() {FILE *fp; int num,mark[5],i,sum,n=0; float av,t[5]={0}; char name[20]; if((fp=fopen("abd.txt","w"))==NULL)
FILE *fp1,*fp2; fp1=fopen("ck.txt","r"); fp2=fopen("xk.txt","w"); while(feof(fp1)==0) {fscanf(fp1,"%d,%d",&n,&m);

C语言函数说明与返回值(11、12)

C语言函数说明与返回值(11、12)

在学习C语言函数以前,我们需要了解什么是模块化程序设计方法。

人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法,也就是把一个大问题分解成若干个比较容易求解的小问题,然后分别求解。

程序员在设计一个复杂的应用程序时,往往也是把整个程序划分为若干功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。

在C语言中,函数是程序的基本组成单位,因此可以很方便地用函数作为程序模块来实现C 语言程序。

利用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性,而且还可以把程序中普通用到的一些计算或操作编成通用的函数,以供随时调用,这样可以大大地减轻程序员的代码工作量。

函数是C语言的基本构件,是所有程序活动的舞台。

函数的一般形式是:type-specifier function_name(parameter list)parameter declarations{body of the function}类型说明符定义了函数中return语句返回值的类型,该返回值可以是任何有效类型。

如果没有类型说明符出现,函数返回一个整型值。

参数表是一个用逗号分隔的变量表,当函数被调用时这些变量接收调用参数的值。

一个函数可以没有参数,这时函数表是空的。

但即使没有参数,括号仍然是必须要有的。

参数说明段定义了其中参数的类型。

当一个函数没有明确说明类型时,C语言的编译程序自动将整型(i n t)作为这个函数的缺省类型,缺省类型适用于很大一部分函数。

当有必要返回其它类型数据时,需要分两步处理:首先,必须给函数以明确的类型说明符;其次,函数类型的说明必须处于对它的首次调用之前。

只有这样,C编译程序才能为返回非整型的值的函数生成正确代码。

4.1.1 函数的类型说明可将函数说明为返回任何一种合法的C语言数据类型。

类型说明符告诉编译程序它返回什么类型的数据。

C_C++程序设计与上机指导011

C_C++程序设计与上机指导011

11.3.2 变量的引用
1. 引用的概念
引用是C++对C的一个重要扩充。引用就是为某个变量取个别名。 当定义一个引用后,引用作为目标变量的别名使用,对引用的改变实际 就是对目标变量的改变。 格式:<类型说明>&<变量名>=<变量名> 说明: • (1) 声明引用并不另行开辟内存单元,而是与目标变量代表同一单元。 • (2) 声明一个引用的同时必须对其进行初始化,且一旦初始化就不能 再作为其他变量的别名。

11.2
• • • • • • • •
简单的C++程序 简单的C++程序 C++
首先通过一个简单的程序来了解C++程序的结构特点。 程序的结构特点。 首先通过一个简单的程序来了解 程序的结构特点
输出一行字符。
#include <stdio.h> #include <iostream.h> /* 本程序的作用是输出一行字符 */ void main( ) { printf("This is a c++ program.\ n"); cout <<" This is a c++ program.\ n" ; //本行输出一行字符 } 运行结果:

11.3.4 内联函数
C++引入内联函数的目的是为了提高程序的运行效率。使用函数可 引入内联函数的目的是为了提高程序的运行效率。 引入内联函数的目的是为了提高程序的运行效率 以减少目标代码,实现代码共享, 以减少目标代码,实现代码共享,但函数的使用是通过函数调用实现 我们前面讲到,函数调用需要借助栈来进行参数传递, 的。我们前面讲到,函数调用需要借助栈来进行参数传递,并且伴随 有程序执行转移,这些工作都需要一定的时间开销。 有程序执行转移,这些工作都需要一定的时间开销。当一些函数使用 频率较高,而代码却相对较短时,就会严重影响程序的执行效率。 频率较高,而代码却相对较短时,就会严重影响程序的执行效率。为 引入内联函数。 在程序进行编译时, 此,C++引入内联函数。即:在程序进行编译时,编译器会将程序 引入内联函数 中出现的内联函数的调用表达式用函数体替换。 中出现的内联函数的调用表达式用函数体替换。 内联函数的定义方法很简单,只需在函数定义(或声明 或声明)前加关键字 内联函数的定义方法很简单,只需在函数定义 或声明 前加关键字 inline即可。定义方式有两种,一是声明同时定义函数体,另一种是 即可。 即可 定义方式有两种,一是声明同时定义函数体, 先声明再定义。 先声明再定义。 使用内联函数时应注意以下几点: 使用内联函数时应注意以下几点:

第11章 C语言的最小数据单位——位

第11章 C语言的最小数据单位——位
第11章 C语言的最小数据单位——位
1
第11章 C语言的最小数据单位——位

11.1 11.2 11.3 11.4 11.5
位运算基础 位运算符 位运算实例 位段 小结
2
11.1 位运算基础

11.1.1 11.1.2 11.1.3 11.1.4
位与字节 原码 反码 补码
5
11.1.3 反码


用原码进行两个整数的加法运算中没有问题,问题出现在带符号 位的负数身上。为了解决这个问题,可对除符号位外的其余各位 逐位取反,就产生了反码。 机器数的反码可由原码得到。如果机器数是正数,则该机器数的 反码与原码相同,如果机器数是负数,则该机器数的反码是对它 的原码(符号位除外)各位取反而得到的。设有一数X,则X的反 码表示记作(X)反。例如: (11)反=(00001011)原=00001011 (-11)反=(10001011)原=11110100
17
11.4.2 位段的引用


位段的引用和结构成员的引用相同,其一般形式为:位段变量名. 位段名。例如: data.a,data.b 位段可以赋值,例如: data.a=54; data.b=3;
【例11-8】本实例演示了位段的引用。
18
11.5 小结


前面先后介绍了数的原码、反码和补码的由来及转换方法,位运 算符及相关的运算,位段的定义及使用。 C语言中用“位段”来访问字节中的某些位。所谓“位段”,又 称为“位域”或“位字段”,是把一个字节中的二进制位划分为 几个不同的区域,并说明每个区域的位数。每个域有一个域名, 允许在程序中按域名进行操作。
13
11.2.6 右移运算符

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;

第11章 预处理命令

第11章 预处理命令

程序员也可以把自己定义的符号常 量、宏,或函数原型放在头文件中, 用#include命令包含这些头文件。 (1)文件print_format.h #define PR printf #define NL "\n" #define D "%d " #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S "%s"
3、如果“文件1”包含“文件2”,而“文件2” 又包含“文件3”,则可在 “文件1” 中使用 两个 include 命 令。
文件file1.c #include“file3.h” file3.h 应出现在 file2.h 之前 #include“file2.h”
4、文件包含可以嵌套。即一个被包含文件中 又可以包含另一个文件。

[例] 输出格式定义为宏 #define PR printf #define NL "\n"
main()
{ int a,b,c,d; char string[] = "CHINA"; a = 1; b = 2; c = 3; d = 4; PR(D1,a); PR(D2,a,b); PR(D3,a,b,c); PR(D4,a,b,c,d); PR(S,string); }
[例] 返回多个值的宏定义。 #define PI 3.1415926 #define CIRCLE(R,L,S,V) L=2*PI*R; S=PI*R*R;V=4/3*PI*R*R*R main() { float r,l,s,v; /*半径、圆周长、圆面积、球体 积 */ scanf("%f",&r); CIRCLE(r,l,s,v); printf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n" ,r,l,s,v); }

第十一章 文件

第十一章 文件

华厦职业学院
C语言程序设计
2. 写字符函数fputc fputc函数的功能是把一个字符写入指定的文件 中,函数调用的形式为: int fputc(char ch,FILE *fp); 其中待写入的字符量可以是字符常量或变量, 例如: fputc('a',fp); 是把字符’a’写入fp所指向的文件中。对于fputc函 数的使用也要说明几点:
华厦职业学院
C语言程序设计
11.1.2 文本文件的打开与关闭 1. 打开文本文件 文件用fopen函数用来打开,其调用的一般形 式为: 文件指针=fopen(文件名,使用文件方式) ; 其中,“文件指针”必须是被说明为FILE 类 型的指针变量,fopen函数是打开文件的函数,它在 stdio.h头文件中说明。如该函数打开成功则返回文 件指针,打开失败时返回空指针NULL。
只写打开或建立一个文本文件,只允许写数据。如 文件不存在,则建立一个空文件;如文件已经存在, 则把原文件内容清空。 追加打开一个文本文件,并在文件末尾写数据。如 文件不存在,则建立一个空文件;如文件已经存在, 则把原文件打开,并保持原内容不变,文件位置指 针指向末尾,新写入的数据追加在文件末尾。
w
a
华厦职业学院
C语言程序设计
(3) fputc函数有一个返回值,如写入成功则 返回写入的字符,否则返回一个EOF,可用此来判 断写入是否成功。 在把’\n’字符写入文本文件时,实际上写入’\r’ 及’\n’两个字符,但写入’\r’字符时不转换,这个 规则是文本文件特有的。
华厦职业学院
C语言程序设计
2. 关闭文本文件
打开文件操作完毕后要关闭文件释放文件资源, 关闭文件操作是: fclose(文件指针); 其中“文件指针”是用fopen函数打开后返回的指针。 正常完成关闭文件操作时,fclose函数返回值为0。 如返回非零值则表示有错误发生。

C语言-结构体与共用体

C语言-结构体与共用体

(1)“结构类型名”和“数据项”的命名规则,与变量 名相同。 (2)数据类型相同的数据项,既可逐个、逐行分别定义, 也可合并成一行定义。 例如,上例中的日期结构类型,也可改为如下形式: struct date {int year, month, day; }; (3)结构类型中的数据项,既可以是基本数据类型,也 允许是另一个已经定义的结构类型。 例如,上例中的结构类型std_info,其数据项“birthday” 就是一个已经定义的日期结构类型date。 (4)本书将1个数据项称为结构类型的1个成员(或分 量)。
/*主函数main()*/ main() { int i; /* 打 印 表 头 : " □" 表 示 1 个 空 格 字 符 * / printf("No.□□□□Name□□□□□Sex□Birthday\n"); /*输出三个学生的基本情况*/ for(i=0; i<3; i++) { printf("%-7s",student[i].no); printf("%-9s",student[i].name); printf("%-4s",student[i].sex); printf("%d-%d-%d\n",student[i].birthday.year, student[i].birthday.month, student[i].birthday.day); } }
11.2
定义结构体类型变量的方法
声明一个结构体类型的一般形式: struct 结构类型名 /* struct是结构类型关键字*/ {数据类型 数据项1; 数据类型 数据项2; …… …… 数据类型 数据项n; }; /* 此行分号不能少!*/

C20第11章 文件

C20第11章 文件

文本文件与二进制文件的特点
字符型编码的码长通常固定, ASCII码的码长1个字节, 字符型编码的码长通常固定,如ASCII码的码长1个字节,因 码的码长 此,文本文件存储的数据容易解码。 文本文件存储的数据容易解码。 当存储一个整数3和一个双精度数3.3时 当存储一个整数3和一个双精度数3.3时,二进制文件存储数 3.3 据 当存储一个双精度数3.3和一个整数3 当存储一个双精度数3.3和一个整数3时,二进制文件存储数 3.3和一个整数 据 显然,二进制文件存储的数据不容易解码。 显然,二进制文件存储的数据不容易解码。只需按照字符编 码的格式解码即可查看文本文件的内容; 码的格式解码即可查看文本文件的内容;只有知道了相关数据 的编码结构,才能正确地查看二进制文件的内容。 的编码结构,才能正确地查看二进制文件的内容。
fopen函数常见的使用形式为:
文件的当前位置指针
每个打开的文件都有一个当前位置指针用于指示文件中 存取数据的地址。对文件进行存取操作时, 存取数据的地址。对文件进行存取操作时,该指针会根据存 取的数据量自动调整以指向新的位置。 取的数据量自动调整以指向新的位置。 库函数ftell(int ftell(FILE *streem))可以输出文件 *streem)) 库函数ftell( ftell 的当前位置指针与文件开始处的偏移字节数。出错时ftell 的当前位置指针与文件开始处的偏移字节数。出错时ftell 函数的返回值为-1。 函数的返回值为printf("%d\ ftell(fp);的输出 printf("%d\n", ftell(fp);的输出 ? 特别提示:文件的当前位置指针与FILE结构型变量中与缓 特别提示:文件的当前位置指针与FILE结构型变量中与缓 FILE 冲区相关的当前位置指针不同。 冲区相关的当前位置指针不同。

C语言 第14讲 (文件)

C语言 第14讲 (文件)

第11章 文件类型
(5)″rb″、″wb″、″ab″、″rb+″、″wb+″、″ab+″是使用 二进制文件相应的六种方式。 打开文件可得到三个信息: ① 要访问的文件名。 ② 使用文件的方式。 ③ 哪一个指针变量用于指向被打开的文件。 打开成功, 返回文件指针(文件信息区的起始地 址); 不能打开, 返回空指针。
第11章 文件类型
11.2.2 文件的关闭
文件在使用完后,应及时关闭。文件的关闭用 fclose( )函数完成,调用方式为: fclose(文件指针变量); 关闭文件将使文件指针变量与文件名脱钩,即指针 变量不再指向该文件。文件关闭后不能再用该指针变量
这时从文件中读数据到内存,故要求文件已经存在。
用″r″方式打开的文件只能读,不能同时写。
(2) ″w″方式, 以只写方式打开文本文件。
这时将内存中的数据写入到磁盘文件中。若文件不
存在, 建立新文件;若文件存在,则刷新文件,重新建 立。用″w″方式打开的文件只能写,不能同时读。
第11章 文件类型
exit(0);
}
第11章 文件类型
说明: (1) 不是所有编译系统均提供以上 12 种文件使用方式。 (2) 用″r″、″rb″方式打开的文件必须已经存在。 (3) 用″w″、″wb″方式打开的文件,可以存在也可以不存 在。不存在时,则新建文件;存在时,重新建立, 原文件内 容不被保留。
第11章 文件类型
第11章 文件类型
11.1 文件类型与文件指针
11.2 文件的打开与关闭
11.3 文件的读写与建立
11.4 程序设计举例
第11章 文件类型
11.1 文件类型与文件指针

C语言程序设计-杨路明第11章课件

C语言程序设计-杨路明第11章课件
C 语言
程 序 设 计 教 程 第4版
第11章 C语言综合应用程序示例
目录
1 多模块编程 2 绘图和图像处理应用
11.1 多模块编程
返回
11.1.1 程序模块组织
使用多模块编程技术的处理过程大致如下: 首先
将一个大的源程序根据其功能合理地划分成若干个小的源程序,每个小源程 序均以程序文件(.C)的形式保存在磁盘上。并建立一个包括各个源程序模块的文件 名的工程文件(.prj)。
students = 50 ; … } fun2() { students += 18 ; … }
11.1.2 模块之间的通信
例题 利用外部变量实现程序模块f1.c与程序模块f2.c之间的通信。
设程序模块文件f1.c的内容如下:
# include < stdio.h >
# include "f2.cpp"
cvPoint( 0, 7*w/8.0 ), cvPoint( w, w),
CV_RGB( 0, 255, 255 ), -1, 8, 0);
11.2.1 基本图形处理函数
2. 在图像里插入文字
例题 在图像中插入一串字符。
#include <cv.h>
#include <highgui.h>
#include <windows.h>
center, w/32.0, CV_RGB(0,0,255), thickness, lineType ); }
/*设w为480*/
11.2.1 基本图形处理函数
(4) 创建椭圆的定义如下: MyEllipse( atom_image, 90 ); MyEllipse( atom_image, 0 ); MyEllipse( atom_image, 45 ); MyEllipse( atom_image, -45 ); void MyEllipse(IplImage *img, double angle ) {

C语言第11章zk

C语言第11章zk

11.2.2 邻接表
1.图的邻接表表示
将每个结点的边用一个单链表链接起来,若干个结点可以得到若干个单链表,每 个单链表都有一个头结点,为将所有头结点联系起来组成一个整体,所有头结点 可看成一个一维数组,称这样的链表为邻接表。
2011年10月30日
19
例如,图11-8所示的无向图G3和有向图G4的邻接表如图11-11所示。
2011年10月30日
9
有向图中,极大的强连通子图为该图的强连通分量。显然,任何强连通图的强连 通分量只有一个,即它本身,而非强连通图有多个强连通分量。 对于图11-5中的非强连通图,它的强连通分量见图11-7。
1
2 5
3 6
4
图11-7 图11-5(b)的强连通分量
2011年10月30日
10
8.路径、回路
1 2
∑d
i =1
n
i

例如,对图11-1,G1中顶点a,b,c,d的度分别为3,2,2,3,G2中顶点1,2, 3的出度分别为2,1,1,而它们的入度分别为1,1,2,故顶点1,2,3的度分别 为3,2,3。
4.子图
若有两个图G1和G2,G1=(V1,E1),G2=(V2,E2),满足如下条件:V2⊆V1 , E2⊆ E1,即V2为V1的子集,E2为E1的子集,称图G2为图G1的子图。 图和子图的示例具体见图11-2。
//输入顶点信息
//矩阵的初值为0 //输入一条边(i,j)
该算法的时间复杂度为O(n2)。
2011年10月30日
17
7.建立有向图的邻接矩阵
void creatadj1(struct graph &g) { int i, j,k ; for(k=1; k<=n; k++) scanf(“%c”,&g.v[k]); for (i=1; i<=n; i++ ) for (j=1; j<=n; j++) g.arcs[i][j]=0; for (k=1; k<=e; k++) { scanf(“%d %d”,&I,&j); g.arcs[i][j]=1; } }

11C语言程序综合实训

11C语言程序综合实训

返 回
11.2 应用程序设计实例
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n"); for(i=0;i<N;i++) {printf("%s\t%s\t",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%d\t",stu[i].score[j]); printf("%.2lf\n\n",stu[i].av); } printf(" \t \t"); /*输出各科平均成绩*/ for(i=0;i<3;i++) printf("%.2lf\t",all[i]); printf("\n\n"); fclose(fp); } 上一页 下一页
for(i=0;i<N;i++) {printf("%s\t%s\t",s[i].num,s[i].name);
上一页
下一页
返 回
11.2 应用程序设计实例
for(j=0;j<3;j++) printf("%d\t",s[i].score[j]); printf("%.2lf\n",stu[i].av); printf("\n"); } fclose(fp); } void average() /*计算每个学生的平均成绩并输出*/ { int i,j,sum; FILE *fp; fp=fopen("stud","rb"); 上一页 下一页 返 回

南京邮电大学c语言慕课第十一章答案

南京邮电大学c语言慕课第十一章答案

南京邮电大学c语言慕课第十一章答案1、(A )是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2、(A)C语言程序从C 开始执行。

A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数3、以下说法中正确的是( C )。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4、下列关于C语言的说法错误的是( B ) 。

A、C程序的工作过程是编辑、编译、连接、运行B、C语言不区分大小写。

C、C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5、下列正确的标识符是(C )。

A、-a1B、a[i]C、a2_iD、int t5~8题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6、下列C语言用户标识符中合法的是(B )。

A、3axB、xC、caseD、-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。

A、%xB、a+bC、a123D、123选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。

A、print _3d db8 aBcB、Iam one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9、C语言中的简单数据类型包括(D )。

第11章 位运算

第11章 位运算

第11章位运算11.1 选择题11.1 以下运算符中优先级最低的是【1】,优先级最高的是【2】。

A) && B) & C)||D)|11.2 若有运算符<<, sizeof ,^, &=,则它们按优先级由高至低的正确排列次序是____。

A) sizeof, &=, <<, ^ B) sizeof, <<, ^ , &=C) ^, <<, sizeof, &= D) <<, ^, &=, sizeof11.3 在C语言中,要求运行数必须是整型的运算符是____。

A) ^ B) % C) ! D) >11.4 在C语言中,要求运行数必须是整型或字符型的运算符是____。

A) && B) & C) ! D) ||11.5 sizeof(float)是____。

A) 一种函数调用B) 一个不合法的表示形式C) 一个整型表达式D) 一个浮点表达式11.6 表达式a<b || ~c&d的运算顺序是_____。

A) ~, &, <, || B) ~, ||, &, <C) ~, &, ||, < D) ~, <, &, ||11.7 以下叙述不正确的是_____。

A) 表达式a&=b等价于a=a&b B) 表达式a|=b等价于a=a|bC) 表达式a!=b等价于a=a!b D) 表达式a^b等价于a=a^b11.8 表达式0x13&0x17的值是_____。

A) 0x17 B) 0x13 C) 0xf8 D) 0xec11.9 请读程序片段:char x=56;x=x&056;printf(“%d,%o\n”, x, x);以下程序片段的输出结果是_____。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第11章
11.1填空题
1.1.1 C系统的标准数入文件是指_________。

1.1.2 正常执行fclose函数的返回值是。

1.1.3 在C程序中,数据可以用、两种方式存放。

1.1.4 fgets函数的作用是从指定文件读入一个字符,该文件的打开方式必须是读或读。

1.1.5 C语言中,文件的存取时是以为单位的,这种文件被称为文件。

1.1.6 在C程序中,如要定义文件指针fp,定义形式为;。

1.1.7 列出能够用于写入数据到文件的三个函数、和。

1.1.8 列出能够用于从文件中读取数据的三个函数、和。

1.1.9 函数可以把文件指针定义到文件中的任何位置。

1.1.10 有函数语句fgets(buf,n,fp);其作用是从fp指向的文件中读入字符放到buf字符数
组中,函数返回值是。

11.2编程题
2.2.1 将文件flie1.c的内容输出到屏幕,并复制到flie2.c中。

参考程序:
2.2.2 统计文件letter.txt中小写字母c的个数。

参考程序:
2.2.3 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输
出到一个磁盘文件”test.dat”中保存。

输入的字符串以回车结束。

参考程序:
2.2.4 有5个学生,每个学生有3门课的成绩,从键盘输入数据。

(包括学生号、
姓名、三门课成绩)、计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘
文件”stud.dat”中。

参考程序:
2.2.5
2.2.6。

相关文档
最新文档