实验九 结构体与链表程序设计(解答)

合集下载

c程序设计 第九章 结构体

c程序设计 第九章 结构体

一、概念题

二、判断题

1. 结构体中的成员不可以单独使用(F)。

2. 成员名可以与程序中的变量名相同,二者不代表同一对象(T)。

3. 不能将一个结构体变量作为一个整体进行输入输出(T)。

4. 结构体变量所占内存长度是各成员占的内存长度之和(T)。

5. 结构体中的成员不可以单独使用(F )。

9. 一个结构体变量的指针就是该变量所占内存段的起始地址(T)。

10. 用结构体变量作实参,形参也必须是同类型的结构体变量(T )。

三、单选题

1. 设变量定义如下,则对其中的结构分量num正确的引用是( )。

struct student {

int num ;

char name[20];

float score;

} stud[10];

A. stud[1].num=10;

B. student.stud.num=10;

C. struct.stud.num=10;

D. struct student.num=10;

2. 已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是()。

struct worker

{

int no;

char name[20];

char sex;

struct birth{ int day; int month; int year;}a;

};

struct worker w;

A day=25;month=10;year=1993;

B w.birth.day=25; w.birth.month=10; w.birth.year=1993;

C w.day=25; w.month=10; w.year=1993;

数据结构c语言版实验教案

数据结构c语言版实验教案

数据结构C语言版实验教案

一、实验目的

1. 掌握数据结构基本概念和原理。

2. 培养使用C语言进行数据结构编程的能力。

3. 加深对数据结构在实际问题中的应用的理解。

二、实验内容

1. 线性表的实现与操作。

2. 栈和队列的实现与操作。

3. 链表的实现与操作。

4. 树与二叉树的实现与操作。

5. 图的实现与操作。

三、实验环境

1. 计算机硬件:Pentium(或更高)处理器。

2. 操作系统:Windows 7/8/10 或Linux。

3. 编程语言:C语言。

4. 开发工具:Code::Blocks 或Visual Studio。

四、实验要求

1. 每个实验至少编写一个C程序实现数据结构的基本操作。

2. 每个实验要求有详尽的代码注释,以便于理解。

五、实验评价

1. 代码质量:代码规范、易读、无明显错误。

2. 实现功能:正确实现数据结构的基本操作。

3. 实验报告:内容详实,能反映实验过程和收获。

六、实验一:线性表的实现与操作

1. 实验目标:理解线性表的概念,掌握线性表的顺序存储结构及其基本操作。

2. 实验内容:

实现一个简单的线性表结构体。

编写函数实现线性表的插入、删除、查找等基本操作。

设计测试用例验证线性表操作的正确性。

七、实验二:栈和队列的实现与操作

1. 实验目标:理解栈和队列的概念,掌握它们的顺序存储结构及其基本操作。

2. 实验内容:

实现一个简单的栈结构体。

编写函数实现栈的压入、弹出等基本操作。

实现一个简单的队列结构体。

编写函数实现队列的入队、出队等基本操作。

设计测试用例验证栈和队列操作的正确性。

八、实验三:链表的实现与操作

结构体与联合体习题(含答案)

结构体与联合体习题(含答案)

2013年结构体与联合体习题

选择题

1、若程序中有以下的说明和定义:

struct abc

{ int x;char y; } 花括号后少了分号。

struct abc s1,s2;

则会发生的情况是______。

A) 编译时错B)程序将顺序编译、连接、执行

C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错

2、有以下程序段

struct st

{ int x;int *y;}*pt;

int a[]={1,2};b[]={3,4};

struct st c[2]={10,a,20,b};

pt=c;

以下选项中表达式的值为11的是

A)*pt—>y B) pt—>x C)++pt->x D)(pt++)—〉x

3、有以下说明和定义语句

struct student

{int age; char num[8];};

struct student stu[3]={{20,”200401”},{21,”200402”},{19,”200403"}};

struct student *p=stu;

以下选项中引用结构体变量成员的表达式错误的是______.

A) (p++)—〉num B)p—〉num C)(*p)。num D)

