自考 高级语言程序设计 第八章 结构体类型和自定义类型
自考c语言试题及答案

自考c语言试题及答案一、单项选择题(每题2分,共20分)1. C语言中,用于定义一个结构体类型的关键字是()。
A. structB. unionC. enumD. typedef答案:A2. 下列选项中,不属于C语言基本数据类型的是()。
A. intB. floatC. charD. string答案:D3. 以下哪个选项是正确的C语言函数定义?()A. int function(int a, int b) { return a + b; }B. int function(int a; int b) { return a + b; }C. int function(int a, int b) { return a - b; }D. int function(int a, int b); { return a + b; }答案:A4. 在C语言中,用于声明一个指针变量的关键字是()。
A. intB. floatC. charD. *ptr答案:D5. 下列关于数组的描述中,错误的是()。
A. 数组可以存储一系列相同类型的数据B. 数组的索引从0开始C. 数组的大小在声明时确定D. 数组的大小可以在运行时改变答案:D6. 在C语言中,用于输入输出的函数库是()。
A. math.hB. stdio.hC. string.hD. time.h答案:B7. 下列选项中,哪个是正确的C语言注释?()A. // 这是一个注释B. /* 这是一个注释 */C. //* 这是一个注释 */D. /* 这是一个注释答案:A8. C语言中,用于计算两个整数相加的函数是()。
A. strcatB. strcmpC. strcatD. sum答案:D9. 在C语言中,用于定义一个枚举类型的关键字是()。
A. structB. enumC. unionD. typedef答案:B10. 下列关于C语言函数的描述中,错误的是()。
高级语言程序设计自考题-18_真题(含答案与解析)-交互

高级语言程序设计自考题-18(总分100, 做题时间90分钟)一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的)1.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是______•**和static•**和register•**和register**和externSSS_SIMPLE_SINA B C D分值: 2答案:C[考点] 文件存储类型的特点[解析] auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。
register:为了提高效率,C 语言允许将局部变量的值放在CPU的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。
extern:外部变量(即全局变量),是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的末尾。
如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。
static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。
2.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是______• A.所有内存块的字节数• B.一个文件指针,指向待读取的文件• C.一个整型变量,代表待读取的数据的字节数• D.一个内存块的首地址,代表读入数据存放的地址SSS_SIMPLE_SINA B C D分值: 2答案:D[考点] fread函数[解析] fread(void *buffer,size-t size,size-t count,FILE{stream);功能是从一个文件流中读数据,读取count个元素,每个元素size字节,如果调用成功则返回count。
buffer用于接收数据的内存地址,大小至少是size*count字节;size表示单个元素的大小,单位是字节;count表示元素的个数,每个元素是size字节;stream表示输入流。
定义结构体类型的一般形式

定义结构体类型的一般形式
结构体定义是指用编程语言将一个数据结构定义为一个类型的行为。
它由一组字段(成员变量)组成,每个字段都有一个类型,字段的类型可以是基本类型或复合类型,如结构体类型。
一般形式的定义:
1. 声明:先声明结构体类型(struct),在关键字struct后跟着结构体类型的名称,如:struct student;
2. 成员定义:在大括号中定义成员变量,每个成员变量说明类型和变量名,如:int age;
3. 结构体变量定义:在定义结构体变量时使用关键字struct,后跟着结构体类型名称和变量名,如:struct student stu1;
4. 数组定义:声明包含结构体的数组时使用关键字struct,后跟着结构体的名称和变量名,如:struct student stus[10];
5. 指针定义:声明结构体指针时使用struct关键字,后跟着指针变量的名称,如:struct student *pstu;
6. 指向结构体的指针定义:声明指向结构体的指针时使用struct关键字,后跟着指针变量的类型和名称,如:struct student *pstud;
7. 访问成员变量:使用.运算符访问结构体成员变量,如:stu1.age;使用->运算符访问结构体指针里的成员变量,如:pstu->age。
以上就是结构体的一般定义形式,结构体及其成员的定义前后组的顺序并不是随意的,应该按照明确的结构来组织。
C语言 第八章.用户自定义数据类型

u2占2个字节
例:以下程序输出结果是?
union example { struct { int x,y; e.b e.a e.in.x }in; e.in int a; e.in.y int b; }e; void main() { e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); }
内存低地址 01100001 00001010
字符变量c占1个字节
整型变量i占2个字节 单精度实型变量f占4个字节
u1.i=10;
例:以下程序输出结果是?
union u_type { char c[2]; u1
p
内存高地址 内存低地址 ‘a’ ‘b’ c1 c2 c[1] c[0] u1占2个字节 内存高地址 内存低地址 ‘A’ ‘B’ ‘a’ ‘b’ c1 c2 c[1] c[0]
{"0208103322","lisi",19,'M'},{"0208103323","lili",20,'F'}, {"0208103324","xulin",21,'M'}};
学号(number) 姓名(name) 年龄(age) 性别(sex)
stu[0] stu[1] stu[2] stu[3]
char name[8];
int age; char sex;
定义结构体类 sizeof(stu) 型的同时创建 =? 结构体数组
《高级语言程序设计》课程内容及基本要求非计算机专业

