实验九 结构体与链表程序设计(解答)
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语言版实验教案
一、实验目的
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
实验名称:链表实现学生信息管理系统
实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。
实验内容:
设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。
实现以下功能:
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(新)-谭浩强
第 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语言_实验九、结构体程序设计
实验九、结构体程序设计
一、实验目的
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章课件
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程序设计实验题目(下)[宝典]
实验七函数程序设计(二)
练习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++程序设计链表与链表的基本操作
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章 结构体与共用体
数组的解决方法
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 结构体和共用体(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语言结构体变量与链表知识总结
结构体与链表
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
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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");