stu[3].age

4、设有如下枚举类型定义

enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran};

枚举量Fortran的值为______。

A) 4 B) 7 C) 102 D)103

5、以下叙述中错误的是_________。

C语言程序设计实验实验报告7

C语言程序设计实验实验报告7

C语言程序设计实验实验报告7

实验名称:链表实现学生信息管理系统

实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。

实验内容:

设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。

实现以下功能:

1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。

2. 删除学生信息:从链表中删除指定学号的学生信息。

5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。

7. 退出程序:退出学生信息管理系统。

实验方法:

1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。

2. 编写添加学生信息函数,新建链表节点并插入链表末尾。

3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。

4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。

6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。

7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。

8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。

实验结果:

依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。经测试,程序稳定运行,功能正常,符合需求。

本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。虽

然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高

数据结构上机操作实验报告

数据结构上机操作实验报告

实验一单链表的基本操作(必做)

一、实验目的

1.掌握单链表的存储、初始化、插入、删除等操作的程序实现。

2.加深对单链表基本概念,基本理论及相应算法的掌握与理解。

3.了解链表的处理方式,学习体会简单的单链表程序实现相关知识。

二、实验内容

1.建立一个链表、设计链表的基本操作实现算法、输出一个链表表,调试并输出结果。

2.编写一个程序实现如下功能:让计算机产生出50个0~9之间的随机数并依次保存到单链表中;输出遍历单链表;从单链表中删除与给定值相等的所有结点;输出遍历单链表;输出单链表长度,调试并输出结果。

三、实验步骤

1.定义一个链表结构体。。

2.利用插入功能插入一个结点。

3.利用删除功能删除一个结点。

四、程序运行测试

1.利用插入功能插入一个结点。

2.利用删除功能删除一个结点。

五、实验报告要求

1.绘制链表操作实现的流程图。

2.详细给出程序运行测试结果(包括测试数据和测试结果)。

3.选试验步骤2-3中的任意一个,给出程序的详细注释。

4.参考程序中某一部分功能的改进(选做)

5.实验心得与体会

6.附录,实验用源程序

六、参考源代码

#include

#include

typedef struct LNode

{int data;

struct LNode *next;

}Lnode, *LinkList;

//假设下面的单链表均为带头结点。

void CreatLinkList(LinkList &L,int j)

{//建立一个单链表L,数据为整数,数据由键盘随机输入。

LinkList p,q;

L=(LinkList )malloc(sizeof(Lnode));

C程序设计第四版Chap9(新)-谭浩强

C程序设计第四版Chap9(新)-谭浩强
1
第 9章
结构体
2013 - 2014 Lu & Xiao. All rights reserved.
2
第9章
9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8
结构体
结构体类型 结构体变量定义及成员引用 结构体变量的初始化 结构体数组 结构体指针 单向链表概念 单向链表建立、查找、遍历、插入、删除 typedef定义类型别名
2013 - 2014 Lu & Xiao. All rights reserved.
8
结构体类型
结构体类型的定义建立的是一个类型名, 不是变量,不分配存贮空间。 其用处与一般类型名(如int)相同,用 于定义变量、做函数参数类型、指针的 基类型等。
2013 - 2014 Lu & Xiao. All rights reserved.
2013 - 2014 Lu & Xiao. All rights reserved.
15
第9章
9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8
结构体
结构体类型 结构体变量定义及成员引用 结构体变量的初始化 结构体数组 结构体指针 单向链表概念 单向链表建立、查找、遍历、插入、删除 typedef定义类型别名
ቤተ መጻሕፍቲ ባይዱ 12
重要提示

C语言_实验九、结构体程序设计

C语言_实验九、结构体程序设计

实验九、结构体程序设计

一、实验目的

1.掌握结构、结构数组、结构指针的定义及使用;

2.掌握简单的链表的定义及使用;

3.掌握共用体和枚举类型的定义及使用;

4.掌握文件的简单的定义、打开、写、关闭等操作。

二、实验内容

1.[题目内容]某考点建立一个考生人员情况登记表、表格内容如下:

1)根据上表正确定义该表格内容要求的数据类型。

