实验九 结构体与链表程序设计(解答)
- 格式:doc
- 大小:55.50 KB
- 文档页数:7
一、单选题1、链表不具有的特点是()。
A.不必事先估计存储空间B.插入、删除不需要移动元素C.可随机访问任一元素D.所需空间与线性表长度成正比正确答案:C2、链接存储的存储结构所占存储空间()。
A.分两部分,一部分存放结点值,另一部分存放结点所占单元数B.只有一部分,存放结点值C.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针D.只有一部分,存储表示结点间关系的指针正确答案:C3、链表是一种采用()存储结构存储的线性表。
A.网状B.星式C.链式D.顺序正确答案:C4、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是()。
struct node {char data;struct node *next;} a,b,*p=&a,*q=&b;A.(*p).next=q;B.p.next=&b;C.a.next=q;D.p->next=&b;正确答案:B5、下面程序执行后的输出结果是()。
#include <stdio.h>#include <stdlib.h>struct NODE {int num; struct NODE *next;};int main(){ struct NODE *p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE));q=(struct NODE*)malloc(sizeof(struct NODE));r=(struct NODE*)malloc(sizeof(struct NODE));p->num=10; q->num=20; r->num=30;p->next=q;q->next=r;printf("%d",p->num+q->next->num);return 0;}A.30B.40C.10D.20正确答案:B6、下面程序执行后的输出结果是()。
C语言实验9(附参考答案)实验9:选择结构(2)实验目的:(1)进一步掌握if语句和switch语句;(2)掌握用条件运算符实现选择;(3)掌握选择结构的嵌套,掌握简单的算法。
(4)能灵活应用下列语句:if,if-else,switch,break。
实验内容:1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( C )。
A)A%2==1 B)!(A%2==0) C)!(A%2) D)A%2 2、以下程序的运行结果是 F 。
main() { } if(2*2==5<2*2==4) print(“T”); else printf(“F”);3、下列程序的运行结果是。
#include void main(void) { int x,y=1,z; if(y!=0) x=5;printf(“\\t%d\\n”,x); if(y==0) x=4; else x=5;printf(“\\t%d\\n”,x); x=1;1} if(y<0) if(y>0) x=4; else x=5; printf(“\\t%d\\n”,x); 4、根据程序的功能,将以下程序补充完整以下程序计算某年某月有几天。
其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。
请在内填入正确内容。
main() { int yy,mm,len; printf(“year,month=”);scanf(“%d %d”,&yy,&mm); switch(mm) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: len=31 ; break; case 4: case 6: case 9: case 11: len=30; break; case 2:if(yy%4==0&&yy0!=0||yy@0==0) len=29 ; else len=28 ; break; default: printf(“input error”); break; } printf(“the length of %d %dis %d\\n”,yy,mm,len); } 二、编程:21、(必做)试编程判断输入的正整数是否既是5又是7的整倍数。
结构体与链表习题附答案一、选择题1、在说明一个结构体变量时系统分配给它的存储空间是().A)该结构体中第一个成员所需的存储空间B)该结构体中最后一个成员所需的存储空间C)该结构体中占用最大存储空间的成员所需的存储空间D)该结构体中所有成员所需存储空间的总和。
2.设有以下说明语句,则以下叙述不正确的是( )struct stu{int a;float b;}stutype;A. struct 是结构体类型的关键字B. struct stu 是用户定义的结构体类型C. stutype 是用户定义的结构体类型名D. a 和b 都是结构体成员名3、以下对结构体变量stu1中成员age的合法引用是()#includestruct student{int age;int num;}stu1,*p;p=&stu1A)stu1->age B)student.age C)p->age D) p.age4、有如下定义:Struct date{int year,month,day;};Struct worklist{Char name[20];Char sex;Struct date birthday;}person;对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( ) 。
A worklist .birthday.year=1978B birthday.year=1978C person.birthday.year=1958D person.year=19585、以下程序运行的结果是( ) 。
#include”stdio.h”main(){ struct date{ int year , month , day ;} today ;printf(“%d\n”,sizeof(struct date));}A .6 B.8 C.10 D.126、对于时间结构体struct date{ int year , month , day ;char week[5];}则执行printf(“%d\n”,sizeof(struct date))的输出结果为( ) 。
《C程序设计实验》实验一C程序开发环境(2学时)1.实验目的熟悉C语言的集成开发环境,了解菜单的使用方法;掌握C语言程序上机的编辑、编译、连接、运行的基本步骤;了解C语言程序的结构。
2.实验内容(1)熟悉C语言程序上机的编辑、编译、连接、运行的基本步骤;(2)输入并调试、运行下面的程序。
#include <stdio.h>int main( ){printf ("This is a C program.\n");return 0;}(3)输入并调试、运行下面的程序。
#include <stdio.h>int main( ){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c = max(a,b);printf("max=%d\n",c);return 0;}int max(int x,int y){int z;if (x > y) z = x;else z = y;return(z);}3.实验仪器设备微型计算机一套,配置Windows系统和VC++6.0/Turbo C3.0 软件。
4.问题讨论将printf函数改为print,调试并分析结果。
实验二数据类型、运算符与表达式(2学时)1.实验目的掌握整型、字符型和实型变量的定义和使用;掌握算术运算符的使用;掌握C语言表达式的运算规则。
2.实验内容(1)输入并调试、运行下面的程序。
#include <stdio.h>int main(){char c1,c2;c1=97;c2=98;printf("%c %c\n",c1,c2);printf("%d %d\n",c1,c2);return 0;}(2)输入并调试、运行下面的程序。
#include <stdio.h>int main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);return 0;}3.实验仪器设备微型计算机一套,配置Windows系统和VC++6.0/Turbo C3.0 软件。
C语⾔程序设计实验实验报告《C语⾔程序设计实验》实验报告实验九⽂件编程(⼀)班级:_07某某专业1班_学号:______姓名:___实验样例_____⽇期:___2008.6.10_____台州学院数信学院计算机系制作⼀、实验⽬的和要求综合使⽤基本结构、基本算法、函数、指针、结构体、链表等知识设计程序。
⼆、实验指导1、注意:本次实验为综合性实验,需要综合本课程以前所学内容,完成编制⼀个⼩型应⽤程序。
需要复习课本以前所学内容,浏览上课讲解的相关内容。
2、实验时间安排:准备实验⽅案,上课时上机编程,课余完成整个设计并完成实验报告。
3、实验具体要求:以⼀张假想的学⽣期中成绩表为实验对象,编制⼀个⼩型应⽤程序,可以考虑实现以下功能:(1)成绩修改;(2)成绩查询;(3)成绩统计;(4)成绩输⼊。
也可以实现其他⾃定义的功能。
界⾯采⽤简易菜单形式,可以分级显⽰。
实验需要进⾏以下步骤:需求分析、程序设计、程序调试、程序运⾏,并对程序运⾏效果进⾏分析,提出改进⽅案。
初步锻炼学⽣的程序设计能⼒、程序调试能⼒、对实验结果进⾏综合分析的能⼒。
4、实验成绩评价标准:参见成绩评定表。
四、实验报告内容(参见样本,请另附页)实验报告必须包含以下内容:1、对你设计的程序功能进⾏的较详细描述。
2、画出程序测试⽤的学⽣期中成绩表(包含:表头、若⼲⾏包含学⽣成绩等信息的数据⾏)。
3、给出程序清单(包含结构体的声明与定义、所有的函数声明、所有的全局变量、所有的函数定义、必要的注释。
注:如果程序过长,可以不⽤给出所有的函数定义,只给出主要的函数定义)。
4、运⾏结果(写出运⾏时的主界⾯、各模块的实现界⾯等,不作具体要求,但要求能清晰地体现出程序的功能)。
5、对你的设计作⼀个评价(可以包含你所花的时间、精⼒,你遇到的困难及如何解决的,你的设计过程所遇到的其他事情;必须包含你对设计的客观评价,以及提出的改进⽅案)。
1、程序功能描述:(略)2、成绩表样表:3、程序清单:(红⾊部分是和上⼀个程序的区别之处)#includestruct student /*期中成绩表的结构声明*/{int num;char name[20];char sex;float YuWen;float ShuXue;float YingYu;float totle;};#define MAX_STU_NUMBER 100 /*宏定义最⼤学⽣数为100⼈*/struct student Stu[MAX_STU_NUMBER]; /*⼀次性定义100个学⽣的存储空间*/int STU_NUMBER; /*存放学⽣数*/char *FileName = "chengji.txt"; /*成绩存放的⽂件*//*所有的函数声明:*/int SelectMainMenu(); /*显⽰并选择主菜单。
CHAPTER 10第10章结构体与共用体学习目标本章主要介绍结构体的定义和使用方法,然后介绍链表的概念和相关操作,最后介绍两种新的数据类型——共用体和枚举。
通过本章的学习,需要掌握结构体的概念与结构体类型的定义方法,熟练掌握结构体变量的定义、引用和初始化方法,掌握链表的概念,熟练掌握链表的相关操作,了解共用体和枚举的概念及其使用方法。
实际问题中,经常需要对一些类型不同但又相互关联的数据进行处理。
比如,对一个学生而言,他的学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score)等数据都与该学生有联系。
如果将num、name、sex、age、score分别定义成相互独立的简单变量,则无法反映它们之间的内在联系;又因为这些数据彼此类型不同,而数组只能对同种类型的成批数据进行处理,所以,此时也无法使用数组。
这就需要有一种新的数据类型,它能将具有内在联系的不同类型的数据组合成一个整体,在C语言里,这种数据类型就是“结构体”。
结构体属于构造数据类型,它由若干成员组成,成员的类型既可以是基本数据类型,也可以是构造数据类型,而且可以互不相同。
由于不同问题需要定义的结构体中包含的成员可能互不相同,所以,C语言只提供定义结构体的一般方法,结构体中的具体成员由用户自己定义。
这样,编程人员可以根据实际需要定义各种不同的结构体类型。
10.1 结构体结构体遵循“先定义后使用”的原则,其定义包含两个方面,一是定义结构体类型;二是定义该结构体类型的变量。
10.1.1 结构体类型的定义格式:struct 结构体类型名{类型1 成员名1;类型2 成员名2;类型n 成员名n;};功能:定义一种结构体类型。
例如,图10.1所示结构体类型可有如下定义:图10.1 struct student结构体类型组织结构图struct date{int year;int month;int day;};struct student{int num;char name[20];char sex;struct date birthday;float score;};【说明】①“结构体类型名”与“成员名”都遵循标识符命名规则。
实验九、结构体程序设计一、实验目的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)按英语成绩排序。
三、课后作业(写实验报告)1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。
从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
(1)定义学生结构体。
(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。
实验9-1 结构体和共用体(1)1【实验目的】掌握结构体类型变量的定义和使用掌握结构体类型数组的概念和应用了解链表的概念和操作方法【实验要求】掌握结构体类型变量的定义和使用了解链表的概念和操作方法【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1、第几天/acmhome/problemdetail.do?&method=showdetail&id=1071描述:给定一个日期,输出这个日期是该年的第几天。
输入输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出:对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入:2000-01-01样例输出:12、学生成绩/JudgeOnline/problem.php?id=1518题目描述现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。
编写一个函数input,用来输入一个学生的数据记录。
编写一个函数print,打印一个学生的数据记录。
在主函数调用这两个函数,读取N条记录输入,再按要求输出。
N<100输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出:每个学生的学号、姓名、三科成绩占一行,逗号分开。
样例输入2a100 zhblue 70 80 90b200 newsclan 90 85 75样例输出a100,zhblue,70,80,90b200,newsclan,90,85,753、平均分和最高分/JudgeOnline/problem.php?id=1519题目描述有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
C语言程序设计实验报告(结构体和共用体)1实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。
2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。
要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。
3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。
以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。
8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。