![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高级程序语言设计
好梦成真Kevin
Never ever give up.
展开
-
子串(大贤者福尔)
大贤者福尔的字符串研究取得了积极的进展,但他现在遇到了一个新的问题,他需要找到一个字符串的所有满足特殊条件的子串。他的问题具体来说是,对一个给定的字符串,按给定的子串大小N进行分割(N不超过字符串的长度),分割点位于依次位于字符串中相邻字符之间,使得最大子串的长度不超过N。同时,把分割后的所有子串依次拼接,就可以恢复为原始字符串。如给定字符串ABCDE,若N为1,则分割的子串为A B C D E;若N为2,根据起始分割点不同,可以有两种分割结果,分别为A BC DE和AB CD E。福尔希望你能够帮他,原创 2021-07-05 19:43:46 · 2244 阅读 · 3 评论 -
巅峰日(大贤者福尔)
大贤者福尔经过长期的研究后发现,人的体力、智商和情商和运气具有周期性,会有高峰和低估,并且呈现出周期性变化的规律。在每一个周期中会有一天是高峰,这一天人会在某个方便表现的非常出色。尽管如此,由于这些周期的长度不一致, 通常情况下几个周期的高峰不会在同一天出现。但大众又都希望哪一天是自己的巅峰日,在这一天中,自己的体力、智商和情商和运气都达到高峰。输入输入数据有若干组,每一组包括两行数据,第一行包括4个正整数,分别为体力、智商和情商和运气的周期,已知最大周期不超过50。第二行包括5个非负整数p,i,e原创 2021-07-04 22:06:07 · 1750 阅读 · 0 评论 -
魔法数(大贤者福尔)
大贤者福尔最近迷上了数学,他研究发现有些神奇的数似乎具有某种魔力。于是他开始研究自然数,发现某个范围内的一些数,经过一定规则运算后的和,等于另一个数按同样规则计算后的值。具体来说,给定不大于N的整数a,b,c,d(1≤a≤b≤c≤d≤N),可能存在关系a^x+b^x+c^x=d^x。福尔想知道在给定的范围N中,有多少数能够满足这种关系?输入输入数据有若干行,每行包括两个整数x, N(2≤x≤3,1≤N≤100)。输出对每组测试数据,先输出样例编号Case c:,c为当前测试样例的组号,从原创 2021-07-04 22:00:29 · 2307 阅读 · 0 评论 -
神奇的等式
大贤者福尔在研究数学问题时,发现有一些自然数能够构成一个形如下式的等式,颇为神奇。. 其中xi (0≤i≤9)为0−9之间的数字,且各不相同。福尔想知道给定N的值时,有多少数能够满足这种关系?输入输入数据有若干行,每行包括单个整数N(2≤N≤79)。输出对每行输入数据,先在单独的行中输出如Case x:的测试样例信息,x为测试样例编号,从1开始。若存在满足条件的数值,则分别按分母递减的顺序依次在独立的行中输出各个等式;若不存在满足条件的数,则在单独的行中输出No such number原创 2021-07-04 21:49:46 · 1536 阅读 · 0 评论 -
乘积(整数最大连续乘积问题)
大贤者福尔的数学研究成绩斐然,影响力越来越大,也有很多人向他请教。最近,有人咨询他一个问题。给定若干个整数S=S1,S2,...,Sn,其中若干个连续的数的最大乘积是多少?福尔觉得这个问题太简单,他想把这个问题作为对你的考验,你能够解出来吗?输入输入数据有若干行,每行包含N(1≤N≤18)个空格分隔的整数S,每个整数Si的范围为−10≤Si≤10。输出对每行输入数据,先在单独的行中输出如Case x: ans from-to的测试样例信息,x为测试样例编号,从1开始,ans为满原创 2021-07-04 21:37:29 · 1596 阅读 · 0 评论 -
A+B III(C语言大数存储)(Version 1.0)
计算两个整数A和B的和。输入输入有若干行,每行为由空格分隔的一对整数A和B,如: 5 12输出输出数据A和B的和。示例输入25 33示例输出58提示A和B可能很大,最大不超过1000位十进制数。[程序代码]#include<stdio.h>#include<string.h>#define MAXSIZE 1003void ReverseOutput(char *Result);void InitResult(cha.原创 2021-07-04 15:48:19 · 937 阅读 · 0 评论 -
判断整数是不是回文数
#include<stdio.h>#include<math.h>#define Yes 1#define No 0typedef short Status;long Reverse(long x);long Cal(long m);Status Judge(long k);int main(){ long x; printf("Please input the value of x : "); scanf("%ld", &x);.原创 2021-06-22 14:07:23 · 138 阅读 · 0 评论 -
三天打渔两天晒网
[题目要求]某人三天打渔两天晒网,假设他从1990年1月1日开始打渔三天,然后晒网两天,请编程回答任意的一天他在打渔还是晒网。A boy works for 3 days while has a 2 days off. If he is working on 1st, Jan, 1990, then for a date entered from the keyboard, please write a program to determine what the boy is doing, worki.原创 2021-06-22 10:39:58 · 1020 阅读 · 0 评论 -
给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出和为目标值 target 的那两个整数, 并返回它们的数组下标
#include<stdio.h>#define MAXSIZE 5#define OK 1#define NotFound -1#define ERROR -2typedef short Status;Status Resolution(short *nums, short Size, short target, short *x, short *y);Status InitArray(short *nums, short Size);Status Traverse(shor.原创 2021-06-21 12:12:58 · 1436 阅读 · 0 评论 -
C语言中的结构体
在C语言中, 为什么要引入结构体类型呢, 首先来看这样一个问题.原创 2021-06-15 18:03:49 · 125 阅读 · 0 评论 -
文件的随机读写与文件缓冲
1. 如何实现文件的随机读写: 2. 文件定位的三个函数: 接着我们重点学习fseek函数的功能及使用方法.3. 文件缓冲: 在程序中我们并不能看到文件缓冲的存在, 这项任务通常由操作系统来完成. 我们知道, 硬盘是一个机械性的装置, 它需要通过机械臂在硬盘上寻址而找到对应的数据, 这样就导致硬盘数据访问的速度较慢, 而内存的访问速度是比较快的, 这也就出现硬盘、内存访问速度不匹配的问题. 在我们操作文件的实际过程中, 写数据时...原创 2021-06-11 18:46:10 · 230 阅读 · 2 评论 -
格式化数据的文件读写与内存数据块的文件读写
我们继续学习另一种读写文件的方式——按数据块读写文件.原创 2021-06-11 16:25:12 · 293 阅读 · 1 评论 -
按行读写文件
t原创 2021-06-10 17:11:43 · 140 阅读 · 0 评论 -
fgetc()、fputc()函数的使用实例
#include<stdio.h>#include<stdlib.h>int main(){ FILE *fp;/* 定义文件指针fp */ char ch; if((fp = fopen("demo.txt", "w")) == NULL) { /* 打开文件时发生错误 */ printf("Failure to open demo.txt!\n"); exit(0); } ...原创 2021-06-10 14:47:30 · 198 阅读 · 0 评论 -
删除字符串s中所出现的与变量c相同的字符
#include<stdio.h>void Squeeze(char *s, char c);int main(){ char a[80], c, *s; s = a; gets(a); scanf("%c",&c); Squeeze(s, c); printf("%s\n", s); return 0;}/* */void Squeeze(char *s, char c){ int i, j; fo.原创 2021-06-08 21:15:28 · 1657 阅读 · 0 评论 -
文件的打开与关闭
程序通过文件打开操作将流与设备联系起来, 文件打开后, 可在程序和文件之间交换数据. 通常有这样几个步骤: 在上述操作过程中, 文件指针的作用是不可或缺的. 下面我们来看一下fopen函数的函数原型. 由于文件的打开不是一定会成功的, 所以在文件打开后一定要检查是否打开成功. 如果一个文件没有成功地打开, 即fopen()函数返回NULL, 此时我们继续对文件指针fp执行操作, 此时程序一定会出错. 为了避免这种错误的发生, 在使...原创 2021-06-06 21:12:18 · 84 阅读 · 0 评论 -
二进制文件、文本文件和标准输入输出流
计算机中有内部存储器和外部存储器, 在买电脑时我们常常纠结于选择更大容量的内存还是选择更大容量的硬盘: 更大的nei'run原创 2021-06-06 11:36:01 · 147 阅读 · 0 评论 -
字符串处理函数
常用的字符串操作有如下四种.原创 2021-06-04 20:55:16 · 99 阅读 · 0 评论 -
一元多项式求和
#include<stdio.h>#include<stdlib.h>struct Node{ double ceof; /* 系数 */ long exp; /* 指数 */ struct Node *next;};/* */void InitHeadNode(struct Node* &, struct Node* &);void InsertNode(struct Node* &, double, short);v...原创 2021-06-04 12:19:07 · 254 阅读 · 0 评论 -
字符串的表示与存储
本篇博文将和大家一起学习字符串的表示与存储.原创 2021-06-03 20:16:30 · 351 阅读 · 0 评论 -
字符串的输入和输出
这一篇博客我们一起来学习字符串的输入和输出. 在定义一个字符数组时, 一定要保证数组的长度比原创 2021-06-02 21:14:07 · 2842 阅读 · 0 评论 -
常见的内存错误及其对策(※)
指针是C语言最强大的特性之一, 但也是最危险的特性之一: 误用指针导致的错误通常难以定位, 且后果严重. 常见的内存异常错误主要有两类, 一类是非法内存访问错误, 即代码访问了不该访问的内存地址; 另外一类是由于持续的内存泄漏导致系统内存不足, 编译器往往不易发现这类错误, 在程序运行时才能捕捉到:这类错误通常是时隐时现的, 这就进一步增加了对这类错误的排错难度. 下面我们就来介绍一些常见的内存错误及其解决对策. 前四种错误都属于内存非法访问错误, 即代码访问了不该访问的内存地...原创 2021-06-01 10:14:28 · 1067 阅读 · 0 评论 -
动态数组的特点及其基本操作(代码实现)
1. 动态数组 vs 静态数组:2. 动态数组信息的确定:3. 动态数组的基本操作: 在下述程序中, 给出了动态数组最基本的几种操作. 由于此程序的目的在于帮助大家理解动态数组的基本操作流程和思想, 所以对用户输入数据的合法性没有过多的检测. 在Grow函数中, 我们重新申请了一块堆空间, 而没有直接在原有堆空间的基础上继续扩展, 这是因为很难确保在原有空间之后恰有一块合适的空间还没被占用. 另外, 新的堆空间内是空白的, 系统不会自动将原有数据拷贝过来, 这就需要我们...原创 2021-05-24 15:35:03 · 249 阅读 · 0 评论 -
C程序的内存映像与动态分配函数
1. C程序中变量的内存分配方式:2. 栈和堆的区别:[注] 栈对数据的操作形式为"后进先出", 即先进栈的元素后出栈: 随着程序的执行, 栈由高地址端向低地址端扩展, 可以说栈是"向下生长"的. 堆和栈不同, 当我们试图在堆中申请一块空间时, 系统从堆的低地址端开始查找, 当找到可以容纳下这块数据的存储空间后, 就将这片存储空间标记为"已占用", 并将数据存储于其中. 考虑下面的这种情况, 在程序开始时堆区无数据占用, 这时我们需要将大小为2bytes的数据dat...原创 2021-05-24 08:27:44 · 88 阅读 · 0 评论 -
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B和C, 其中B表的结点为A表中值<0的结点, 而C表的结点为A表中值≥0的结点(链表A中的元素为整数, 要求B、C表利用A表的结点)
#include<stdio.h>#include<stdlib.h>short InitHeadNode(struct Node* &, struct Node* &);short RearInsert(struct Node* &, struct Node* &, short);short GetListLength(struct Node* &);void Classify(struct Node* &, struct.原创 2021-05-22 21:34:51 · 1540 阅读 · 0 评论 -
已知两个链表A和B分别表示两个集合, 其元素递增排列. 设计一个算法, 求出A与B的交集, 并存放在C链表中
#include<stdio.h>#include<stdlib.h>short InitHeadNode(struct Node* &, struct Node* &);short RearInsert(struct Node* &, struct Node* &, short);short GetListLength(struct Node* &);short IsElemIn(struct Node* &, short.原创 2021-05-22 20:55:51 · 3620 阅读 · 0 评论 -
已知两个链表A和B分别表示两个集合, 其元素递增排列. 设计算法求出两个集合A和B的差集(即仅由在A中出现而不在B中出现的元素所构成的集合), 结果存放在链表A中, 同时返回所求差集中元素的个数
#include<stdio.h>#include<stdlib.h>short InitHeadNode(struct Node* &, struct Node* &);short RearInsert(struct Node* &, struct Node* &, short);short GetListLength(struct Node* &);short IsElemIn(struct Node* &, short.原创 2021-05-22 20:37:06 · 3191 阅读 · 1 评论 -
已知两个链表A和B分别表示两个集合, 其元素递增排列. 设计一个算法, 求出A与B的交集, 并存放在A链表中
#include<stdio.h>#include<stdlib.h>short InitHeadNode(struct Node* &, struct Node* &);short RearInsert(struct Node* &, struct Node* &, short);short GetListLength(struct Node* &);short IsElemIn(struct Node* &, short.原创 2021-05-22 20:16:44 · 3708 阅读 · 0 评论 -
删除单链表中大于mink且小于maxk的所有元素结点
[程序代码]#include<stdio.h>#include<stdlib.h>short InitHeadNode(struct Node* &, struct Node* &);short RearInsert(struct Node* &, struct Node* &, short);short GetListLength(struct Node* &);void DeleteNode(struct Node* &a.原创 2021-05-21 10:12:51 · 1274 阅读 · 0 评论 -
通过一趟遍历确定单链表中值最大的结点
[程序代码]#include<stdio.h>#include<stdlib.h>short InitHeadNode(struct Node* &, struct Node* &);short Traversal(struct Node* &);short RearInsert(struct Node* &, struct Node* &, short);short GetListLength(struct Node* &a.原创 2021-05-21 09:33:21 · 3236 阅读 · 0 评论 -
有序表合并
给定两个递增排序的链表,请合并这两个链表并使新链表中的节点仍然是递增排序的,合并后的链表中不能包含重复的元素。本题要求用链表实现。输入两个递增排序的链表,其中所有元素均为整数,每个表均以数字-1作为输入结束标志。输出在单独的行中输出按要求合并后的结果。示例输入11 2 4 -1 1 3 4 -1 示例输出11 2 3 4输入示例21 -1 1 -1示例输出21[代码实现]#include<stdio.h>.原创 2021-05-20 21:30:17 · 177 阅读 · 0 评论 -
主元素(Version3.0, 算法执行效率较Version2.0提升)
已知一个整数序列A=(a0,a1,…,an−1),其中0≤ai≤n,0≤i<n)。若某元素在数据序列中重复出现的次数为m,且m≥n/2,则称x为A的主元素。如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设顺序表A中有n个元素,请设计算法,找出A的主元素,若存在主元素,则输出主元素;否则输出A中没有主元素的信息。输入每组数据有两行,第一行为一个整数n,代表数组中有n个元素。第二行为数组中的n个元素(元素之间原创 2021-05-20 19:46:20 · 101 阅读 · 0 评论 -
主元素(Version2.0, 算法执行效率较Version1.0提升)
已知一个整数序列A=(a0,a1,…,an−1),其中0≤ai≤n,0≤i<n)。若某元素在数据序列中重复出现的次数为m,且m≥n/2,则称x为A的主元素。如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设顺序表A中有n个元素,请设计算法,找出A的主元素,若存在主元素,则输出主元素;否则输出A中没有主元素的信息。输入每组数据有两行,第一行为一个整数n,代表数组中有n个元素。第二行为数组中的n个元素(元素之间原创 2021-05-20 19:32:01 · 97 阅读 · 0 评论 -
主元素(Version1.0)
已知一个整数序列A=(a0,a1,…,an−1),其中0≤ai≤n,0≤i<n)。若某元素在数据序列中重复出现的次数为m,且m≥n/2,则称x为A的主元素。如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设顺序表A中有n个元素,请设计算法,找出A的主元素,若存在主元素,则输出主元素;否则输出A中没有主元素的信息。输入每组数据有两行,第一行为一个整数n,代表数组中有n个元素。第二行为数组中的n个元素(元素之间原创 2021-05-19 22:31:41 · 649 阅读 · 0 评论 -
方阵(用一维数组代替二维数组实现问题的求解)
请编写一个程序,读取一个N(0 \lt N \le 50)N(0<N≤50)维方阵,并完成如下下操作:按列序输出方阵; 计算方阵的主对角线元素的均值。结果保留小数点后2位数字。输入输入的第一行为方阵的阶数NN,随后的NN行中,每行包含NN个整数(每个整数的绝对值不超过100),为方阵的各行的元素。输出先按列序输出方阵各列的元素,随后在单独的行中输出对角线元素的均值,结果保留两位小数。输入示例55 2 3 4 55 6 7 8 95 1 3 5原创 2021-05-19 21:24:57 · 299 阅读 · 0 评论 -
一维数组
设定包含若干个数值元素的集合,对给定的数值,查询其在集合中出现的次数。输入第一行为若干数值(不超过10^4104个),第二行为若干查询的值(不超过100个),所有整数都在32位整数范围之内。输出对每个查询的数值,在单独的行中输出形如x: y的答案,其中x为查询的数值,y为其在集合中出现的次数。示例输入1 5 3 1 2 3 7 16 3 90 1示例输出0: 01: 2[程序代码]#include<stdio.h>#define MaxSi.原创 2021-05-19 20:32:48 · 157 阅读 · 0 评论 -
求输入数据的个数(遇到文件结束符EOF时结束输入)
#include<stdio.h>int main(){ short length = 0; short x; while(scanf("%hd", &x) != EOF) { length ++; } printf("共输入%hd个数据.\n", length); return 0;}原创 2021-05-19 20:01:00 · 266 阅读 · 0 评论 -
单链表操作模拟系统(12种功能)
今晚花了一晚上写了一个功能较完善的单链表操作模拟系统, 有助于帮助初学者初始单链表的各种操作. 虽然系统已经过本人简单的测试, 但可能还存在bug, 还请各位朋友帮我一起测试这个系统, 如有问题直接在评论区留言即可, 谢谢大家!#include<stdio.h>#include<stdlib.h>short InitLinkList(struct Node* &, struct Node* &);short RearInsert(struct No...原创 2021-05-18 21:48:45 · 163 阅读 · 0 评论 -
单链表的九种基本操作(2021.5)
1. 定义单链表结点Node: 单链表的结点由数据域和指针域共同构成, 数据域负责存储当前结点的数据信息, 指针域负责存储其直接后继结点在内存中的地址信息./* 单链表结点的定义 */struct Node{ short data; struct Node* next;};2. 初始化头结点:[注]通过malloc函数申请内存空间不一定会成功, 要根据其返回值判断是否申请到需要的内存空间. 如果malloc函数返回一个非NULL的地址信息, 那么说明内存空间申请..原创 2021-05-18 18:18:39 · 260 阅读 · 0 评论 -
单向链表的基本概念
1. 在结构体的定义中声明结构体指针变量:[注]在上面的定义中, 编译器不知道temp类型的变量占用多少内存空间(在定义pt时, temp类型还未完成定义), 所以无法为其分配存储空间. 在下面的定义中, 指针变量在内存中所占用的空间是确定的, 即便编译器并不知道temp类型为何物, 也可以为其分配存储空间.2. 单向链表中的结点:3. 单向链表实现思想简介:4. 建立一个单向链表:...原创 2021-05-17 17:14:59 · 167 阅读 · 0 评论