2)分别输入各成员项数据,并打印输出(为简便,假设有3个考生)编

程序,然后上机调试运行程序。

2.[题目内容]某单位进行选举,有5位候选人:zhang、wang、li、zhao、liu。编写一个统计每人得票数的程序。要求每个人的信息使用一个结构体表示,5个人的信息使用结构体数组。

3.[题目内容]设张三20岁、李四22岁、王平23岁,编程输出3人中年龄最小者的姓名和年龄。

4.[题目内容]定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。编写6个函数分别用于:(1)使用结构体数组,输入全班10名学生的上述信息;

(2)计算每一个学生的总分、平均分;

(3)计算每一门课程的平均分;

(4)查找成绩有不及格的学生信息;

(5)按学生成绩总分降序排序;

(6)输出全班学生的学号、总分及名次。

5.[题目内容]利用上一题的结构类型,创建包含10个结点的无序链表。编写5个函数分别实现下述功能(参考前面第三部分内容):

(1)显示链表;

(2)添加结点;

(3)删除结点;

(4)计算每位学生的总分;

(5)按英语成绩排序。

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

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

arr[0] arr[1] arr[2]
9.5 结构体与函数
返回
9.5.1 结构体变量作为函数参数
例9.4 将例9.3中的输出的功能用一函数实现。
#include "stdlib.h" #include<windows.h> #include "stdio.h" struct stud_type {
char name[20]; long num; int age; char sex; }; void main( ) {
9.5.1 结构体变量作为函数参数
void list(struct stud_type student);
stud_type student[3],*p;
int i;
for ( i=0,p=student;i<3;p++,i++)
printf("No:%s\nName:%s\n",a.num,a.name); /* 输出变量a的编号和姓名两个分量 */
printf("\nSex:%c\nAddress:%s\n",a.sex,a.addr); /* 输出a的性别和地址两个分量 */
system("pause");
}
9.2.4 结构体变量的输入与输出

C程序设计实验题目(下)[宝典]

C程序设计实验题目(下)[宝典]

实验七函数程序设计(二)

练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。

运行结果:1534

练习2.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。

子函数要求:

形式为:vo id delete_string(cha r str[],char ch);

运行结果示例:

练习3.编写一个程序,其中包含一个子函数,功能为求出一个二维数组(从键盘读入)中每列的最小元素,并依次放入一个一维数组中。

例:

子函数要求:形式为:vo id fun(int tt[M][N],int pp[N]);

(其中,tt是一个M行N列的二维数组,pp为存放结果的一维数组。)

*练习4.编写一个程序,功能为将一个无序数组b(包含5个元素)中的每个元素插入另一个有序数组a (包含10个元素)中的适当位置,使插入后的数组a依然有序。其中,包含3个子函数,各函数

要求如下:

●子函数1:功能为读入一包含n个元素的数组;形式为:voi d i np ut(int a[],i nt n);

●子函数2:功能为将一个数值x插入到包含n个元素的有序数组中;

●形式为:voi d ins ert(int a[],i nt n,int x);

●子函数3:功能为输出一包含n个元素的数组;

形式为:voi d o ut p ut(int a[],i nt n);

实验八指针程序设计(一)

练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。

程序要求:

练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。

(完整版)数据结构实验答案及解析

(完整版)数据结构实验答案及解析

《数据结构》实验指导

2013 / 2014 学年第 2学期

姓名:______________

学号:_________

班级:______________

指导教师:______________

潍坊学院计算机工程学院

2014

预备实验 C语言的函数数组指针结构体知识

一、实验目的

1、复习C语言中函数、数组、指针和结构体的概念。

2、熟悉利用C语言进行程序设计的一般方法。

二、实验内容和要求

