自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 strstr用法及模拟实现

strstr用法#include <stdio.h>#include <stdlib.h>#include <string.h>//strstr如果找到了,就返回找到的首地址//如果没找到就返回空int main(){ char str1[] = "abcdefggggggg"; char str2[] = "bcdef"; char* p =...

2019-05-31 22:28:55 215

原创 模拟实现memcpy,memmove以及memcpy与memmove的不同

首先看memcpy的用法void* memcpy(void* destination, const void* source, size_t num);函数memcpy是从source的位置开始向后复制num个字节的数据到destination的内存位置.这个函数在遇到’\0’时不会停下来.如果source和destination有任何的内存重叠,复制的结果都是未定义的!接下来看memc...

2019-05-30 14:50:44 180

原创 关于strstr的用法以及模拟实现

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char str1[] = "abcdefggggggg"; char str2[] = "bcdef"; char* p = NULL; p = strstr(str1, str2) puts(p); sys...

2019-05-28 15:49:28 206

原创 利用strtok输出字符串中最长的单词

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char str[] = " you are,a.student"; char sep[] = " ,."; char* tok = NULL; char maxlen[20] = ""; //用来保存字符串中较长...

2019-05-27 16:24:41 204

原创 模拟实现strcpy和strncpy

#include <stdio.h>#include <stdlib.h>#include <assert.h>//模拟实现strcpychar* my_strcpy(char* str1, const char* str2){ assert(str1); assert(str2); while(*(str1++) = *(str2++)); r...

2019-05-26 19:01:28 125

原创 使用qsort函数实现冒泡排序

#include <stdio.h>#include <stdlib.h>//比较函数int cmp(const void* p1, const void* p2){ return (*(int*)p1) - (*(int*)p2);}//交换函数void Swap(void* p1, void* p2, int size){ //size在这里是表示字节数...

2019-05-25 20:54:10 249

原创 关于函数指针数组的指针及回调函数,qsort的使用

关于函数指针数组的指针,首先它是一个指针,这个指针指向一个数组,数组中的元素都是函数指针.关于函数指针数组的指针的定义#include <stdio.h>#include <stdlib.h>void test(const char* str){ printf("%s\n", str);}int main(){ //函数指针pfun void (*pfun...

2019-05-24 17:40:42 238

原创 关于函数指针,函数指针数组以及函数指针数组的用途(计算器实现)

在之前的学习中我们已经知道了,数组是一个存放相同类型数据的存储空间,而指针数组就是一个用来存放指针变量的数组,比如:int* arr[10]; //数组的每个元素是int*既然有了指针数组,那么我们能不能把函数的地址也都存到一个数组当中去?答案是肯定的,这样的一个数组就叫做函数指针数组,比如:int (*parr[10])();parr首先与[]结合表示一个数组名,这也就说明parr是数组...

2019-05-23 16:34:06 228

原创 模拟实现strcpy

#include <stdio.h>#include <stdlib.h>char* my_strcpy(char* str1, const char* str2){ char* tmp = str1; //创建一个指向str1的指针 while (*(str1++) = *(str2++)); //str2依次赋给str1 return tmp; //返回值为c...

2019-05-22 22:41:12 162

原创 对于数组指针和指针数组的理解及其应用

在之前的学习中,我们已经简单了解过了数组指针和指针数组(数组指针,指针数组,二级指针)我们知道指针数组其实就一个用来存放指针的数组.这里先做一个指针数组简单的回顾.int* arr[10]; //这是一个存放整型指针的数组char* arr[10]; //存放字符型指针的数组char** arr[5]; //存放二级字符型指针的数组而容易与之混淆的就是数组指针.数组指针其实就是指针,这个...

2019-05-21 15:31:27 3639

原创 趣味编程,取石子累积得分

