![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言与算法基础(竞赛版)
很实用,适合备考!!
付朝鲜
公众号一身鲜气,欢迎关注(海量资源回复面包即可)
你要悄悄拔尖,然后惊艳所有人。
展开
-
经典算法之《时间复杂度与空间复杂度》
【题目一】一个整型数组里除了一个数字之外,其它的数字都出现了两次。请写程序找出这个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。【分析】由于题目要求时间复杂度为O(n),所以先排序然后比较相邻数字是否相同的思路被排除。空间复杂度是O(1),辅助空间被限制,所以hash表的思路也被排除。注意这个数组的特殊性:其它数字都出现了两次,只有一个数出现了一次。可以想到运用异或运算,任何一个数字 异或它自己都等于0。如果我们从头到尾依次异或数组中的每一个数,那么最终的结果就是那个只出现原创 2020-05-31 11:19:23 · 318 阅读 · 0 评论 -
C语言之图书管理系统(功能齐全!!!)
【主要内容】开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)--输入(2)图书信息浏览功能--输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):①按书名查询 ②按作者名查询 按照价钱排序 按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(1)简...原创 2020-05-21 23:46:59 · 81106 阅读 · 27 评论 -
C语言中实用的子函数(持续加料)
一,判断素数int prime(int m){ int i,k; if(m==1) { return 0; } k=(int)sqrt(m); /*减少运行时间*/ for(i=2;i<=k;i++) { if(m%i==0) { return 0;...原创 2020-04-23 15:59:23 · 3035 阅读 · 0 评论 -
函数与程序结构(C语言结课作业 文本篇,代码在下篇)
一、 实验目的:掌握单链表的概念和建立方法。掌握单链表的几种基本操作。二、实验要求:【根据下面提供的结构,参照教材“9.5 单链表”中所给出的单链表几种基本操作的代码,完成实现“学生成绩信息”相关的几种功能函数】有一学生成绩表,输入信息包括学号、姓名、3门课程成绩。结构定义为(可以自行添加别名):要求实现:*1. 单链表的创建函数声明: void CreateStuList...原创 2020-04-05 18:51:08 · 534 阅读 · 0 评论 -
函数与程序结构(C语言结课作业)代码篇
#include <stdio.h>#include <stdlib.h>#include<string.h>/******定义结构体*******/typedef struct stud{ char id[13]; char name[21]; int score1,score2,score3; int sum; ...原创 2020-04-05 18:51:41 · 658 阅读 · 0 评论 -
C语言 rand函数,srand函数 生成随机数用法详解
与随机数有关的两个函数,srand() 和 rand(),这两个函数都包含"stdlib.h"头文件里srand()函数是随机数发生器,使得每轮产生的随机数列都不相同。rand()函数产生随机数,返回一个[0,RAND_ MAX]间的随机整数。 ( RAND_ MAX的值在"stdlib.h"中有定义。)int rand():返回...原创 2020-03-15 22:19:46 · 5247 阅读 · 4 评论 -
时间复杂度与空间复杂度 (捡拾碎小知识点)
最近做题总是遇到这些名词,这次一定要搞定它!!!原创 2020-02-29 12:00:25 · 206 阅读 · 0 评论 -
话说sscanf与sprintf !!!
1,sscanf函数【定义】sscanf定义:int sscanf (const char *str, const char * format,…);函数说明:sscanf将str字符串以format格式进行转换,并将转换的结果存于对应的参数内。返回值:成功则返回参数数目;失败则返回-1;例如:sscanf(str,"%d%d%s", &i,&i2, &s)...原创 2020-02-09 21:44:32 · 332 阅读 · 0 评论 -
如何书写一个shell code
一:shellcode基本算法分析在程序中,执行一个shell的程序是这样写的 shellcode.c ------------------------------------------------------------------------ #include void main() { char *name[2]; name[0] = "/bin/sh" nam...原创 2020-02-05 11:59:52 · 1565 阅读 · 1 评论 -
堆栈溢出技术从入门到精通
借鉴了很多大佬的解释,就不一 一点出来了,真的感谢!!!1.what是堆栈?从操作上来讲,堆栈是一个先入后出的队列。压栈的操作push=ESP-4,出栈的操作是pop=ESP+4.换句话说,堆栈中老的值,其内存地址,反而比新的值要大。这是堆栈溢出的基本理论依据。在一次函数调用中,堆栈中将被依次压入:参数,返回地址,EBP。如果函数有局部变量,接下来,就在堆栈中开辟相应的空间以构造变量。函数执...原创 2020-02-05 11:37:04 · 470 阅读 · 0 评论 -
动态规划 规划人生
一,介绍1,动态规划在数学,计算机科学和经济学等领域中极为常见,是一种通过把原问题分解为相对简单的子问题的方式来求解的方法。2,动态规划是近几年科技公司面试的必考算法,题目类型多,没有固定模板,难度大多属于中上,根据面试统计结果,一般失败的面试都与动态规划有关。但是动态分析并不可怕,可怕的是你的内心,不要遇到这种题就绕道而行。其实是有规律可行的,我们下面来通过几个经典例子,掌握其中的思想,举一...原创 2020-02-18 15:28:49 · 488 阅读 · 0 评论 -
算法 干货!!!TeX括号 打卡第二天
【题目】在TeX中,左双引号是”,右双引号是“。输入一篇包含双引号的文章,你的任务是把他转换成TeX的格式。【样例输入】"To be or not to be,"quoth the Bard,“that is quesion”.【样例输出】”To be or not to be, ”quoth the Bard,“ that isquesion ”.【分析】本题的关键是,如何判断一个引...原创 2020-02-06 11:53:16 · 372 阅读 · 0 评论 -
算法 干货!!! 因子和阶乘 打卡第八天
【题目】输入正整数n(2<=n<=100),把阶乘n!=123*…n分解成素因子相乘的形式,从小到大输出各个素数(2,3,5…)的指数。例如825=35511应表示成(0,1,2,0,1),表示分别有0,1,2,0,1个2,3,5,7,11.你的程序应忽略比最大素因子更大的素数(否则末尾会有无穷个0).【样例输入】553【样例输出】5!=3 1 153!=49 23 12...原创 2020-02-15 10:40:13 · 595 阅读 · 2 评论 -
算法篇 干货!!!字母重排 打卡第七天
【题目】输入一个字典(用******结尾),然后再输入若干个单词。每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出0)。输入单词之间用空格或空行隔开,并所有输入单词都由不超过6个小写字母组成。注意,字典中的单词不一定按字典序排列。【样例输入】tarp given score rfund only tr...原创 2020-02-10 23:35:59 · 496 阅读 · 0 评论 -
算法篇 干货!!! 6174问题 打卡第六天
【题目】假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!输入一个n位数,输出操作序列,直到出现循环(即新得到的数曾经得到过)。输入保证在 循环之前最多只会产生1000个整数...原创 2020-02-09 20:56:39 · 1378 阅读 · 10 评论 -
算法篇 干货!!!高精度算法 打卡第五天
【题目】输入不超过1000的正整数n,输出n!=123*…*n的精确结果【样例输入】30【样例输出】265252859812191058636308480000000【分析】为了保存结果,需要先分析1000!有多大。计算得1000!约等于4**10的2567次方,因此可以用一个3000个元素的数组f保存。为了方便起见,我们让 f[0]保存结果的个位,f[1]是十位,f[2]是百位…...原创 2020-02-08 16:32:44 · 593 阅读 · 4 评论 -
算法篇 干货!!! 小学生算术 打卡第四天
【题目】很多学生在学习加法的时候,进位容易出错。你的任务是计算两个整数相加需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(输入的结束标志)。假设输入的整数都不超过9个数字。【样例输入】123 456555 555123 5940 0【样例输出】031【分析】注意 int 的上限约是2000000000,可以保存所有9位整数,...原创 2020-02-07 17:19:35 · 565 阅读 · 0 评论 -
算法篇 干货!!!周期串问题 打卡第三天
【题目】如果一个字符串可以由长度为k的字符串重复多次得到,我们说该串以k为周期,例如abcabcabcabc 以3为最小周期(注意它也可以以6和12为周期)我们输入一个不超过80的串,输出它的最小周期(字符串区分大小写)【输入样例】HoHoHo【输出样例】2【分析】题目中说过,字符串可能有多个周期。但因为只需要求出最小的一个,可以从小到大枚举各个周期,一旦符合条件就立即输出。判断...原创 2020-02-07 16:46:33 · 547 阅读 · 0 评论 -
算法篇 干货!!!(WERTYU) 打卡第一天
1,WERTYU把手放在键盘上时,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。输入一个错位后敲出的字符串(所有字母均大写),输出打字员本来想打出的句子。输入保证合法,即一定是错位之后的字符串。样例输入:O S, GOMR YPFSU/样例输出:I AM FINE TODAY.【分析】可以用if switch语句,但是太暴力了,繁琐!一个较好的方法是...原创 2020-02-06 11:23:58 · 481 阅读 · 0 评论