1、调试程序:输出100以内所有的素数(用函数实现)。

#include<stdio.h>

/*判断一个数是否为素数*/

int isprime(int n){

for(int m=2;m*m<=n;m++){

if(n%m= =0) return 0;

return 1;

}

/*输出100以内所有素数*/

int main(){

int i;

for(i=2;i<100;i++)

if(isprime(i)= =1) printf(“%4d”,i);

return 0;

}

运行结果:

2、调试程序:对一维数组中的元素进行逆序排列。

#include<stdio.h>

#define N 10

int main(){

int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;

printf(“the original Array is:\n ”);

for(i=0;i<N;i++)

printf(“%4d”,a[i]);

for(i=0;i<N/2;i++){ /*交换数组元素使之逆序*/

数据结构课程设计-单链表

数据结构课程设计-单链表

目录

1 选题背景 (2)

2 方案与论证 (3)

2.1 链表的概念和作用 (3)

2.3 算法的设计思想 (4)

2.4 相关图例 (5)

2.4.1 单链表的结点结构 (5)

2.4.2 算法流程图 (5)

3 实验结果 (6)

3.1 链表的建立 (6)

3.2 单链表的插入 (6)

3.3 单链表的输出 (7)

3.4 查找元素 (7)

3.5 单链表的删除 (8)

3.6 显示链表中的元素个数(计数) (9)

4 结果分析 (10)

4.1 单链表的结构 (10)

4.2 单链表的操作特点 (10)

4.2.1 顺链操作技术 (10)

4.2.2 指针保留技术 (10)

4.3 链表处理中的相关技术 (10)

5 设计体会及今后的改进意见 (11)

参考文献 (12)

附录代码: (13)

1 选题背景

陈火旺院士把计算机60多年的发展成就概括为五个“一”:开辟一个新时代----信息时代,形成一个新产业----信息产业,产生一个新科学----计算机科学与技术,开创一种新的科研方法----计算方法,开辟一种新文化----计算机文化,这一概括深刻影响了计算机对社会发展所产生的广泛而深远的影响。

数据结构和算法是计算机求解问题过程的两大基石。著名的计算机科学家P.Wegner指出,“在工业革命中其核心作用的是能量,而在计算机革命中其核心作用的是信息”。计算机科学就是“一种关于信息结构转换的科学”。信息结构(数据结构)是计算机科学研究的基本课题,数据结构又是算法研究的基础。

2 方案与论证

2.1 链表的概念和作用

链表是一种链式存储结构,链表属于线性表,采用链式存储结构,也是常用的动态存储方法。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

VC++程序设计链表与链表的基本操作

VC++程序设计链表与链表的基本操作
1249
1249
A 1356
1356
B 1475
1475
C 1021
1021
D NULL
特点: 1。头指针变量head, 它存放一个地址,用于指向一个元素。 链表中的一个元素称为结点。 2。每个结点至少应包含两个部分:一为用户需要的实际数据 二为下一个结点的地址。 3。“表尾” 的地址部分放一个“Null”(表示“空地址”) 表示链表的最后一个元素,该元素不再指向其它元素。
p0
if(p1==head) { head=p0; p0->next=p1; }
2.插入的是链表尾;
p1
head
11041 89.5 11042
NULL
11043 90
11047 85
p0
&&(p0->num > p1->num) if(p1->next == NULL) { p1->next=p0; p0->next =NULL; }
释放链表的结点空间 void deletechain(student *head) { student *p1; while(head){ p1=head; head=head->next; p1 delete p1; } }
head
11041 89 next
11043 90 nextBaidu Nhomakorabea

四川大学《c语言程序设计》课件-第8章 结构体与共用体

四川大学《c语言程序设计》课件-第8章 结构体与共用体

数组的解决方法
int studentId[30] = {1,2,3,4,5,6}; char studentName[30][10]={{"令狐冲"},{"林平之"},
{"岳灵珊"},{"任盈盈"}}; char studentSex[30][2]={{"男"},{"男"},{"女"},{"女"}}; int timeOfEnter[30] = {1999,1999,1999,1999}; int scoreComputer[30] = {90,78,89,78}; int scoreEnglish[30] = {83,92,72,95}; int scoreMath[30] = {72,88,98,87}; int scoreMusic[30] = {82,78,66,90};
直接定义结构体变量(不出现结构体名)
定义自己的类型名
struct student {
int num; char name[20]; char sex; int age; float score; char addr[30]; };
typedef为一种已存在 的类型定义一个新名字
STUD与struct student类型是同义词
表8-1 某学校学生成绩管理表

实验9-2 结构体与共用体

实验9-2 结构体与共用体

实验9-2 结构体和共用体(2)

1

【实验目的】

(1)掌握结构体类型变量的定义和使用

(2)掌握结构体类型数组的概念和应用

(3)了解链表的概念和操作方法

【实验要求】

(1)掌握结构体类型变量的定义和使用

(2)了解链表的概念和操作方法

【实验环境】

(1) Microsoft XP操作系统

(2) Microsoft VC++ 6.0

【实验内容】

1、排名/JudgeOnline/problem.php?id=2299

题目描述

Jiejie想知道他在班级里的排名,老师给他列出了一张有学生学号和成绩的清单。计算jiejie的排名。Ps:如果jiejie和第一名成绩相等,那他们是并列第一。

输入

第一行T代表T组数据。每组第一行是jiejie的学号,接下来的几行,每行是一个学生学号和成绩。学生的学号在10000000和99999999之间,成绩在0到100之间,学号和成

绩都为0表示输入结束。学生人数小于等于1000人。

输出:对每组数据,输出jiejie的排名

样例输入

1

20070101

20070102 100

20070101 33

20070103 22

20070106 33

0 0

样例输出

2

2、通讯录编排/acmhome/problemdetail.do?&method=showdetail&id=1741

题目描述:

ACM集训队最近人气很旺,为了促进队员之间的交流,我们准备制作一个通讯录,每个队友的信息包括:

tojid 电话籍贯出生年-月-日

各个字段均用英文字符和数字表示。使用空格分隔各个字段,每个字段不包含空格,如:crq的信息为:crq 660000 huangyan 1979-1-1

C语言结构体变量与链表知识总结

C语言结构体变量与链表知识总结

结构体与链表

11.1 结构体类型的定义

结构体是由C语言中的基本数据类型构成的、并用一个标识符来命名的各种变量的组合,其中可以使用不同的数据类型。

1.结构体类型的定义

Struct结构体名

{ 类型标识符1 成员名1;

类型标识符2 成员名2;

……

类型标识符n 成员名n;

};

Struct结构体名——结构体类型名

2.关于结构体类型的说明:

(1)“struct 结构体名”是一个类型名,它和int、float等作用一样可以用来定义变量。

(2)结构体名是结构体的标识符不是变量名,也不是类型名。

(3)构成结构体的每一个类型变量称为结构体成员,它像数组的元素一样,单数组中元素以下标来访问,而结构体是按结构体变量名来访问成员的。

(4)结构体中的各成员既可以属于不同的类型,也可以属于相同的类型。

(5)成员也可以是一个结构体类型,如:

Struct date

{

Int month;

Int day;

Int year;

};

Struct person

{

Float num;

Char name[20];

Char sex;

Int age;

Struct date birthday;

Char address[10];

};

11.2 结构体类型变量

11.2.1 结构体类型变量的定义

1.先定义结构体类型,再定义结构体变量

形式:

Struct 结构体名

{类型标识符1 成员名1;

类型标识符2 成员名2;

……

类型标识符n 成员名n;

};

Struct 结构体名变量名表;

例如:

Struct student

{char name[20];

Char sex;

C语言程序设计实例教程第2版习题答案作者李红第9章结构体和共用体.doc

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;

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h>
#define m 3
#define n 5
struct stud
{int no;
char name[16];
float mark[3];
float ave;
};
void average(struct stud st[])
{int i,j;
float sum;
for(i=0;i<n;i++)
《结构体与链表程序设计》实验解答
1、改错题
(1)
#include<stdio.h>
struct stud
{char name[20];
int age;
} ;
struct studfun(struct stud person[],int n) //fun(struct stud person[],int n)
int i;
struct Link *H,*p;
H=(struct Link *) malloc(sizeof(struct Link));
H->next=NULL;
for(i=0;i<10;i++)
InsertList(H,a[i]);
p=H->next;
while(p)
{
printf("%4d",p->data);
return d;
}
(3)编写一个程序实现如下功能:建立一个单链表,每个结点数据要有职工号、工资。用一个creat函数来建立链表,用list函数输出数据(数据自定)(程序以文件名sy8_9.c存盘)。
#include<stdio.h>
#include<malloc.h>
struct node
{int no;
float gongzi;
struct node *next;
} ;
void creat(struct node *H,int *a,int n)
{ int i;
float x;
struct node *p;
for(i=0;i<n;i++)
{printf("输入工号%4d的工资:",a[i]);
scanf("%f",&x);
printf("输入第一个点坐标:\n");
a=inputpoint( );//
printf("输入第二个点坐标:\n");
b=inputpoint( );
c=midpoint(a,b );
printf("中点坐标为:(%5.1f,%5.1f)\n",c.x,c.y);
printf("两点站距离为:%10.4f\n",dists(a,b));
{
int min,i;
min=0;
for(i=0;i<n;i++)
if(person[i].age <person[min].age) min=i; // person[i] <person[min]
return (person[min]); //return (person )
}
void main()
{... ...}
3、编程题
(1)编写一个程序实现如下功能:有4名学生,每个学生信息包含学号、姓名、数学成绩、英语成绩、C语言成绩和三门课程的总分,并对数据进行输入和输出(程序以文件名sy8_7.c存盘)。
#include<stdio.h>
#define N 4
void main()
{ struct student
①为点输入坐标值。
②求两个点中点坐标。
③求两点间距离。
(程序以文件名sy8_8.c存盘)
#include<stdio.h>
#include<math.h>
struct point
{ float x,y; } ; /*定义一个点结构*/
struct point inputpoint( ) ; /*输入点坐标值*/
#include<stdio.h>
struct link
{ int data;
struct link *next;
};
void hbsort(link *a,link *b,link *c)
{link *pa,*pb,*pc;
pa=a->next;
pb=b->next;
pc=a;c=pc;
while(pa!=NULL && pb!=NULL) //1
p=(struct node *) malloc(sizeof(struct node));
p->no=a[i];
p->gongzi=x;
p->next=H->next;
H->next=p;
}
}
void list(struct node *H)
{ struct node *p;
p=H->next;
while(p)
{
printf("%4d%10.1f\n",p->no,p->gongzi);
p=p->next;
}
}
void main()
{ int a[]={101,103,105,107,109};
struct node *H;
H=(struct node *) malloc(sizeof(struct node));
{
struct stud a[]={{"Zhao",21},{"Qian",20},{"Sun",19},{"LI",22}};
int n=4;
struct stud minpers;
minpers=fun(a,n);
printf("%s是年龄小者,年龄是:%d\n",minpers.name,minpers.age);
scanf("%f %d",&p.a,&p.n); //scanf("%f %d", p.a, p.n)
}
return pvalue;
}
void main()
{
printf("多项式值:%20.8f\n",fpvalue());
}
(3)
#include<stdio.h>
#include<malloc.h>
}
struct point inputpoint( )
{ struct point t;
scanf("%f%f",&t.x,&t.y);
return t;
}
struct point midpoint(struct point p1,struct point p2 )
{ struct point t;
printf("\n\n");
for(i=0;i<N;i++)
printf("%10d%10s%5.1f%5.1f%5.1f%10.1f\n",st[i].no,st[i].name,st[i].math,st[i].eng,st[i].c,st[i].sum);
}
(2)编写一个程序实现如下功能:定义一个点的结构数据类型,实现下列功能:
scanf("%f%f%f",&st[i].math,&st[i].eng,&st[i].c);
st[i].sum=st[i].math+st[i].eng+st[i].c;
}
printf("\n%10s%10s%5s%5s%5s%10s\n","NO","NAME","MATH","ENG","C++","SUM");
return -1; //2
}
void main()
{ struct bdata book[100];
char st[20];
int index;
printf("请输入要查找书名:");
gets(st);
index=findbook(book,100,st); //3
……
}
(2)下列函数average功能为:计算5名学生3门课成绩的平均分,请填写适当的符号或语句,使程序实现其功能,程序以文件名sy8_5.c存盘。
p=p->next;
}
printf("\n");
}
2、程序填空
(1)下列函数findbook的功能为:在有n个元素的数组s中查找书名为a的书,若找到,函数返回数组下标,否则,函数返回-1,请填写适当的符号或语句,使程序实现其功能,程序以文件名sy8_4.c存盘。
#include<stdio.h>
#include<string.h>
q=H;p=H->next;
while(p && n>p->data) //while(n>p->data && p)
{
q=p;p=p->next;
}
s->next=q->next; // q->next=s;
q->next=s; // s->next=q->next;
}
void main()
{
int a[]={12,3,45,67,7,65,10,20,35,55};
struct Link
{int data;
struct Link *next;
} ;
void InsertList(struct Link *H,int n)
{
struct Link *p,*q,*s;
s=(struct Link *) malloc(sizeof(struct Link));
s->data=n;
struct bdata
{ int id;
char bname[20];
float price;
} ;
int findbook(struct bdata st[],int n,char s[])
{ int i;
for(i=0;i<n;i++)
if(strcmp(st[i].bname,s)==0) return i; //1
if (pa->data<pb->data) {pc->next=pa;pc=pa;pa=pa->next;}
else {pc->next=pb;pc=pb;pb=pb->next;}
if(pa!=NULL) pc->next=pa; //2
else pc->next=pb;
}
void main()
{sum=0; //1
for(j=0;j<m;j++)
sum=sum+st[i].mark[j]; //2
st[i].ave=sum/m; //3
}
}
void main()
{int i;
struct stud preson[n];
……
average(preson);
……
}
(3)下列函数hbsort功能为:将两个已知的有序链表合并成一个有序链表,请填写适当的符号或语句,使程序实现其功能,程序以文件名sy8_6.c存盘。
scanf("%f",&x);
printf("输入多项式系数(a)和指数(n,n=-10000,结束):\n");
scanf("Hale Waihona Puke Baiduf %d",&p.a,&p.n); //scanf("%f %d", p.a, p.n)
while(p.n!=-10000)
{pvalue+=p.a*pow(x,p.n);//pvalue+=p.a*pow(x, n);
t.x=(p1.x+p2.x)/2;
t.y=(p1.y+p2.y)/2;
return t;
}
double dists(struct point p1,struct point p2 )
{ double d;
d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
H->next=NULL;
creat(H,a,5);
printf("%6s%8s\n","工号","工资");
list(H);
}
struct point midpoint(struct point p1,struct point p2 ); /*两个点中点坐标*/
double dists(struct point p1,struct point p2 ); /*两点间距离*/
void main()
{ struct point a,b,c;
{ int no;
char name[16];
float math,eng,c;
float sum;
};
struct student st[N];
int i;
printf("请输入%4d个学生的学号、姓名、数学、英语、C++成绩\n",N);
for (i=0;i<N;i++)
{
scanf("%d %s",&st[i].no,&st[i].name);
}
(2)
#include<stdio.h>
#include<math.h>
struct Poly
{ float a; /*系数*/
int n; /*指数*/
};
double fpvalue()
{ struct Poly p;
double pvalue=0;
float x;
printf("输入多项式X:\n");
相关文档
最新文档