当前位置: 首页 > news >正文

PTA:C课程设计(7)

山东大学(威海)2022级大一下C习题集(7)

  • 函数题
    • 7-6-1 递增的整数序列链表的插入
    • 7-6-2 查找学生链表
    • 7-6-3 统计专业人数
    • 7-6-4 建立学生信息链表
  • 编程题
    • 7-7-1 查找书籍
    • 7-7-2 找出总分最高的学生

函数题

7-6-1 递增的整数序列链表的插入

接口:

List Insert( List L, ElementType X );

要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。
其中List结构定义如下:

typedef struct Node *PtrToNode;
struct Node {ElementType Data; /* 存储结点数据 */PtrToNode   Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */

L是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Insert要将X插入L,并保持该序列的有序性,返回插入后的链表头指针。

List Insert( List L, ElementType X )
{List cur = L;List tmp = (List)malloc(sizeof(struct Node));tmp->Data = X;while(cur->Next&& cur->Next->Data < X){cur = cur->Next;}tmp->Next = cur->Next;cur->Next = tmp;return L;
}

7-6-2 查找学生链表

学生信息链表结点定义如下:

typedef struct List{int sno;    char sname[10];List *next;
}; 

需要创建的函数包括:
创建学生信息链表函数:CreateList;
查找学生信息链表函数:Find。

接口:

List * CreateList();  //键盘输入若干学生学号和姓名,学号与姓名以空格符间隔,当输入的学号为-1时,输入结束,创建学生信息链表函数,返回学生链表的头指针。
List * Find(List *head, int no)  //在学生信息链表(头指针为head)中查询学号为no的学生,返回该学生结点的指针。

实现:

//键盘输入若干学生学号和姓名,学号与姓名以空格符间隔,当输入的学号为-1时,输入结束,
//创建学生信息链表函数,返回学生链表的头指针。
List* BuyList(int sno)
{List* newnode = (List*)malloc(sizeof(struct List));newnode->sno = sno;newnode->next = NULL;return newnode;
}List * CreateList()
{List *head, *tail;int id;char sname[10] = {0};tail = head = (List*)malloc(sizeof(List));head->next = NULL;scanf("%d", &id);while(id != -1){List* t = BuyList(id);scanf("%s",t->sname);scanf("%d",&id);tail->next = t;tail = t;}scanf("%s",sname);return head;
}//在学生信息链表(头指针为head)中查询学号为no的学生,返回该学生结点的指针。
List * Find(List *head, int no)
{List* cur = head->next;while(cur){if(cur->sno == no)return cur;cur = cur->next;}return cur;
}

7-6-3 统计专业人数

实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:

struct ListNode {char code[8];struct ListNode *next;
};

这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02

接口:

int countcs( struct ListNode *head );

其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。

实现:

int countcs( struct ListNode *head )
{if(head == NULL)return 0;struct ListNode *cur = head;int cnt = 0;while(cur){if(cur->code[1] == '0' && cur->code[2] == '2')cnt++;cur = cur->next;}return cnt;
}

7-6-4 建立学生信息链表

实现一个将输入的学生成绩组织成单向链表的简单函数。

接口:

void input();

该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:

struct stud_node {int              num;      /*学号*/char             name[20]; /*姓名*/int              score;    /*成绩*/struct stud_node *next;    /*指向下个结点的指针*/
};

单向链表的头尾指针保存在全局变量headtail中。
输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。

实现:

struct stud_node* Buynode()
{struct stud_node*node = (struct stud_node*)malloc(sizeof(struct stud_node));node->next = NULL;return node;
}void input()
{struct stud_node* cur = Buynode();scanf("%d", &cur->num);while (cur->num != 0){if (head == NULL){scanf("%s", cur->name);scanf("%d", &cur->score);head = tail = cur;}else{scanf("%s", cur->name);scanf("%d", &cur->score);tail->next = cur;tail = tail->next;}cur = Buynode();scanf("%d", &cur->num);}
}

编程题

7-7-1 查找书籍

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>typedef struct book {double price;char name[40];struct book* next;
}book;book* Buynode()
{book* node = (book*)malloc(sizeof(book));node->next = NULL;return node;
}int main()
{//输入第一行给出正整数n(<10)int n = 0;scanf("%d", &n);getchar();book* head, * cur;head = cur = Buynode();gets(cur->name);scanf("%lf", &cur->price);while (--n)//n本书{getchar();book* node = Buynode();gets(node->name);scanf("%lf", &node->price);cur->next = node;cur = cur->next;}cur = head;double max,min;max = min = cur->price;
//选出价格最高、最低while (cur){if (cur->price > max)max = cur->price;if (cur->price < min)min = cur->price;cur = cur->next;}cur = head;while (cur->price != max){cur = cur->next;}printf("%.2lf, %s\n", cur->price, cur->name);cur = head;while (cur->price != min){cur = cur->next;}printf("%.2lf, %s\n", cur->price, cur->name);return 0;
}

7-7-2 找出总分最高的学生

在这里插入图片描述


#include <stdio.h>
#include <stdlib.h>typedef struct stu {char num[9];char name[15];int s1;int s2;int s3;struct stu* next;
}stu;stu* Buynode()
{stu* node = (stu*)malloc(sizeof(stu));node->next = NULL;return node;
}int main()
{int n = 0;scanf("%d", &n);getchar();stu* cur,* head;cur = head = Buynode();scanf("%s",head->num);scanf("%s",head->name);scanf("%d%d%d", &head->s1, &head->s2, &head->s3);while (--n){getchar();stu* node = Buynode();scanf("%s",node->num);scanf("%s",node->name);scanf("%d%d%d", &node->s1, &node->s2, &node->s3);cur->next = node;cur = cur->next;}cur = head;int max = cur->s1 + cur->s2 + cur->s3;while (cur){if ((cur->s1 + cur->s2 + cur->s3) > max)max = cur->s1 + cur->s2 + cur->s3;cur = cur->next;}cur = head;while ((cur->s1 + cur->s2 + cur->s3) != max){cur = cur->next;}printf("%s %s %d", cur->name, cur->num, cur->s1 + cur->s2 + cur->s3);return 0;
}

