
C语言练习题合集
大一下题集
andream7
这个作者很懒,什么都没留下…
展开
-
6-4 找最大字符串 (16分)
本题要求从键盘上输入多个字符串(约定每个串不超过20个字符且没有空格,最多10个字符串),用""作为输入结束的标记(""不作为有效的字符串)。再从所输入的若干字符串中,找出一个最大的串,并输出该串。 如果没有合法字符串,则输出“NO WORD”。 请完成主函数剩余部分以及自定义函数的编写。Count = Input(pStr, str);if (Count == 0) puts("NO WORD");else { Find_max(pStr, Count, &max); pri原创 2020-09-11 11:31:00 · 2243 阅读 · 0 评论 -
6-3 分词并显示 (16分)
程序的功能是:调用Input函数读入一个长度不超过81的字符串,字符串中只含字母和空格,遇到读满或者回车结束读入字符,空格用于分隔单词。请将字符串中用空格分隔的单词在屏幕上输出来。 要求用指针完成函数中各参数的传递与访问,自定义函数头和函数体中不得出现数组下标形式的表示法。void Input ( char *str ) { char x; x = getchar(); int i = 1; while(x != '\n' && i < 81) {原创 2020-09-11 11:02:23 · 3703 阅读 · 4 评论 -
两个有序链表序列的交集 (20分)
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode, *List;void create(List *L) { List head = NULL, p, tail; int x; scanf("%d", &x);原创 2020-09-10 17:52:16 · 1752 阅读 · 0 评论 -
共享后缀的链表 (25分)
有一种存储英文单词的方法,是把单词的所有字母串在一个单链表上。为了节省一点空间,如果有两个单词有同样的后缀,就让它们共享这个后缀。下图给出了单词“loading”和“being”的存储形式。本题要求你找出两个链表的公共后缀。PtrToNode Suffix( List L1, List L2 ) { List p1 = L1->Next; List p2 = L2->Next; List tmp = p1; int len1 = 0, len2 = 0;原创 2020-09-10 17:51:06 · 552 阅读 · 0 评论 -
单链表分段逆转 (25分)
给定一个带头结点的单链表和一个整数K,要求你将链表中的每K个结点做一次逆转。例如给定单链表 1→2→3→4→5→6 和 K=3,你需要将链表改造成 3→2→1→6→5→4;如果 K=4,则应该得到 4→3→2→1→5→6。void K_Reverse( List L, int K ) { List p = L; List q = p->Next; int len = 0; while(q) { q = q->Next; len++原创 2020-09-10 17:50:04 · 1386 阅读 · 0 评论 -
6-19 统计子串在母串出现的次数 (10分)
int fun(char *str,char *substr) { int count = 0; while(*str) { char *str1 = str, *str2 = substr; if (*str1 == *str2) { while(*str2) { if (*str1 != *str2) { break; }原创 2020-09-10 17:48:46 · 1859 阅读 · 0 评论 -
6-21 指定位置输出字符串 (12分)
char *match( char *s, char ch1, char ch2 ) { int i; for (i = 0; *(s+i); i++) { if (*(s+i) == ch1) break; } char *str = s + i; for (int j = i; *(s+j); j++) { printf("%c", *(s+j)); if (*(s+j) == ch2) break; }原创 2020-09-10 17:47:53 · 406 阅读 · 0 评论 -
7-3 选民投票 (10分)
7-3 选民投票 (10分)编程统计候选人的得票数。有若干位候选人(n<=10),候选人姓名从键盘输入(候选人姓名不区分大小写,姓名最长为9个字节),若干位选民,选民每次输入一个得票的候选人的名字(姓名最长为9个字节),若选民输错候选人姓名,则按废票处理。程序自动统计各候选人的得票结果,并按照得票数由高到低的顺序排序。最后输出各选票人得票结果和废票信息。#include <stdio.h>#include <string.h>struct p{ char nam原创 2020-08-31 23:58:16 · 6338 阅读 · 0 评论 -
L1-059 敲笨钟 (20分)
唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。输入格式:输入首先在第一行给出一个不超过 20 的正整数 N。随后 N 行,每行用汉语拼音给出一句古诗词,分上下两半句,用逗号 ,分隔...原创 2020-03-26 17:08:17 · 575 阅读 · 0 评论 -
6-3 分词并排序 (12分)
#include<stdio.h>#include<string.h>void MyGets(char ar1[],int n); void split_sort(char ar1[]); int main(void){ char arr1[100]={0}; MyGets(arr1,100); printf("Valid string:\n");...原创 2020-03-26 01:33:14 · 2078 阅读 · 0 评论 -
有序读入数到数组中并查找数——数组标记法
从键盘读入10个数存放在数组中,要求由小到大输入(允许有相同的数)。如果读入的数比前面的数小,则该数无效,继续读入后面的数据。输入一个待查找的数,要求找出该数是数组中第几个(序号从1开始计算)。如果待查找的数在数组中有多个,返回相同数中最后一个数的位置;如果该数不在数组中,则输出“Not Find!”。输入格式:在一行读入存放到数组中的数,下一行读入要查找的数。输出格式:输出查找的...原创 2020-03-26 17:46:07 · 1496 阅读 · 0 评论 -
学生成绩排序 (23分)+通讯录排序 (25分)
今天晚上又是一次检测,第七周开始工程实践,第八周期末检测,真的好快。有些题还是不太熟练,在这里写一下吧(ノへ ̄、)假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。输入格式:输入一个正整数n(n<50),下面n行...原创 2020-03-25 23:09:42 · 493 阅读 · 0 评论 -
实验9-8 通讯录排序 (20分)
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。...原创 2020-03-22 13:51:13 · 269 阅读 · 0 评论 -
习题3.5 求链表的倒数第m个元素 (20分)
请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。函数接口定义:ElementType Find( List L, int m );L是给定的带头结点的单链表;函数Find要将L的倒数第m个元素返回,并不改变原链表。如果这样的元素不存在,则返回一个错误标志ERROR。裁判测试程序样例:#include <stdio.h&...原创 2020-03-23 19:27:26 · 1629 阅读 · 0 评论 -
实验11-2-9 链表逆置 (20分)
本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。函数接口定义:struct ListNode *reverse( struct ListNode *head );其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回结果链表的头指针。裁判测试程序样例:#include <stdio.h>#include <stdl...原创 2020-03-22 13:12:24 · 722 阅读 · 0 评论 -
实验11-2-8 单链表结点删除 (20分)
链表的建立、删除 与实验11-2-2 学生成绩链表处理 (20分)类似本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数readlist从标准输入读入一系列正整数,按...原创 2020-03-22 13:01:43 · 667 阅读 · 0 评论 -
实验11-2-7 统计专业人数 (15分)
本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。函数接口定义:int countcs( struct ListNode *head );其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。裁判测试程序样例:#include <s...原创 2020-03-22 12:51:09 · 1333 阅读 · 0 评论 -
实验11-2-6 奇数值结点链表 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode **L );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。...原创 2020-03-22 12:41:56 · 805 阅读 · 2 评论 -
链表拼接 (20分)
本题要求实现一个合并两个有序链表的简单函数。函数接口定义:struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返回结果链表的头指针。裁判测试程...原创 2020-03-22 11:56:29 · 4607 阅读 · 2 评论 -
实验11-2-4 删除单链表偶数节点 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。函数接口定义:struct ListNode *createlist();struct ListNode *deleteeven( struct ListNode *head );函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指...原创 2020-03-22 11:27:14 · 1734 阅读 · 2 评论 -
实验11-2-3 逆序数据建立链表 (20分)
本题要求实现一个函数,按输入数据的逆序建立一个链表。函数接口定义:struct ListNode *createlist();函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>s...原创 2020-03-22 11:05:20 · 355 阅读 · 0 评论 -
实验11-2-2 学生成绩链表处理 (20分)
本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:struct stud_node *createlist();struct stud_node *deletelist( struct stud_node *head, int min_score );函数createlis利用scanf从输入中获取学生的信息,将其组织...原创 2020-03-22 10:50:48 · 1290 阅读 · 0 评论 -
建立学生信息链表 (20分)
本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:void input();单向链表的头尾指针保存在全局变量head和tail中。输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>#include <string.h>...原创 2020-03-22 09:56:54 · 12655 阅读 · 1 评论