假设有五堆石子,每堆石子的石头数为2, 5, 3, 8, 4每次我们可以取出任意的两堆石子合并为一堆,这两堆相应的石头数的和即表示合并之后可获得的分数,分数是累加的关系,现在模拟实现可获得的最大分数和最小分数.(备注:假如第一次取了石头数为8和石头数为5的这两堆石子,那么现在石子变成四堆,也就是2, 13, 3, 4,并且获得的分数为13,下一次取出13和4这两堆合为一堆,这样就变成了3堆,也就...

2019-05-20 19:11:02 186

原创 模拟实现strcat

#include <stdio.h>#include <stdlib.h>char* my_strcat(char* str1, const char* str2){ char* tmp = str1; //指向str1的指针 while (*(str1++)); //遍历str1直到'\0'跳出 str1--; //使指针指向'\0' while (*(str...

2019-05-19 22:24:08 159

原创 关于冒泡排序的几种做法

#include <stdio.h>#include <stdlib.h>//第一种void BabbleSort1(int a[], int size){ int bound = 0; for (; bound < size; ++bound){ for (int cur = size - 1; cur > bound; --cur){ i...

2019-05-18 23:11:21 166

原创 模拟实现一类限重过河问题

假如现在有n个人需要过河,每只船的载重是给定的,每个人的体重也给定.求出需要多少只船可以让全部人一次性过河.具体到数字来说,如果现在有9个人需要过河,这9个人的体重分别是42,51,68,47,40,82,93,39,72,而每只船的最大载重为100kg.那么需要多少只船呢?这个问题关键的地方其实就在与船的载重,试想100kg的限重,这也就意味着体重过大的人,必须要独自坐船离开,否则会超重,就...

2019-05-17 12:39:18 287

原创 模拟十进制数字的进制转换

先看一个最简单的十进制数转为二进制#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){ int n, sn; printf("请输入一个数n: "); scanf("%d", &n); char str[20] = ""; int i = 0;...

2019-05-16 10:37:24 612

原创 假如我们不知道两个数的大小,那么该怎样让计算机帮我们输出较大的数或较小的数呢?

关于数的比较大小,我们通常情况下会习惯于利用if语句去帮我们判断并输出我们想要得到的结果,现在需求是不知道两个数的大小,去输出较大数或较小数,其实也就是限制了使用if语句去判断.这个题目其实就是一个小的思维拓展,换角度去思考一个看似很简单的问题.这样来思考,给出两个数,前提是我们无法判断这两个数的大小,需要另辟蹊径,这时我们就要从两个数所具有的关系出发,不论两数谁大谁小,我们可以确定的是两个数...

2019-05-15 10:48:55 672

原创 用指针去做冒泡排序

#include <stdio.h>#include <stdlib.h>void BabbleSort(int arr[], int size){ int* p = arr; //定义一个指针,表示arr首元素的地址 int* q = arr + 1; //arr次元素地址 int* end = arr + size - 1; //arr最后一个元素地址 fo...

2019-05-14 23:18:04 984

原创 一个关于喝汽水的趣味编程

假设我们手上有20元,现在我们想喝汽水,老板说一瓶汽水一元,并且两个空瓶子可以再换一瓶汽水.那么我们最多可以喝多少瓶汽水呢?首先我们将思路理清手上有20元,也就说我们一开始可以喝20瓶汽水将20瓶汽水喝光,我们手上会有20个空瓶子,可以再换10瓶汽水全部喝光有10个空瓶子,再换5瓶汽水喝完有5个瓶子,可以换2瓶汽水此时我们的手头有2瓶汽水,1个空瓶子喝完汽水,我们又可以换一瓶这个...

2019-05-13 18:08:40 167

原创 实现一个函数,可以左旋字符串中的k个字符

例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB#include <stdio.h>#include <stdlib.h>#include <string.h>void Round_string(char* str, int n){ int i = 0; int j = strlen(str); while (n){ //...

2019-05-12 21:26:27 144

原创 打印二进制数,以及两个int型整数m,n二进制位不同的位数的输出

之前我们已经知道如何输入一个二进制数中1的个数,这样找两个数二进制位不同的问题同样可以转化位寻找二进制位中的1.既然谈到了二进制,又和两个数二进制对比有关,我们很自然的就想到了^(按位异或),将m^n之后,两个数二进制位不同的位全部变为了1,相同的则为0,这样我们找一个临时变量将m^n的结果存下来,再对这个临时变量找二进制的1,就完成题目中的需求.代码如下:#include <stdi...

2019-05-10 15:43:19 563

原创 打印杨辉三角

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){ int a[10][10]; //用二维数组来储存杨辉三角中的数字 int n; printf("请输入一个整(n >= 10): \n"); //想要修改打印行数修改二维数组的范围即可,也可用定义...

2019-05-09 15:07:17 1214

原创 关于5名运动员跳水名次的逻辑问题

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。首先用5重for循环保证从a到b都能取到1到5的值并且不重复,然后用一个if循环判断(a * b * c * d * e == 120)这是为了...

2019-05-08 23:17:43 345

原创 把一个数的比特位赋值为1或0

#include <stdio.h>#include <stdlib.h>//把num的第五个比特位赋为1int main(){ int num = 10; num = num | (1 << 5); printf("%d\n",num); system("pause"); return 0;}#include <stdi...

2019-05-07 21:20:18 2849

原创 三种方法求一个整数存储在内存中的二进制中1的个数

1.第一种方法#include <stdio.h>#include <stdlib.h>int main(){ int num = 10; int count = 0; while (num != 0){ if (num % 2 == 1){ //判断num存储在内存中的二进制的每一位是否为1(二进制数由0和1表示) ++count; } nu...

2019-05-06 16:55:27 309

原创 基础算法,高精度加法详解

在之前的程序中,用到加法,我们可以定义这样一个函数int add(int x, int y){ return x + y;}这是最简单的一种加法的定义,也算是我们最为常用的.假如现在需求变更,需要求百位数字之间的加法运算结果,那么该如何去做呢?在我们之前所学习过的类型中,unsigned long long类型是目前C语言中精度最高的数据类型,而它所能表示的最大数据也才到2 ^ 64...

2019-05-05 12:18:59 592

原创 两种方法实现函数unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值

举个例子来说明这个函数想要实现的功能比如:在32位机器上25这个值(二进制)包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832程序如下:#include <stdio.h>#include <stdlib...

2019-05-03 22:29:45 151

原创 详解递归实现函数reverse_string(char* string)将字符串反向排序

实现:将参数字符串中的字符反向排列.之前我们已经多次写过不利用库函数去求字符串长度,所以我们在这里再用一次,先把需要反向排序的字符串长度求出来,方便后面的使用int Strlen(char* str){ //定义函数求字符串长度 int i; //当str[i] = '\0'时跳出循环,此时i就是字符串的长度 for (i = 0; str[i]; ++i); return i;} ...

2019-05-02 11:41:57 1067

原创 关于递归和非递归求斐波那契数

斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1,1,2,3,5,8,13,21…在数学上,斐波那契数列以如下被以递归的方法定义,就是斐波那契数列由1和1开始,之后的斐波那契数列系数就由之前的两数相加得到.#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Fib(i...

2019-05-01 23:45:05 586

空空如也

空空如也

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

TA关注的人

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