相关文章:

PTA:C课程设计(7)

山东大学&#xff08;威海&#xff09;2022级大一下C习题集&#xff08;7&#xff09; 函数题7-6-1 递增的整数序列链表的插入7-6-2 查找学生链表7-6-3 统计专业人数7-6-4 建立学生信息链表 编程题7-7-1 查找书籍7-7-2 找出总分最高的学生 函数题 7-6-1 递增的整数序列链表的插…...

POSTGRESQL LINUX 与 PG有关的内存参释义

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…...

Docker的常见命令

前言:使用Docker得学会的几个常见命令 常见命令前置学习: docker --help这个命令必须得会因为,很多命令是记不住的,得使用他们的官方help下面是一些实例 docker load --help常见命令集合: 一: docker images #查看全部镜像 docker rmi #删除某个镜像(例如:docker rmi redis…...

详细介绍性能测试的方法(含文档)

性能测试是软件测试中的一个重要环节&#xff0c;其目的是评估系统在不同负荷下的性能表现&#xff0c;包括响应时间、吞吐量、并发数等指标。通常可以通过以下几种方法进行性能测试&#xff1a; 1、负载测试 负载测试是模拟多用户同时访问系统&#xff0c;测试系统在高并发、…...

深入剖析 Qt QHash :原理、应用与技巧

目录标题 引言QHash 基础用法基础用法示例基础用法综合示例 QHash 的高级用法迭代器&#xff1a;遍历 QHash 中的元素&#xff08;Iterators: Traversing Elements in QHash &#xff09;QHash和其他容器的对比QHash 和 std::unordered\_map QHash的底层原理和内存管理QHash 的…...

技术分享 | MySQL级联复制下进行大表的字段扩容

作者&#xff1a;雷文霆 爱可生华东交付服务部 DBA 成员&#xff0c;主要负责Mysql故障处理及相关技术支持。爱好看书&#xff0c;电影。座右铭&#xff0c;每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;…...

工业互联网业务知识

文章目录 背景第四次工业革命带动制造业产业升级主要工业大国不同路径 架构ISA95体系架构变革趋势基础通用架构数据采集平台 工业互联网应用软件工业互联网全要素连接产品视角&#xff1a;产销服务企业的业务流程企业数字化改造&#xff1a;车间级全要素连接 工业互联网的产品体…...

jsp+java自行车租赁租借和买卖系统

自行车租借和买卖系统 系统包括四个模块。1&#xff0c;系统模块&#xff0c;2&#xff0c;车辆管理模块&#xff0c;3.租借车管理模块&#xff0c;4&#xff0c;买卖车管理模块。 1&#xff0c;系统模块包括: 连接数据库&#xff0c;工作人员登录&#xff0c;退出。 2&#…...

