自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 C语言中实现字符串的压缩,并进一步优化

字符串压缩比如:“xxxyyyyz"压缩后字符串为"3x4yz”“yyyyyyy"压缩后为"7y”#include <stdio.h>#include <stdlib.h>#include <assert.h>void CutString(char* str){ assert(str); char* p1 = str; char* p2 = ...

2019-07-31 11:02:07 5944

原创 判断一个数n是否是2的k次方,不用求k的值,只需判断即可

当然这个题我们可以用最笨的遍历去做,这样的话,当数字较大的时候,效率会很低所以这里我们考虑利用按位与(&)首先我们考虑所有2的k次方数的特点,比如0001 10010 20100 41000 8…其实每一个2的k次方数转化为2进制之后,只会有一位上为1,这就为我们打开了思路,我们只需要判断二进制位上是不是只有一个1n = m &am...

2019-07-30 11:06:53 769

原创 求一个有序数组中两个元素相加为k的数字,返回这两个元素的下标

我们可以利用两个指针,一个头指针,一个尾指针。因为数组是有序排列的,假如我们的数组为升序排列,那么我们秩序计算头指针和尾指针对应数字的和与k的大小关系,假如这两数之和大于k,我们要做的就是让尾指针向前移动。假如这两个数字之和小于k,我们要做的就是让头指针向后移动。相等即返回下标#include <stdio.h>#include <stdlib.h>#inclu...

2019-07-29 16:50:46 624

原创 如何快速查找到一个单链表的中间位置

