顺序表题目
- 格式:doc
- 大小:70.50 KB
- 文档页数:8
数据结构经典题目及c语言代码一、线性表1. 顺序表顺序表是一种利用连续存储空间存储元素的线性表。
以下是一个顺序表的经典题目及C语言代码实现:```c#define MaxSize 50typedef struct {int data[MaxSize]; // 存储元素的数组int length; // 顺序表的当前长度} SeqList;// 初始化顺序表void initList(SeqList *L) {L->length = 0;}// 插入元素到指定位置void insert(SeqList *L, int pos, int elem) {if (pos < 1 || pos > L->length + 1) {printf("插入位置无效\n");return;}if (L->length == MaxSize) {printf("顺序表已满,无法插入\n"); return;}for (int i = L->length; i >= pos; i--) { L->data[i] = L->data[i - 1];}L->data[pos - 1] = elem;L->length++;}// 删除指定位置的元素void delete(SeqList *L, int pos) {if (pos < 1 || pos > L->length) {printf("删除位置无效\n");return;}for (int i = pos - 1; i < L->length - 1; i++) {L->data[i] = L->data[i + 1];}L->length--;}// 获取指定位置的元素值int getElement(SeqList *L, int pos) {if (pos < 1 || pos > L->length) {printf("位置无效\n");return -1;}return L->data[pos - 1];}```2. 链表链表是一种利用非连续存储空间存储元素的线性表。
数据结构能力测试集训题目线性表1.实现顺序表各种基本运算的算法,并基础上设计一个主程序完成如下功能:(1)初始化顺序表L;(2)采用尾插法依次插入a,b,c,d,e;(3)输出顺序表L;(4)输出顺序表L的长度;(5)判断顺序表L是否为空;(6)输出顺序表L的第3个元素;(7)输出元素a的位置;(8)在第四个元素位置上插入f元素;(9)输出顺序表L;(10)删除顺序表L的第3个元素;(11)输出顺序表L;(12)释放顺序表L。
2.实现单链表各种基本运算的算法,并基础上设计一个主程序完成如下功能:(1)初始化单链表h;(2)采用尾插法依次插入a,b,c,d,e;(3)输出单链表h;(4)输出单链表h的长度;(5)判断单链表h是否为空;(6)输出单链表h的第3个元素;(7)输出元素a的位置;(8)在第四个元素位置上插入f元素;(9)输出单链表h;(10)删除单链表h的第3个元素;(11)输出单链表h;(12)释放单链表h;3.实现双链表各种基本运算的算法,并基础上设计一个主程序完成如下功能:(1)初始化双链表h;(2)采用尾插法依次插入a,b,c,d,e;(3)输出双链表h;(4)输出双链表h的长度;(5)判断双链表h是否为空;(6)输出双链表h的第3个元素;(7)输出元素a的位置;(8)在第四个元素位置上插入f元素;(9)输出双链表h;(10)删除双链表h的第3个元素;(11)输出双链表h;(12)释放双链表h;4.实现循环单链表各种基本运算的算法,并基础上设计一个主程序完成如下功能:(1)初始化循环单链表h;(2)采用尾插法依次插入a,b,c,d,e;(3)输出循环单链表h;(4)输出循环单链表h的长度;(5)判断循环单链表h是否为空;(6)输出循环单链表h的第3个元素;(7)输出元素a的位置;(8)在第四个元素位置上插入f元素;(9)输出循环单链表h;(10)删除循环单链表h的第3个元素;(11)输出循环单链表h;(12)释放循环单链表h;5.实现循环单链表各种基本运算的算法,并基础上设计一个主程序完成如下功能:(1)初始化循环双链表h;(2)采用尾插法依次插入a,b,c,d,e;(3)输出循环双链表h;(4)输出循环双链表h的长度;(5)判断循环双链表h是否为空;(6)输出循环双链表h的第3个元素;(7)输出元素a的位置;(8)在第四个元素位置上插入f元素;(9)输出循环双链表h;(10)删除循环双链表h的第3个元素;(11)输出循环双链表h;(12)释放循环双链表h;6.求集合的并,交,差运算(用有序单链表表示)栈和队列7.实现顺序栈各种基本运算的算法,编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成以下各种功能:(1)初始化栈s(2)判断栈s是否非空(3)依次进栈元素a,b,c,d,e(4)判断栈s是否非空(5)输出栈长度(6)输出从栈顶到栈底元素(7)输出出栈序列(8)判断栈s是否非空(9)释放栈8.实现链栈各种基本运算的算法,编写一个程序,实现链栈的各种基本算法,并在此基础上设计一个主程序完成如下功能:(1)初始化链栈s(2)判断链栈s是否非空(3)依次进栈元素a,b,c,d,e(4)判断链栈s是否非空(5)输出链栈长度(6)输出从栈顶到栈底元素(7)输出链栈序列(8)判断链栈s是否非空(9)释放链栈9.实现顺序队列各种基本运算的算法,编写一个程序,实现顺序循环队列各种基本运算,并在此基础上设计一个主程序完成如下功能:(1)初始化队列q(2)判断队列q是否非空(3)依次进队列元素a,b,c(4)出队一个元素,输出该元素(5)输出队列q的元素的个数(6)依次进队列元素d,e,f(7)输出队列q的元素的个数(8)输出出队序列(9)释放队列10.实现链队各种基本运算的算法,编写一个程序,实现链队的各种基本运算,在此基础上设计一个主程序完成如下功能:(1)初始化链队q(2)判断链队q是否非空(3)依次进链队元素a,b,c(4)出队一个元素,输出该元素(5)输出链队q的元素的个数(6)依次进链队元素d,e,f(7)输出链队q的元素的个数(8)输出出队序列(9)释放链队串11.实现顺序串各种基本运算的算法,编写一个程序实现顺序的基本运算的算法,比在此基础上设计一个主程序完成如下功能:(1)建立s=”abcdefghefghijklmn”和串s1=”xyz”(2)输出串s(3)输出串s的长度(4)在串s的第9个字符位置插入串s1而产生串s2(5)输出串s2(6)删除串s第2个字符开始的5个字符而产生的串s2(7)输出串s2(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2(9)输出串s2(10)提取串s的第2个字符开始的10个字符而产生串s3(11)输出串s3(12)将串s1和串s2连接起来而产生的串s4(13)输出串s412.实现链串个各种基本运算的算法,编写一个程序实现链串的各种基本运算,并在此基础上设计一个主程序完成如下功能;(1)建立s=”abcdefghefghijklmn”和串s1=”xyz”(2)输出串s(3)输出串s的长度(4)在串s的第9个字符位置插入串s1而产生串s2(5)输出串s2(6)删除串s第2个字符开始的5个字符而产生的串s2(7)输出串s2(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2(9)输出串s2(10)提取串s的第2个字符开始的10个字符而产生串s3(11)输出串s3(12)将串s1和串s2连接起来而产生的串s4(13)输出串s413.顺序串的各种模式匹配运算,编写一个程序实现顺序串的各种模式匹配运算,并在此基础上完成如下功能:(1)建立”abcabcdabcdeabcdefabcdefg”目标串s和”abcdeabcdefab”模式串t(2)采用简单匹配算法求t在s中的位置(3)由模式串t求出next值和nextval值(4)采用KMP算法求t在s中的位置(5)采用改进的KMP算法求t在s中的位置查找14.实现顺序查找的算法,编写一个程序输出在顺序表{3,6,2,10,1,8,5,7,4,9}中采用顺序方法查找关键字5的过程。
大数的认识练习题一、数位、计数单位和数位顺序表。
1.个(一)、十、百、千、万……是计数单位;个位、十位、百位、千位、万位是数位;数位和计数单位之间是一一对应的。
2.数位顺序表中从各位开始,越往左数位越高,每四个数位组成一个数级(个级:个位、十位、百位、千位;万级:万位、十万位、百万位、千万位;……)强调:个位不是最低位。
3.每相邻的两个数位之间的进率都是十,这种计数方法叫十进制计数法。
自然数(1、2、3、4、5、6……)时表示物体个数的数,一个也没有用0表示,0也是自然数。
(体会自然数与物体个数的一一对应关系。
)二、亿以数的读写。
1.读出下面各数。
(四位一级,先画分级线。
)(按级读;先读万级再度个级;万级按照个级读,读完加“万”字;级末尾的0不读;其它的一个或连续几个0只读一个。
)24678090 10000001 26590002.写出下面各数。
(万字后面画分级线。
)(按级写;先写万级再写个级;哪个数位上一个单位也没有,写“0”占位。
强调:万级完全写好后再去考虑个级。
读出一个零,可能会写出多个0。
)一千零四十万零五百一百万零七三、亿以上数的读写。
(与亿以数的读写方法类似,是亿以数的读写的推广和延伸。
)1.读出下面各数。
1925080030 433040333005 100000000052.写出下面各数。
二亿零九四十亿零四十万零四十四、数的组成。
1.一个数由4个百万、7个十万和5个十组成,这个数是()。
分析:百万位上是4,十万位上是7,十位上是5,其余数位上都是0。
2.写出由下面各数组成的数。
(1)、四百万、八十万、五万和三千。
(2)、八千万和四十。
思路同上题。
3.30900500是由()个()、()个()和()个()组成的。
分析:根据题意,将三个非0数所表示的意义填入即可。
例如3个千万。
4.变式题。
300000000+500000+4000+9=()分析:结果应由3个亿、5个十万、4个千、9个一组成,方法同上面习题。
《数据结构》第2章线性表共55题一、单选1. (1)分题目ID号:10545 题目难度:容易在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤i十1)位量插入一个新元素时,需要从后向前依次后移【1】个元素。
A. n—iB. n—i十1C. n一i一1 D. i题目答案:B2. (1)分题目ID号:10546 题目难度:容易线性表是【1】。
A. 一个有限序列,可以为空B. 一个有限序列,不能为空C. 一个无限序列,可以为空D. 一个无序序列,不能为空题目答案:A3. (1)分题目ID号:10548 题目难度:容易在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为【1】A. (n十1)/2B. n/2C. nD. n十l题目答案:C4. (1)分题目ID号:10549 题目难度:容易在一个顺序表的表尾插入一个元素的时间复杂度的量级为【1】A. ○(n)B. ○(1)C. ○(n*n)D. ○(lbn)题目答案:B5. (1)分题目ID号:10550 题目难度:容易单链表的存储密度为【1】A. 大于1B. 等于1C. 小于1D. 不能确定题目答案:C题目分析:存储密度=单链表数据项所占空间/结点所占空间结点所占空间由数据项所占空间和存放后继结点地址的链域,所以,存储密度小于1 。
6. (4)分题目ID号:10551 题目难度:难设单链表中指针p指向结点ai,指针q指着将要插入的新结点x,问:[1] 当x插在链表中两个数据元素ai和ai+1之间时,只要先修改【1】后修改【2】即可。
A.p一>next=qB.p一>next=p一>next->nextC.p->next=q->nextD.q一>next=p一>nextE.q->next=NULLF.q一>next=p[2] 在链表中最后一个结点an之后插入时,只要先修改【3】后修改【4】即可。
第 1 章绪论1. 填空⑴在顺序表中,等概率情况下,插入和删除一个元素平均需移动()个元素,具体移动元素的个数与()和()有关。
【解答】表长的一半,表长,该元素在表中的位置⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。
【解答】108【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。
【解答】p->next=(p->next)->next⑷单链表中设置头结点的作用是()。
【解答】为了运算方便【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。
⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。
【解答】p->next=head【分析】如图2-8所示。
⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。
【解答】s->next =rear->next; rear->next =s; rear =s;(将S的指针域先弄成表尾指针域,而表尾指针域是代表下个结点的地址信息,所以要将指针域要用S替代,最后把表尾给S)q=rear->next->next; rear->next->next=q->next; delete q;【分析】操作示意图如图2-9所示:⑺一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为();在给定值为x 的结点后插入一个新结点的时间复杂度为()。
【解答】Ο(1),Ο(n)【分析】在p所指结点后插入一个新结点只需修改指针,所以时间复杂度为Ο(1)(是表示常数计算时间);而在给定值为x的结点后插入一个新结点需要先查找值为x的结点,所以时间复杂度为Ο(n)。
数据结构(C语言版)严蔚敏课后习题答案数据结构(C语言版)严蔚敏课后习题答案一、线性表1. 顺序表顺序表是一种存储结构,它将元素顺序存放在一块连续的存储区域中。
C语言中常用数组来实现顺序表。
以下是一些常见题目的解答:题目1:已知顺序表中存储了n个整数,请编写一个算法,将这个顺序表中的所有负数挑选出来,并将它们按照原有顺序存放在新的顺序表中。
解答:```#include <stdio.h>#define MAX_SIZE 100int main() {int A[MAX_SIZE], neg[MAX_SIZE];int n, i, j = 0;printf("Enter the number of elements: ");scanf("%d", &n);printf("Enter the elements: ");for (i = 0; i < n; i++) {scanf("%d", &A[i]);if (A[i] < 0) {neg[j] = A[i];j++;}}printf("Negative numbers: ");for (i = 0; i < j; i++) {printf("%d ", neg[i]);}return 0;}```题目2:假设顺序表A和B中的元素递增有序排列,编写一个算法合并这两个顺序表,并使合并后的顺序表仍然递增有序。
解答:```#include <stdio.h>#define MAX_SIZE 100int main() {int A[MAX_SIZE], B[MAX_SIZE], C[MAX_SIZE * 2]; int m, n, i, j, k;printf("Enter the number of elements in the first list: "); scanf("%d", &m);printf("Enter the elements in increasing order: ");for (i = 0; i < m; i++) {scanf("%d", &A[i]);C[i] = A[i];}printf("Enter the number of elements in the second list: "); scanf("%d", &n);printf("Enter the elements in increasing order: ");for (i = 0; i < n; i++) {scanf("%d", &B[i]);C[m + i] = B[i];}// Merge A and B into Ci = j = k = 0;while (i < m && j < n) { if (A[i] < B[j]) {C[k] = A[i];i++;} else {C[k] = B[j];j++;}k++;}while (i < m) {C[k] = A[i];i++;k++;}while (j < n) {C[k] = B[j];j++;k++;}printf("Merged list in increasing order: ");for (i = 0; i < m + n; i++) {printf("%d ", C[i]);}return 0;}```2. 链表链表是一种动态的数据结构,它通过结点之间的指针联系起来。
二年级数学填空训练题100道一、题目1. 在数位顺序表中,从右边起第一位是()位,第二位是()位。
解析:根据数位顺序表的基础知识,从右边起第一位是个位,第二位是十位。
2. 10个一是(),10个十是()。
解析:10个一就是10×1 = 10;10个十就是10×10 = 100。
3. 与39相邻的两个数是()和()。
解析:相邻的数就是比它小1和比它大1的数,39 - 1 = 38,39+1 = 40。
4. 56里面有()个十和()个一。
解析:56的十位是5,表示5个十;个位是6,表示6个一。
5. 一个数个位上是8,十位上是4,这个数是()。
解析:按照数位顺序,十位是4表示4个十即40,个位是8表示8个一,这个数就是40+8 = 48。
6. 比30多6的数是()。
解析:求比一个数多几的数用加法,30+6 = 36。
7. 45比()少5。
解析:45比一个数少5,那么这个数就比45多5,45+5 = 50。
8. 在78、80、87中,最接近85的数是()。
解析:分别计算这几个数与85的差值,|78 - 85|=7,|80 - 85| = 5,|87 - 85|=2,差值最小的就是最接近的,所以是87。
9. 一个加数是25,另一个加数是30,和是()。
解析:根据加法的定义,加数+加数=和,25+30 = 55。
10. 被减数是70,减数是40,差是()。
解析:根据减法的定义,被减数 - 减数=差,70 - 40 = 30。
11. 最大的一位数是(),最小的两位数是()。
解析:最大的一位数是9,最小的两位数是10。
12. 分针从12走到3,走了()分钟。
解析:分针走一大格是5分钟,从12走到3走了3大格,5×3 = 15分钟。
13. 时针从3走到7,走了()小时。
解析:时针走一大格是1小时,从3走到7走了4大格,所以走了4小时。
14. 4个5相加的和是()。
解析:4个5相加可以写成5+5+5+5 = 20,也可以用乘法5×4 = 20。
人教版小学四年级数学上册第一单元课时练习题(含答案)亿以内的计数单位及数位顺序表一、填一填。
1.xxxxxxxx9是一个九位数,其中“3”在亿位上,表示3,“2”在百万位上,表示xxxxxxx,“8”在千位上,表示8000.2.在数位顺序表中,从右边起第六位是十万位,百万位在第六位,相邻的两个计数单位的进率是10倍。
二、我来当XXX:对的打“√”,错的打“×”。
1.√万级包括的计数单位有万、十万、百万和千万。
2.×在48后面添上八个得到.3.×一(个)、十、百、千、万、十万、百万……都是数位。
4.√由八十、八十万和八十亿组成的数为xxxxxxxx0.三、左挑右选出真知——选出正确答案的序号填在()里。
1.千位、万位、十万位、百万位是四个(B、位数)。
2.(A、万级)是计数单位,(C、百位)是数位。
亿以内数的读法一、填一填。
1.第六次全国人口普查广东省人口最多,达到xxxxxxxx2人,读作十亿四千三百零三万一千一百三十二。
2.xxxxxxx读作七百二十万。
3.3.4.8,和四个,组成一个不读零的数是348,组成一个读三个零的数是xxxxxxx。
4.xxxxxxx是由3个(百万)、4个(千)和8个(百)组成的,这个数读作三百四十万零八百。
二、左挑右选出真知——选出正确答案的序号填在()里。
1.下面各数中,一个零都不读的是(B、xxxxxxx)。
2.下面各数中,读零最多的是(C、xxxxxxx)。
3.在下面各数中,一个零也不读的是(A、xxxxxxx)。
4.下面各数中,读两个零的是(B、xxxxxxx)。
三、火眼金睛辨真伪:对的在(√),错的打(×)。
1.×读数时读几个零,写数时就写几个零。
参考答案:亿以内的计数单位及数位顺序表一、填一填。
1.xxxxxxxx9是一个九位数,其中“3”在亿位上,表示3,“2”在百万位上,表示xxxxxxx,“8”在千位上,表示8000.2.在数位顺序表中,从右边起第六位是十万位,百万位在第六位,相邻的两个计数单位的进率是10倍。
判断:1.线性表的逻辑顺序与存储顺序总是一致的。
F2.顺序存储的线性表可以按序号随机存取。
F3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。
F4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
T 6.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
T1.单链表中,增加一个头结点的目的是为了(C)。
(A) 使单链表至少有一个结点(B)标识表结点中首结点的位置(C)方便运算的实现(D) 说明单链表是线性表的链式存储2.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
(A) 单链表(B) 仅有头指针的单循环链表(C) 双链表(D) 仅有尾指针的单循环链表3.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省运算时间()。
(A) 单链表(B) 顺序表(C) 双链表(D) 单循环链表1. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A. 不确定B. n-i+1C. iD. n-i2. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A. i-j-1B. i-jC. j-i+1D. 不确定的3. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi 是( )。
A. iB. n-iC. n-i+1D. 不确定4. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 61. 循环队列存储在数组A[0..m]中,则入队时的操作()。
完整程序设计1. 在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name)、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。
(3分)(2)删除:给定职工号,删除该职工的信息。
(6分)(3)修改:对职称为“教授”的职工工资加100。
(4分)(4)在显示器(屏幕)上显示所有职工的各项信息。
(3分)(5)主程序以菜单的方式调用以上功能。
(4分)元素类型及顺序表类型定义如下:typedef struct{ char no[8],name[10],pro[6];float sal;} DataType;typedef struct{ DataType data[MAXLEN+1];int len;}SeqList;2.图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:(1)初始化:录入现有的所有图书的四项信息。
(3分)(2)借书:每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。
(4分)(3)价值估算:统计库中所有书的价钱。
价钱为所有书的单价乘以库存量的累加和。
(4分)(4)显示:显示图书管所有藏书信息。
(3分)(5)主程序以菜单的方式调用以上功能。
(4分)元素类型及顺序表类型定义2分。
3.设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数:(1)录入顺序表中所有元素的值。
(3分)(2)将顺序表L1,L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。
(8分)(3)输出顺序表中元素的值。
(3分)主函数通过调用以上函数实现两个表的合并并显示合并结果。
(4分)4.有一个职工基本信息管理,职工信息包含:职工号、姓名、性别;编写完整程序,实现如下功能:(1)录入函数input:从键盘读入职工信息。
(3分)(2)删除函数delete:给定职工号,删除该职工的信息。
(5分)(3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。
(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。
5.有一个学生信息包含:学号no〈主关键字〉;姓名name;英语成绩score。
定义学生信息类型DataType及顺序表类型SeqList;(1)录入函数input:从键盘读入学生信息。
(3分)(2)查找函数search:任意给定一个学号,查找其英语成绩,将其成绩通过函数返回,若找不到,返回-1。
(5分)(3)插入函数insert:假定表中学生信息按学号升序排列,任意给定一学生信息,使得插入后依然有序。
(6分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。
6. 设有一个超市的库存情况如下表1所示:表1 超市商品信息编写完整程序实现:(1) 从键盘输入货物信息并将其放在顺序表中。
(4分)。
(2)假定商品信息按货号升序存放,任意插入一商品信息,要求按货号有序插入到表中。
(6分)(3)任意给定一个商品编号,查找其商品名称、价格和库存量,如果存在该商品输出并返回1,否则返回0。
(4分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。
7.有一个房产信息管理系统,房产信息包含:门牌号、户主、电话号码、面积。
编程实现如下功能(要求用顺序表存储):(1) 编写一个初始化函数input:从键盘读入房产基本信息。
(3分)(2) 编写一个取暖费用计算函数cost:任意给定一门牌号,根据门牌号进行查询,找到时,返回应缴纳取暖费,否则返回0,并且给出提示信息。
计算公式为:每户应缴纳费用=面积*4.5元/m2。
(4分)(3)编写一排序函数sort:按门牌号升序排列。
(4分)(4)编写一个函数output:输出所有面积低于90平方米住户的名称。
(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。
8.有一个学生信息包含:学号no〈主关键字〉;姓名name;英语成绩english,计算机成绩comp,数学成绩math。
定义学生信息类型DataType及顺序表类型SeqList;(1)录入基本信息函数input:从键盘读入学生姓名、学号。
(3分)(2)录入成绩inp_score:给定课程名称,录入所有人本门课的成绩。
(3分)(3) 删除函数del:假定表中学生信息学号升序排列,任意给定一学生学号,删除该学生信息,正常删除返回1,否则返回0。
(6分)(4)输出函数output:输出所有人的信息。
(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数4分。
9.设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price)编程实现以下功能:(1)货物信息录入:按货号有序输入学生信息。
(3分)(2)进货管理:任意输入一个货物信息,在表中查找该货物,若存在此货物,则将该货物的数量加到表中货物数量中;若不存在该货物,则将该货物信息按照货物号有序插入到表中。
(10分)(3)货物信息输出:输出所有货物的信息。
(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。
10.设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price)编程实现以下功能:(1)货物信息录入:按货号有序输入货物信息。
(3分)(2)出货管理:函数返回值为购买该货物的金额。
任意输入一个货物信息x,在表中查找该货物,若存在此货物且库存量大于等于x的数量,则将表中货物的库存量减去x的数量,计算出需支付的金额并返回;若库存量不足,则给出相应的提示并返回0。
若不存在该货物,返回-1。
(10分)(3)货物信息输出:输出所有货物的信息。
(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。
11. 有一自来水公司水费缴费系统中,数据信息包括:用户名称、编号、用水量、水费、缴费情况(缴清,未缴),请定义用户信息数据类型及顺序表类型并设计如下函数:函数1:输入所有用户的名称,编号,用水量,用户名为”???”作为结束符。
每个用户的水费通过公式:水费=用水量*0.59计算得出。
用户的缴费情况都设为未缴。
(4分)函数2:输入用户编号,查找到该用户信息并将该用户的缴费情况都设为缴清。
(4分)函数3:设计一个排序函数,将元素信息按编号有序排列。
(4分)函数4:输出所有的未缴费的用户名称。
(3分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。
12. 设有一个超市商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price)编程实现以下功能:(1)货物信息录入:输入一批货物信息,货号为“000”时结束。
(3分)(2)购物管理:输入若干货物货号、数量(即客户所购买的货物信息),货号为“000”时结束,输出所购买的每个货物货号、名称、数量、单价、金额(单价通过查找得到,金额=单价×数量);最后输出总的价格。
(10分)(3)货物信息输出:输出所有货物的信息。
(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。
13.学生运动会分数统计,学生信息包括班级、姓名、编码、项目名称、名次、成绩;每个人最多可以参加三个项目;编程实现以下功能:(1)输入所有人的班级、姓名、编码、项目名称,成绩初始化为0。
(3分)(2)输入某人的编码、项目名称、名次,成绩根据名次计算得出。
第1名得5分,第2名得4分,第3名得3分,第4到6名得1分。
修改该学生对应项目的成绩。
(6分)(3)将每个人的成绩汇总到自己的班级中。
假设只有5个班级,网络、软件、计算机、自动化、电子工程;成绩可以放在数组int s[5]中,s[0]放网络的成绩,s[1]放计算机的成绩,s[2]放软件的成绩,s[3]放自动化的成绩,s[4]放电子工程的成绩,统计结束后,输出统计结果。
(5分)(4)输出所有学生班级、姓名以及三个项目的总成绩。
(2分)元素类型定义如下:typedef struct{ char banji[10],xm[ 50]; /*banji表示班级,xm表示学生姓名*/int bianma; /*bianma表示运动员的号码*/char xmmch[3][20]; /*xmmch表示项目名称,最多三个项目*/int chji[3]; /*chji表示三个项目对应的成绩*/} DataType;若有DataType x,则x. xmmch[0]表示第一个项目的名称,x. xmmch[1] 表示第二个项目的名称; x. chji[1]表示第二个项目的成绩。
顺序表类型定义如下:typedef struct{ DataType data[MAXLEN+1];int len;}SeqList;若有SeqList *L;L->data[1]. xmmch[1]表示第一个学生的第二个项目名称,L->data[1].chji[1] 表示第一个学生的第二个项目的成绩。
主函数以菜单形式调用以上功能,主函数4分。
14.学生考勤管理。
学生信息包括:姓名、学号、考勤情况(迟到、旷课、按时上课),成绩及本次已经是第几次考勤。
每个人有20次考勤;编程实现以下功能:(1)学生基本信息录入及初始化:输入所有学生的姓名、学号,将每个人的考勤成绩置0,将考勤次数也置0。
(3分)(2)输入考勤情况:每次上课,输入本次考勤,从第一个人开始,依次输入每个人的考勤。
(4分)(3)计算考勤成绩:迟到得0.5分,旷课得0分,正常上课得1分,计算每个人的考勤成绩。
(6分)(4)输出所有人的信息。
(2分)主函数以菜单形式调用以上功能,类型定义2分,主函数3分。
元素类型定义如下:typedef struct{ char name[10]; /*name表示学生姓名*/char no[12]; /*no表示学号*/char kaoqin[20]; /*kaoqin表示20次的考勤,q---缺课,c---迟到,k---旷课*/int k; /*k表示已经考勤到第几次,初始化时将其置为0*/int chji; /*chji表示考勤成绩*/} DataType;若有DataType x,则x. kaoqin[2]表示x的第三次考勤。
15.有一个职工基本信息管理,职工信息包含:职工号、姓名、职称、工资;编写完整程序,实现如下功能:(1)录入函数input:从键盘读入职工信息。
(3分)(2)修改函数modify:给定职工号,查找该职工,若找到修改其信息,若找不到,给出错误提示。