《高级语言程序设计》课程内容及基本要求(非计算机专业)总学时:48。
(一) C语言概述(2学时)C语言出现的历史背景;C语言的特点;C语言程序结构;C程序上机步骤。
1.基本要求(1)了解:该系统完成C程序从编辑、编译、连接到运行、调试的全过程。
通过运行简单的C程序,初步了解C源程序的特点。
(2)掌握:所用计算机系统的基本操作方法。
2.重点、难点重点:C语言的特点;C语言程序结构。
难点:C语言程序结构。
3.说明:(二)算法(2学时)算法的概念、特性与描述方法;结构化程序设计方法。
1.基本要求:(1)了解:算法的概念、特性与描述方法。
(2)掌握:能够正确的使用流程图、N-S图等常见的几种方法来描述算法。
(3)了解:结构化程序设计方法。
2.重点、难点重点:能够正确的使用流程图、N-S图等常见的几种方法来描述算法。
难点:能够正确的使用流程图、N-S图等常见的几种方法来描述算法。
3.说明:(三)数据类型、运算符与表达式(2学时)常量与变量;整型数据;实型数据;字符型数据;算术、赋值和逗号运算符及表达式。
1.基本要求:(1)掌握:C的几种基本数据类型,熟悉它们的使用方法与使用要点。
(2)掌握:学会使用C中的各种运算符,掌握由这些运算符组成的各种表达式的使用方法。
特别是自加(++)与自减(--)运算符的使用。
2.重点、难点重点:C中的各种运算符,由这些运算符组成的各种表达式的使用方法。
难点:C中的各种运算符,由这些运算符组成的各种表达式的使用方法。
3.说明:(四)顺序程序设计(2学时)C语句概述;赋值语句;数据输入输出的概念及在C语言中的实现;格式输入与输出(scanf()和printf()函数);字符输入与输出(getchar()和putchar()函数)。
1.基本要求:(1)掌握:C语言中使用最多的一种语句——赋值语句的使用。
(2)熟练掌握:数据输入、输出函数的各种格式控制与使用要点。
2.重点、难点重点:数据输入、输出函数的各种格式控制与使用要点。
全国自考计算机基础与程序设计历年真题(珍藏版)(部分有答案)

C.当表达式的值非0时D.当表达式的值不为1时
35.下列程序段输出的结果是(A)
for(i=1;i<3;i+ +)
for(j=1;j<3;j+ +)
printf("%d",i+j);
A.2334B.234
C.23D.2
343 4
36.若有定义int s[4]={1,2,3,4};则a[a[2]-3*a[0]+1]的值是(B)
13.如果一个C程序仅由一个源文件组成,则在一个源文件中定义的全局变量的作用域为(D)
A.源文件的全部范围B.本程序的全部范围
C.本函数的全部范围D.从定义该变量的位置开始至本文件末尾
14.下列定义中,不是指针数组定义的是(D)
A.int*p[5];B.float*q[4];
C.int(*r)[6];D.char*w[7];
B.将整个程序编译完成后再执行,不生成目标代码
C.将源程序编译成目标程序,执行连接后的程序
D.将源程序解释完毕后再执行
7.下列转义字符中,表示换行的是(B)
A.\0B.\n(回车换行)
C.\r(回行不回车)D.\f
8பைடு நூலகம்unsigned long型数的取值范围是(D)
A.-215~(215-1)B.-231~(231-1)
A.1个
B.2个
C.4个
D.8个
4.下列语句中不能实现循环结构的语句是(A)
A.if语句
B.while语句
C.do—while语句
D.for语句
5.内存每个基本单元都有唯一的序号,这个序号称为(C)
《高级语言程序设计》教学大纲.