Python3 字符串

Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( 或 " )来创建字符串。 创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a; var1 Hello World! var2 "Runoob" Python 访问字符串中的值 Python 不支持单字符…...

Day943.持续集成流水线 -系统重构实战

持续集成流水线 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于持续集成流水线的内容。 从团队协作的角度上来看&#xff0c;在版本发布过程中&#xff0c;经常出现测试依赖开发手工生成制品、版本发布也从开发本地出版本的问题。而且项目架构如果从单体演进至组件…...

How to use CCS to debug a running M4F core that was started by Linux?

参考FAQ:AM62x & AM64x: How to use CCS to debug a running M4F core that was started by Linux? 问题记录&#xff1a; 1.使用SD卡启动模式&#xff0c;板上运行Linux。 当Linux系统启动后&#xff0c;9表示M4F core&#xff1a; am64xx-evm login: root rootam64xx…...

216、组合总数III

难度&#xff1a;中等 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7…...

简单的重装系统教程

郁闷&#xff0c;最近电脑一直蓝屏重启&#xff0c;用 2 分钟就蓝屏一次&#xff0c;遂产生重装系统的想法。 准备 U盘(8G或以上) PE 工具&#xff1a; 微PE工具箱快速指引 | 微PE优盘使用说明书 (wepe.com.cn) 系统镜像&#xff1a; 官网 Windows 10 官网 Windows 11 M…...

机器学习---集成学习报告

1.原理以及举例 1.1原理 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习策略&#xff0c;它通过结合多个基学习器&#xff08;base learners&#xff09;的预测来提高模型的性能。集成学习的目标是创建一个比单个基学习器更准确、更稳定的最终预测模型。这…...

教你如何将PDF文件转换成PPT演示文稿

在工作和学习中&#xff0c;我们可能需要将一些PDF文件转换成PPT演示文稿&#xff0c;以便于更好地展示和分享。虽然PPT和PDF是两种不同的文档格式&#xff0c;但是我们可以使用一些专业的软件或在线工具来实现这种转换。下面就让我们来教你如何将PDF文件转换成PPT演示文稿。 …...

涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov5/Yolov7,内存更小、效率更高,秒杀Adam(W)

1.Lion优化器介绍 论文:https://arxiv.org/abs/2302.06675 代码:automl/lion at master google/automl GitHub 1.1 简单、内存高效、运行速度更快 1)与 AdamW 和各种自适应优化器需要同时保存一阶和二阶矩相比,Lion 只需要动量,将额外的内存占用减半; 2)由于 Lion…...

Windows GPU版本的深度学习环境安装

本文记录了cuda、cuDNN的安装配置。 参考文章&#xff1a; cuda-installation-guide-microsoft-windows 12.1 documentation Installation Guide :: NVIDIA cuDNN Documentation 一、cuda安装 注意事项&#xff1a; 1、cuda安装最重要的是查看自己应该安装的版本。 表格…...

C语言实践——通讯录(3)(文件版)

首先感谢上一篇博客的大佬们的点赞&#xff0c;非常感谢&#xff01;&#xff01;&#xff01; 目录 前言 一、需要添加的功能 1.增加保存数据函数——可以保存数据到文件中 主要逻辑&#xff1a; 注意事项&#xff1a; 代码实现&#xff1a; 2.修改初始化函数——新…...

GPT撑腰,微软再战谷歌 | 大厂集体抢滩ChatGPT:谁真的有实力,谁在试点商业化?

国内互联网大厂已经很久没有这样的盛况了&#xff01; 在各自领域成长为头部的互联网大厂们&#xff0c;近年来正在向“自留地”的纵深发展&#xff0c;正面交锋的机会并不多。直到大洋彼岸传来GPT的声音后&#xff0c;一下子抓住了大厂们的G点&#xff0c;他们仿佛听到了新一轮…...

【消息队列】细说Kafka消费者的分区分配和重平衡

消费方式 我们直到在性能设计中异步模式&#xff0c;一般要么是采用pull&#xff0c;要么采用push。而两种方式各有优缺点。 pull &#xff1a;说白了就是通过消费端进行主动拉去数据&#xff0c;会根据自身系统处理能力去获取消息&#xff0c;上有Broker系统无需关注消费端的…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...