成绩单
题目描述一份班级成绩表存储在一个TXT文件中,每行由学号、姓名、数学成绩、英语成绩、C语言成绩组成,如下: 192000101 张天天 86 76 85 192000102 李笑笑 91 88 76 … 192000130 王维维 88 75 91 编制一个程序,完成下列任务。 (1)构建一个结构体数组,来存储这个成绩表;(4分) (2)能够正确的从文件读取数据到该结构体数组;(5分) (3)能够将成绩表输出到屏幕;(4分) (4)能输出总成绩进行排序并输出排序后的结果;(7分) (5)程序架构良好、代码清晰、能够全面正确运行;(5分) 源码 单文件版 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <stdio.h>struct student { long number; char name[10]; int math; int ...
Leetcode0234
回文链表题目描述给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 12输入:head = [1,2,2,1]输出:true 示例 2: 12输入:head = [1,2]输出:false 提示: 链表中节点数目在范围[1, 105] 内 0 <= Node.val <= 9 基本思路法一:复制到数组小生不才,链表使用不够熟练,先用复制链表到数组的笨方法做出来一遍。 12345678910111213141516171819202122232425262728293031323334353637383940414243/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool isPalindrome(struct ListNode* head) { struct ListNo ...
Leetcode0203
移除链表元素题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 12输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5] 示例 2: 12输入:head = [], val = 1输出:[] 示例 3: 12输入:head = [7,7,7,7], val = 7输出:[] 提示: 列表中的节点数目在范围 [0, 104] 内 1 <= Node.val <= 50 0 <= val <= 50 基本思路刚开始思路非常简单:检测到下一个节点是val,删除该节点。写出了下面这段蠢到家的代码: 12345678910111213141516171819/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct L ...
Leetcode0206
反转链表题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 12输入:head = [1,2,3,4,5]输出:[5,4,3,2,1] 示例 2: 12输入:head = [1,2]输出:[2,1] 示例 3: 12输入:head = []输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 基本思路基本想法是把列表的首尾节点调换,即每一个指针都指向前一个节点。 代码如下: 123456789101112131415161718/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head) { struct ListNode* prev =NULL;//创建一个空头节点 ...
Leetcode83
删除排序链表中的重复元素题目描述给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 12输入:head = [1,1,2]输出:[1,2] 示例 2: 12输入:head = [1,1,2,3,3]输出:[1,2,3] 提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序 排列 基本思路根据题干描述,链表已经按照升序排列,即只需要判断前后两个节点是否相等从而确定删除与否即可。 代码如下: 123456789101112131415161718192021222324/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head) ...
结构体编程
题目描述屎山测试第二趴 123456789101112131415161718192021222324252627282930某校的惯例是在每学期的期末考试之后发放奖学金。发 放的奖学金共有五种,每项奖学金获取的条件分别如下:1) 院士奖学金:期末平均成绩高于 80 分(>80),并且在本学期内发表 1 篇或1 篇以上论文的学生每人均可获得 8000 元;2) 五四奖学金:期末平均成绩高于 85 分(>85),并且班级评议成绩高于 80 分(>80)的学生每人均可获得 4000 元;3) 成绩优秀奖:期末平均成绩高于 90 分(>90)的学生每人均可获得 2000 元;4) 西部奖学金:期末平均成绩高于 85 分(>85)的西部省份学生每人均可获得1000 元;5) 班级贡献奖:班级评议成绩高于 80 分(>80)的学生干部每人均可获得 850元;只要符合上述条件就可获得相应的奖项,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚明的期末平均成绩是 87 分,班级评议成绩 82 分,同时他还是一位学生干部,那么他可以同时获得五 ...
718校内赛技术报告
此篇博客用于记录校内赛的技术细节、踩坑过程和复盘总结。 1.1 红外对管排布见下图: 其中4 5作为循迹灯,其余全部用于路口判断。 1.1.1 循迹利用左右循迹灯实现循迹,使用了PID算法,只使用了P和D,详细说明见2.1。 1.1.2 路口判断逻辑利用1 2 3 0四个红外对管实现对路口的识别。 另外规定ADC的值>1900为完全踩上线,ADC的值小于lowx为完全没踩上线,ADC的值大于lowx+200(需要大些)为正在踩上线。 我们对路口的分类如下: 1.2 机械臂构成:亚克力板,三个MG90S舵机,胶带,热熔胶,夹子,螺丝,螺母。 自由度:3 设计想法:为了便于能量块的夹取和定点投放 2. 软件注:此部分主要内容及解释都在代码注释中 2.1 宏及全局变量12345678910111213141516171819202122232425262728293031323334353637383940414243#include "stm32f10x.h"#include "Delay.h"#include "PWM.h&q ...
LeetCode0498
对角线遍历题目描述给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1: 12输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9] 示例 2: 12输入:mat = [[1,2],[3,4]]输出:[1,2,3,4] 提示: m == mat.length n == mat[i].length 1 <= m, n <= 104 1 <= m * n <= 104 -105 <= mat[i][j] <= 105 基本思路根据题目要求,矩阵按照对角线进行遍历。设矩阵的行数为 m, 矩阵的列数为 n, 我们仔细观察对角线遍历的规律可以得到如下信息: 根据以上观察得出的结论,我们直接模拟遍历所有的对角线即可。 代码实现如下: 123456789101112131415161718192021222324252627282930313233343536373839int* findDiagonalOrder(int** mat, ...
凯撒密码
题目描述凯撒加密算法Caesar 在密码学中,凯撒密码(英语:Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。 凯撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC 当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。 使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:明文:THE ...
LeetCode0238
除自身以外数组的乘积题目描述给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(*n*) 时间复杂度内完成此题。 示例 1: 12输入: nums = [1,2,3,4]输出: [24,12,8,6] 示例 2: 12输入: nums = [-1,1,0,-3,3]输出: [0,0,9,0,0] 提示: 2 <= nums.length <= 105 -30 <= nums[i] <= 30 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内 基本思路刚开始我想得比较简单,认为只需要把所有元素的乘积求出,再在循环里一个个除就好。 12345678910111213141516171819202122#include <stdlib.h>int* productExceptSelf(int* n ...
