- 博客(18)
- 收藏
- 关注
原创 冒泡排序可以排序多个字符串
在实现多个字符串的排序之前,先来回顾一下冒泡排序: 算法原理: 每次对相邻的两个元素进行比较,若前者大于后者则交换,如此一趟下来最后一个则是最大的一个元素;重复以上步骤,除了已经确定位置的元素。 算法实现:void swap(int *a, int *b){ int temp = 0; temp = *a; *a = *b; *b = temp;}void bubble_s...
2018-06-13 10:30:08 434
原创 .使用main函数的参数,实现一个整数计算器
因为涉及main函数参数,所以在linux 下面比较容易实现int main(int argc, char *argv[], char *env[])main的三个参数 :int argc,表示命令行参数加上程序路径的个数,最小为一char * argv[],表示main函数的命令行参数char * env[],表示环境变量首先要判断mian()函数的参数个数,如果小于4即,参数个数错误,代码如下...
2018-06-13 10:26:38 456
原创 模拟实现strcat函数
算法分析strcat函数功能:将两个字符串连接起来,最终返回连接后字符串的首地址.strcat函数原型:char *strcat(char *dest,const char *src);我们清楚地了解了strcat函数功能和原型之后,就很容易分析出算法...算法总结第一步:将dest指向的内容循环遍历至'\0'的部分.第二步:将src指向的内容循环拷贝给dest,包括src后面的'\0'.核心代码...
2018-06-13 09:33:39 398
原创 模拟实现strcpy
strcpy的作用是将一个字符串的内容复制到另外一个字符数组中,包括字符串的终结符#include <stdio.h>#include<assert.h>#include<Windows.h>char * my_strcpy(char *dest, const char *src){ assert(dest != NULL); assert(src ...
2018-06-13 09:28:02 224
原创 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
方法一:#include <stdio.h>int bottle_num(int yuan)//喝汽水{ if (yuan)//零元返回零瓶 { while (1 != yuan) { if (yuan & 1)//如果是奇数瓶 { return yuan - 1 ...
2018-06-11 17:41:16 919
原创 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。
本题思路:1.将0与数组每个元素依次亦或的结果就是两个只出现一次的元素亦或的值,相同元素的二进制位是相同的,亦或的值为02.将数组分为两组,每一组包含一个只出现一次的数,分组的思路是:两个唯一的数是不相同的,那么在他们的二进制序列中必然有一位是不相同的,找出这一位,以这一位为标志,将其余数进行分组。3.将两个数组分别与0进行亦或,最终得到两个只出现一次的数。程序如下:#include <st...
2018-06-11 17:32:54 260
原创 诶~ 看我一手操作 用递归方式打印一个整数的每一位
递归方式实现打印一个整数的每一位#include <stdio.h>void print_num(int n){ if (n != 0) { if (n<0) { n = -n; } printf(" %d \n", n % 10); print_num(n / 10); }}int main(){ int n; printf("...
2018-06-11 17:24:47 245
原创 诶~真的骚 我学会了用递归和非递归分别实现求n的阶乘 你呢
递归和非递归求n的阶乘#include <stdio.h>int sum1(n)//循环法求阶乘{ int sum = 1; int i = 1; for (i = 1; i <= n; i++) { sum = sum * i; } return sum;}int sum2(n)//递归方法求阶乘{ int sum = 0; if (n == ...
2018-06-11 17:23:47 524 2
原创 史上最全!!!计数、递归和非递归三种方法分别实现strlen
计数、递归和非递归三种方法分别实现strlen 首先明白strlen的功能这是一个求字符串长度的函数只能用char*做参数(字符型指针),且必须是以'\0'结尾的#include<stdio.h>int my_strlen0(const char *arr)//计数方式{ int count = 0; while (*arr) { arr++; count...
2018-06-11 17:15:54 296
原创 编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。
//编写一个函数reverse_string(char * string)(递归实现)//实现:将参数字符串中的字符反向排列。//要求:不能使用C函数库中的字符串操作函数。#include <stdio.h>#include <assert.h>void reverse_string(char const * string){ assert( string != NU...
2018-06-11 17:10:46 673
原创 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和.//例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
2018-06-11 10:25:19 266
原创 来来来 我们来编写一个函数来实现n^k,使用递归实现
编写一个函数实现n^k,使用递归实现首先 我们来 理性的(夏基霸)分析一波n的k次方那不就是n*n*n*n*n*n*....*n(共k个)有同学会问那么这个时候我们该怎么做?问得好我也不知道我们试验一下 猜想 各种骚操作从脑中划过变个型 变成n*n^k-1 怎么样我也不知道为什么要变成这个样子反正感觉好像离求解正确不远了附加一个递归使用的三要素(1)条件限制用if...
2018-06-11 10:18:53 437
原创 giao哥教你学!!!加吐血分析!!递归和非递归分别实现求第n个斐波那契数
一、用归和非递归分别实现求第n个斐波那契数首先明白何为斐波那契数F0=0,F1=1,Fn=Fn-1+Fn-2 (n>=2,n∈N*)用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。1,1,2,3,5,8,13,21,34,55,89,144……1、递归方法#include <stdio.h>int Fib(int n)...
2018-06-11 10:13:08 331
原创 使用可变参数,实现函数,求函数参数的平均值
利用可变参数列表:可变参数列表是通过宏来实现的,这些宏定义在stdarg.h中。值得注意的是:可变参数列表传参时,第一个传的参数的个数。步骤:1.定义一个va_list类型的变量 arg2.宏va_start(arg,num)---这个宏有两个参数,第一个参数为va_list类型的变量,第二个参数为可变参数列表之前的参数。作用就是使得 va_list 的变量指向可变参数列表的首地址。这才是一般意义...
2018-06-06 10:48:29 709
原创 模拟实现printf函数,可完成下面的功能
Print formatted output to the standard output stream.格式化输出打印到标准输出流来自msdn函数原型:[html] view plain copyint printf( const char *format [, argument]... ); 返回值:[cpp] view plain copyEach of these functions r...
2018-06-06 10:43:04 244
原创 C语言中的可变参数
首先了解一下什么是可变参数C语言中的可变参数1、C语言中的可变参数列表:C语言中有时候会遇到一些参数个数是可变的函数,像scanf,printf等,这些函数内部的参数列表都是可变的。通过将函数实现为可变参数的形式,使得函数可以接受1个以上的任意多个参数。(不固定)如函数原型:scanf(const char * format,…);解释:除了format以外,后面跟着的参数 个数,类型是可变的,用...
2018-06-06 10:31:27 728
原创 判断一个字符串是否为另外一个字符串旋转之后的字符串
判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0方法一:算法思想:一个字符串左旋,无非还是这个字符串本身(长度未改变),并且字符本身未改变只是顺序改变;申请一个原来字符串数组空间的2倍加1(算上\0),如果另一个比较对象如果是这个字符串的子串(其中用到strstr函数),说明 二者互...
2018-06-06 10:21:13 259
原创 字符串左旋右旋问题
题目:实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。分析:如果不考虑时间和空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成...
2018-06-06 10:17:07 356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人