无头单向非循环链表这里我们可以创建两个指针均指向链表的头位置,让两个指针一起向前走,一个一次走一步,一个一次走两步。当走两步的指针到达链表末尾时,另一个指针则到达链表的中间位置代码如下SListNode* FindMiddle(SList* plist){ SListNode* pSlow = plist->_head; SListNode* pFast = plist->_...

2019-07-27 14:18:21 2324

原创 有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。

#include <stdio.h>#include <stdlib.h>//有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...//求出这个数列的前20项和.int main(){ int n, count = 20; float a = 2, b = 1; float sum = 0; float tmp; for (n = 0;...

2019-07-26 17:14:21 10250

原创 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符(详细)

输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符比如输入“They are students."删除之后的第一个字符串变成"The r stdnts."思路是利用每个字符都有其对应的ASCII码值,将需要删除的字符的ascii为下标储存在数组当中。利用两个指针分别指向原字符串和需要删除的字符串。因为我们已经将需要删除的字符串中的字符所对应的ASCII码作为下标储存在数组当中,...

2019-07-25 11:07:47 18693 5

原创 一个整型数组除了两个数字外,其他数字都出现了两次。找出这两个数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次找出这个只出现一次的数字例如{ 1, 3, 5, 7, 1, 3, 5, 9 };找出7和9先看这道题的简化,也就是数组中仅有一个只出现一次的数字,其余元素均出现两次编程实现:一组数据中只有一个数字出现了一次.其他所有数字都是成对出现的.请找出这个数字(使用位运算)在这个思路的基础上再去解这道拓展题#include <std...

2019-07-24 11:32:14 681

原创 对于一个字符串,找到第一次重复出现的字符

比如:qywyer23tdd返回:y这样的题目其实与之前的类似在字符串中找出第一个只出现一次的字符类似于这样的题目思路是相同的,需要改变的地方就是在做第二次字符串遍历时,返回满足题目要求的字符的条件需要改变,即a[*str] >= 2; //找到第一次重复出现的字符完整代码如下:#include <stdio.h>#include <stdlib.h&gt...

2019-07-23 15:10:18 3398

原创 在字符串中找出第一个只出现一次的字符

在字符串中找出第一个只出现一次的字符比如输入"abaccdeff",则输出’b’首先我们需要一个字符数组来保存结果char a[256];最核心的思想是每个字符都有其对应的ASCII码值,所以我们可以将每个字符对应的ASCII码值作为下标.这样我们在遍历字符串时,每次遇到相应的字符就给其自增1.a[*str]++;举例来说明,假如我们输入的是"abaccdeff".遍历字符串时第一...

2019-07-22 10:30:32 1392

原创 输入一个整型数组求其所有子数组和的最大值

输入一个整型数组,数组里有正数也有负数数组中一个或连续的多个整数组成一个子数组求所有子数组的和的最大值例如输入的数组为{ 1, -2, 3, 10, -4, 7, 2, -5 }最大的子数组为{ 3, 10, -4, 7, 2 },因此输出为该子数组的和为18这道题我们其实可以将其转化利用数组中的数,组合出一个最大和.也就是说,我们可以利用数组遍历相加,每一次加完后的结果如果小于等于0...

2019-07-20 14:40:55 1363 1

原创 编写函数实现无头单链表逆置

无头单向非循环链表三种方法实现无头单向非循环链表的逆置void SListReverse(SList* plist){#if 0 //方法1 SListNode* tmp = plist->_head->_next; SListNode* cur = plist->_head; while (tmp){ cur->_next = tmp->_next;...

2019-07-18 15:30:10 174

原创 C语言编程题目 (实用经典) 8

猴子吃桃问题:猴子第一天摘下若干个桃子,马上吃了一半,没有吃饱,又多吃了一个第二天将剩下桃子的一半吃掉又多吃了一个以后每天猴子都会吃前一天剩下的桃子的一半再多一个到了第十天猴子发现只剩下一个了问猴子一开始一共摘了多少个桃子这样的题我们通常采用倒推的方法,就是已知第十天的桃子数量,反过来求第一天的.我们知道第十天为1所以第九天就为 (1 + 1) * 2 = 4第八天就为 (4...

2019-07-16 15:56:56 167

原创 在50户人家的狗中寻找病狗数量的趣味题目(详细解释)

这一类的题目其实是一种很有意思的智力题.题目描述有50户人家,每家一条狗.有一天警察同志通知,在这50条狗中有病狗,它的行为和其它狗不一样,现在每个人只能通过观察其它人家的狗来判断自己家的狗是否生病,但是不能看自己家的狗,如果判断出自己家的狗为病狗,就要开枪示意,然后将狗狗送往医院.结果第一天并没有枪声,第二天也没有,第三天一阵枪响.那么最后有几只狗狗被送往医院了呢?刚上手这道题,感觉一头雾...

2019-07-14 16:58:40 1472

原创 替换字符串中空格

将字符串中的空格替换为%20比如 “abc defgx yz"转换为"abc%20defgx%20yz”这里考虑的思路是利用字符数组,现在的"用户需求是将空格替换为20%",原来的空格处只占一个字符,但现在我们需要3个字符的空间,因此我们需要扩大字符数组的size,当然如果我们预先给定足够大的字符数组的size, 我们要做的只需更新size的值即可,当然记得保留原来的size.其实本质上是利...

2019-07-13 12:03:45 466

原创 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,完成一个函数,输入这样的一个二维数组和一个整数,判断该数组中是否含有该整数

既然要在一个二维数组中找数,那么就要将需要寻找的数字与二维数组中的数字进行比较,又因为该二维数组是有序排列的,所以我们为了在这个二维数组中寻找一个数,一定要知道在比较完大小之后,下来需要同哪个数作比较.如果我们先同左上角的数比较,假如需要寻找的数比这个数大,那该往右边走还是往下边走,显然可选择的路变为了两条.基于这个思路考虑,我们可以选择的出发点就只剩下了右上角和左下角.#define _C...

2019-07-12 11:00:06 2560

原创 C语言编程题目 (实用经典) 7

求S = a + aa + aaa + aaaa + a…a的值其中a是一个数字,例如2 + 22 + 222 + 2222 + 22222(此时是5个数相加)几个数相加由键盘控制#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){ int a, n...

2019-07-11 17:29:48 695 2

原创 C语言编程题目 (实用经典) 6

学习成绩>=90分的同学用a表示学习成绩在60-89之间的同学用b表示60分以下用c表示 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(){ int score; char grade; printf("请输入学生的成绩(0...

2019-07-10 15:41:02 2972

原创 C语言编程题目 (实用经典) 5

#include <stdio.h>#include <stdlib.h>//打印出100-999之间所有的水仙花数int main(){ int i; int a, b, c; for (i = 100; i < 1000; ++i){ a = i % 10; //a表示i的个位上的数字 b = i / 10 % 10; //b表示i的十...

2019-07-09 14:40:58 221

原创 C语言编程题目 (实用经典) 4

有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对小兔子,假设兔子不会死掉,问每个月的兔子总数为多少 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> //方法一递归求兔子数量 int FibNum(int n){ if (n...

2019-07-08 15:43:45 214

原创 C语言编程题目(实用经典)3

输入三个整数x,y,z,把这三个数从小到大输出#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//输入三个整数x,y,z,请把这三个数由小到大输出int main(){ int x, y, z; int tmp; printf("请输入三个整数: "); s...

2019-07-07 12:23:26 475

原创 C语言编程题目(实用经典)2

#include <stdio.h>#include <stdlib.h>#include <math.h>//一个整数,它加上100是一个完全平方数,再加上168又是一个完全平方数//请问该数是多少?int main(){ int i; int x, y; for (i = -100; i < 100000; ++i){ x =...

2019-07-05 15:48:42 272

原创 编程实现输入年月日,输出结果为该年的第几天(考虑用户输入的各种情况对程序进行完善)

这个是在博客中看到的一个C语言经典实用题目,在考虑用户可能输入的各种情况之后,最程序做了一些修改,包括越界问题,以及闰年平年二月份天数的考虑,可能还有bug,或者其他比较简单的写法,欢迎大家进行交流改进O(∩_∩)O#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//输入某年某...

2019-07-05 15:44:50 1787

原创 环形队列的实现

头文件dequeue.h存放函数声明,声明结构体#ifndef _DEQUEUE_H#define _DEQUEUE_H#include <stdio.h>#include <stdlib.h>#define QUEUENUM 5typedef int DataType;typedef struct{ DataType _data[QUEUENUM];...

2019-07-04 17:14:38 194

原创 带头双向循环链表增删操作

头文件List.h存放函数声明#ifndef _LIST_H#define _LIST_H#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int LTDataType;typedef struct ListNode{ LTDataType _data; str...

2019-07-03 17:31:18 81

原创 C语言编程题目(实用经典)1

有1,2,3,4四个数字,编程计算可以组成多少个互不相同并且没有重复数字的三位数都是多少?#include <stdio.h>#include <stdlib.h>int main(){ int i; int j; int k; int count = 0; for (i = 0; i < 5; ++i){ for (j = 0; j &lt...

2019-07-02 18:43:48 350

原创 给定一个链表,判断链表中是否有环

无头单向非循环链表实现void SListHaveCircle(SList* plist){ assert(plist); SListNode* fast = plist->_head; SListNode* slow = plist->_head; while (slow && fast && fast->_next){ slow ...

2019-07-01 17:21:41 345

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除