南京邮电学院继续教育学院《高级语言程序设计》教学大纲适应专业:通信工程本科、计算机通信专科、通信技术专科课内学时:32+8一、程的性质与设置目的(一)课程的性质和特点高级语言程序设计--《C程序设计》,是邮电高等函授各专业的一门重要的专业基础课。
它为其它专业课程奠定程序设计的基础,又是其它专业课程的程序设计工具。
本课程设置的目的是通过对C语言的语法规则、数据类型、数据运算、语句、系统函数、程序结构的学习,掌握应用C语言进行简单程序设计的技能,掌握C语言的常用库函数的使用,为进行各种实用程序的开发奠定一个良好的基础。
(二)本课程的基本要求1.初步了解C语言的特点,掌握程序的算法。
2.了解和掌握数据类型(基本类型、构造类型、指针类型)、运算符与表达式。
3.掌握结构化程序设计方法,顺序程序设计、选择结构程序设计、循环结构程序设计。
4.掌握数组、指针及其运用。
5.了解和掌握函数、函数调用、函数参数传递方法,以及局部变量、全局变量。
6.了解和掌握文件、文件类型指针、文件操作。
7.了解C++知识,为学习C++打下初步基础。
8.熟练掌握阅读、分析、设计、调试简短程序的方法及技巧。
9.初步掌握实用程序的开发与调试技术。
(三)本课程与相关课程的联系与分工1.本课程的先修课程为《计算机基础》。
2.本课程的后续课程是《数据结构》和《数据库原理与应用》。
二、课程内容、学时分配及基本要求第一章C语言概论 2 学时1.C语言的起源与特点2.简单的C语言程序3.C语言集成环境介绍4.算法的概念5.简单算法举例基本要求:了解程序、程序设计、C语言基本词法、C语言基本语句、C语言程序基本结构。
初步掌握算法及表示一个算法。
第二章数据类型、运算符和表达式 4 学时1.词法符合和基本数据类型2.常量与变量说明3.基本运算符和表达式4.运算顺序和类型转换5.数据的输入和输出基本要求:掌握了解C语言数据类型体系、运算符体系;掌握各种基本数据类型常量的书写方法、变量的定义、赋值、初始化方法;基本运算符的运算规则和优先级别;正确构成基本类型的表达式。
《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语言的各个方面,提升我们的编程能力和解决问题的能力。
希望本文对读者有所帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如:定义一个反映学生信息的结构体类型。 struct student { long num; char name[20]; char sex; int age; float score; char addr[40]; };
成员可以属于另一个结构体类型。 struct Date { int month; int day; int year; }; struct Stu { int num;char name[20]; char sex;int age; struct Date birthday; char addr[30]; };
8.1 结构体类型定义
定义结构体类型的格式:
重点
struct 结构体名
{ 数据类型1 成员1;
数据类型2 成员2;
......
数据类型n 成员n;
};
说明:
① struct 是结构体的关键字,不能少。 ② 结构体名:结构体类型的名称——遵循标识符规定。 ③ 结构体有若干数据成员,用{ }括起来,分别属于各自的数据类型;结构体成员名同样遵循
6. 结构体变量可以像其它数据类型一样作为函数的参数,也可以将函数定义为结构体类型或结
构体指针类型(返回值为结构体、结构体指针类型)。
第9章 编译预处理
1.宏定义 格式:#define 宏名 字符序列 如:#define PI 3.14159 2.文件包含命令 格式1: #include “文件名” 格式2:#include <文件名> 3.条件编译命令 格式:#ifdef 标识符
2. 定义结构体变量后,直接赋值
例如: student1.num=20050201; strcpy(,”zhangqiang”); student1.sex=’M’;
3. 用scanf( )函数给结构体变量的成员赋值 例如:
scanf(“%d%s%c%d%f%s”,&student1.num,,&student1.sex,&student1.age,&stu dent1.score,student1.addr);
例2 用指针访问结构体变量及结构体数组
#include<stdio.h>
main()
{
struct student
/* 结构体类型定义 */
{
long int num;
/*结构体中各成员*/
char name[20];
char sex;
float score;
};
struct student stu[3]={{20050101,"Wangli",'F', 483},
程序段 #else
程序段 #endif
结构体变量名. 成员名 . 称为成员运算符,它在所有运算符中优先级最高,与()是一个级别。 说明: • 不允许将一个结构体变量整体输入/输出,只能对结构体变量中的各个成员分别进行输入和
输出; • 只能对最低级的成员进行赋值或存取以及运算 ; • 对结构体变量的成员可以像普通变量一样进行各种运算; • 同一种类型的结构体变量之间可以直接赋值(整体赋值,成员逐个依次赋值)。
一个结构体类型,然后定义变量为该类型;而且,只能对结构体变量赋值、运算、输出, 而不能对一个结构体类型赋值、运算、输出; (2) 在编译时,对结构体类型不分配空间 ,只对变量分配空间; (3) 一个结构体变量所占存储空间是各个成员所占存储空间的和;
结构体变量的引用
重点
在定义结构体变量以后,可以引用这个变量,但不能直接引用变量,而是引用该变量的成员, 格式如下:
例struct student {
long int num; char name[20]; char sex; int age; float score; char addr[30]; } stu[3]= {{ 20050201,”zhangqiang ”,’M’,18,456,”Jining”},{20050202,”liling ”,’F’,19,406,”qufu”},{2005020 3,”wanglei ”,’F’,18,503,”Jining ”}};
8.3 结构体数组
难点
• 结构体数组——数组元素的类型为结构体类型的数组。 • 定义结构体数组和定义结构体变量的方法相同:只是将“变量名”用“数组名[长度]”代替,
也是对应的三种方法。 • 结构体数组的初始化和结构体变量的初始化方法相同:只是再加一层{},列举结构体数组各
元素;每个元素就是结构体变量,数据也用“{}”括起来。
printf("%s,%c,%5.1f\n",q->name,q->sex,q->score);
}
结构体变量作函数参数 • 结构体变量可以像其它数据类型一样作为函数的参数,也可以将函数定义为结构体类型或
结构体指针类型(返回值为结构体、结构体指针类型)。
例3 打印输出三个学生记录的基本信息。 #include <stdio.h> struct student {
{20050102,"zhangqiang",'M',523}, {20050103,"Songping",'M',401.5}};
struct student student1={20050201,"zhaomeng",'F',496.5} struct student *p,*q;
int i;
clrscr();
struct student student1 , student2 ; /* 变量定义,定义2个类型为struct student的结构体变量
student1、student2 */
2. 定义结构体类型的同时定义结构体变量
struct student
{
long num;
char name[20];
8.4 结构体类型指针 难点
1.结构体指针变量的定义: struct 结构体名 * 结构体指针变量名;
例如: struct student student1; struct student *p= &student1 ;
2.通过结构体指针变量访问结构体变量的成员:(两种访问形式) (1)(*结构体指针变量名).成员名。 (2) 结构体指针变量名->成员名。 例如:可以使用(*p).age或p->age,访问p指向的结构体的age成员。
使用typedef关键词可以定义一种新的类型名代替已有的类型名。
例如:
typedef int INTEGER;
typedef float REAL;
INTEGER i,j; REAL a,b;
本章小结
1. 结构体类型(struct)的定义格式: struct 结构体名 { 数据类型1 成员1;
数据类型2 成员2; ...... 数据类型n 成员n;}; 2. 结构体变量的定义格式:(三种形式) 3. 结构体变量的引用: 4. 结构体变量的各个成员的赋值有这样几种形式: 5. 结构体数组——数组元素的类型为结构体类型的数组: 定义、初始化结构体数组和结构体变 量的方法相同。
标识符规定,它属于特定的结构体变量(对象),名字可以与程序中其它变量或标识符同 名。 ④ 定义结构体类型,就是定义了一种数据类型,与你先前所学的int ,char是一样的,都是数据 类型,只不过结构体类型是一种复杂的数据类型,是基本数据类型的组合。 ⑤ 使用结构体类型时,struct 结构体名作为一个整体,表示名字为“结构体名”的结构体类 型。 ⑥ 定义结构体类型后,C系统并不给他分配存储空间,只有定义了结构体类型的变量,系统 才给他分配存储空间。
int num; char name[20]; char sex; int age; float score; };
struct student stu[3]={{11302,"Wang",'F',20,483}, {11303,"Liu",'M',19,503}, {11304,"Song",'M',19,471.5}}; print(struct student s) /* 打印学生姓名、年龄、成绩。形参:结构体类型 */
/* 清除屏幕*/
p=&student1;
/* p指向结构体变量 */
printf("%s,%c,%5.1f\n",,(*p).sex,p->score); /* 访问结构体变量 */
q=stu;
/* q指向结构体数组的元素 */
for(i=0; i<3; i++,q++) /* 循环访问结构体数组的元素(下标变量)*/
char sex;
int age;
float score;
char addr[30];
} student1 , student2;
定义完变量再加分号。
3. 直接定义结构体变量(不给出结构体类型名,匿名的结构体类型)
例如:struct { ... }student1,student2;
说明: (1) 再一次强调,结构体类型和结构体变量是不同的概念,不要混同。在定义时一般先定义
{ printf("%s,%d,%5.1f\n",,s.age,s.score);
} main() {
int i; for(i=0; i<3; i++)print(stu[i]); /* 循环打印学生的记录 */ }
8.6 自定义类型
重点
格式:typedef 类型定义 类型名;