
C
Irean_Lau
Flow, Ambitious Geek, Apathy
展开
-
递归方法求阶乘
# include int fac(int n){ int result = 0; if (n < 0) { printf("输入错误"); return 0; } else if (n == 0 || n == 1) { result = 1; } else { result = fac(n - 1)*n; } return result;}原创 2015-01-22 14:40:01 · 757 阅读 · 0 评论 -
python元素移除问题
给定一个已经升序排好序的数组,以及一个数target,如果target在数组中,返回它在数组中的位置。 否则,返回target插入数组后它应该在的位置。 假设数组中没有重复的数。以下是简单的示例: [1,3,5,6], 5 → 2 [1,3,5,6], 2 → 1 [1,3,5,6], 7 → 4 [1,3,5,6], 0 → 0 提示:输入一个整数n原创 2015-01-28 22:32:57 · 1445 阅读 · 0 评论 -
可变参数列表
函数原型中,列出了函数期望接受的参数,但函数只能显示固定数目的参数。让一个函数在不同的时候接受不同的数目的参数是不是可以呢?答案是肯定的(printf就是一个可变参函数),但存在一些限制。int avarage(int val, int v1, int v2, int v3,int v4, int v5){ floatsum = v1; if(val>= 2)原创 2015-03-12 14:26:15 · 1184 阅读 · 0 评论 -
python寻找插入位置
给定一个已经升序排好序的数组,以及一个数target,如果target在数组中,返回它在数组中的位置。 否则,返回target插入数组后它应该在的位置。 假设数组中没有重复的数。以下是简单的示例: [1,3,5,6], 5 → 2 [1,3,5,6], 2 → 1 [1,3,5,6], 7 → 4 [1,3,5,6], 0 → 0 提示:输入一个整数n原创 2015-01-28 22:35:41 · 1276 阅读 · 0 评论 -
判断两个数组中是否含有相同的元素
/*判断两个数组是否含有相同元素*/#include #include using namespace std;int main(void){ int a[] = { 1, 3, 2, 4 }; int b[] = { 6, 5, 4, 7 }; for (int i = 0; i < sizeof(a) / sizeof(a[0]); ++i) { for (in原创 2015-01-03 14:59:57 · 3086 阅读 · 0 评论 -
求字符串的长度 的其他方法
# include //递归方法int my_strlen(char *str){ if (*str == '\0') { return 0; } else return 1 + my_strlen(++str);}int main(void){ char *a = "abscdfghjj"; printf("%d\n", my_strlen原创 2015-01-16 20:32:34 · 1097 阅读 · 0 评论 -
对位运算中问题的阐述
左移时逻辑移位和算术移位相同。 >> 右移操作符逻辑移位:左边用0填充算术移位:左边用原该值的符号位填充。C标准说:无符号数执行所有移位都是逻辑移位。但对于有符号的数移位,采用哪种移位方式是根据编译器决定的。使用技巧:(伪代码呈现) 求二进制最低位 使用(二进制数&1)的高效方法若 x&(x-1) == 0 则 x原创 2015-01-03 19:33:52 · 868 阅读 · 0 评论 -
查找一个数的二进制形式中‘1’的个数
/***查找一个数的二进制形式中‘1’的个数***/# include int main(void){ int i, j, k = 31; int a[32]; int count = 0; printf("请输出十进制数字\n"); scanf_s("%d", &i); while (i != 0) {原创 2014-12-21 17:00:50 · 1234 阅读 · 0 评论 -
求字符串的长度
# include int my_strlen(char *str){ int count = 0; while (*str++) { count++; } return count;}int main(void){ char *a = "abscdfghjj"; printf("%d\n", my_strlen(a));}总结:字符串判断结原创 2015-01-16 20:06:59 · 738 阅读 · 0 评论 -
C中的递归问题
函数的调用以两种方式出现:函数的嵌套与函数的递归。 C语言中,所有函数的定义都是互相平行和独立的,一个函数的定义不能包含另一个函数的定义,即不允许函数的嵌套定义。但函数的调用可以通过用一个函数另一个函数来实现,这就形成了函数的嵌套定义原创 2015-03-11 23:06:42 · 1473 阅读 · 1 评论 -
【数据结构】栈的应用 括号匹配
括号配对问题:假设一个表达式中包含三种类型的括号:(),{ },【】,嵌套顺序任意{ 【()()】 }1 2 3 4 5 6 7 8引入“期待的急迫程度”概念,例如当接受第一个括号 { ,则它期待与第8个 } 匹配,然而当接受到第二个 【 时,此时【最期待和第七个 】 匹配。#ifndef _MATCH_H_#define _MATCH_H_#in原创 2015-05-09 11:46:08 · 1869 阅读 · 0 评论 -
【数据结构】栈应用 行编辑器
在终端输入一串字符 当发现刚刚输入的字符有误,可以输入 # ,表示前一个字符无效;当想清除该行 则输入 @ 例如: ` 输入: hellow# 输出: hello 输入:hellow@ 输出: #ifndef原创 2015-05-09 12:01:28 · 2173 阅读 · 0 评论 -
算法数据结构 单链表的实现+操作 以及和顺序表的对比
顺序表和单链表的优缺点对比:顺序表的优点,无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速的存取表中的任意位置的元素。顺序表的缺点,插入后删除操作需要移动大量元素;当线性表长度不稳定时,存储空间难确定,容易造成存储空间碎片。对于单链表链式存储即元素存储的内存单元可以是不连续,分散的。对于元素间如何来维护他们的关系(即逻辑原创 2015-04-28 20:10:56 · 1467 阅读 · 0 评论 -
【数据结构】串的堆分配表示与实现
采用堆分配存储表示的串被称为堆串,与顺序串相比,地址空间仍是连续,但空间是在程序执行时动态分配的。程序中会使用到的realloc函数://realloc : (void *)reelloc (void *ptr,unsigned newsize);//使用 : char *str;// str = (char *)realloc(str,20);原创 2015-05-22 18:36:38 · 7723 阅读 · 2 评论 -
【C语言】进度条实现
模拟电脑程序安装的进度条提供两种方式代码如下:#include #include#includevoid proc(){ int i = 0; for (i = 1; i <= 100; ++i) { printf("-"); } fflush(stdout); for (i = 1; i <= 100; ++i) { print原创 2015-05-22 23:40:39 · 10341 阅读 · 0 评论 -
简单的数学问题
A B C D E 五人对一批鱼进行分配 A先将鱼分为五份,扔掉多余的一条并拿走五份中的一份;B再将鱼分五份,扔掉多余的一条并拿走五份中的一份;其余的人也按相同方法拿。求一共有多少鱼。分析: 假设总数目有X,则X-1被五整除; 同样的 4* (X-1)/5 也被五整除#include #include int main(void){ int n原创 2015-03-05 19:41:42 · 759 阅读 · 0 评论 -
关于柔性数组的一些问题
柔性数组结构成员 结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其 他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。结构体变长的妙用——0原创 2015-03-19 13:05:11 · 2481 阅读 · 0 评论 -
递归实现求n^k
/*函数实现n^k,使用递归实现*/#include#includeint func(unsigned int n, unsigned int k){ if (k == 0) return 1;//结束条件 else{ if (k == 1) return n;//结束条件 else return n*pow(n, k - 1);//递归调用 } }原创 2015-03-12 09:31:21 · 1193 阅读 · 0 评论 -
字符串比较函数
int my_strcmp(char *str_1, char *str_2){ while (*str_1 == *str_2 && *str_1++ && *str_2++); return *str_1 - *str_2;}原创 2015-01-16 20:53:19 · 884 阅读 · 0 评论 -
strchr函数 在str内查找字符x, 存在返回地址 否则返回NULL
# include char *my_strchr(char *str, char x){ char *p = str; while (*p != '\0') { if (*p == x) { return p; } p++; } return NULL;}原创 2015-01-16 20:43:02 · 844 阅读 · 0 评论 -
字符串拼接函数
# include #define LEN 1000char * my_strcat(char *dest, const char *src){ char *cur = dest; while (*dest != '\0') { dest++; } while (*dest = *src) { dest++; src++; } return cur;原创 2015-01-16 21:37:17 · 1195 阅读 · 0 评论 -
编写一个程序 将字符串翻转
# include char* reverse_string(char *string){ char temp; char *top = string; char *end = string; while (*end != '\0') { end++; } end--; for (; top < end; (top ++ && end--)) { temp =原创 2015-01-16 21:07:41 · 3252 阅读 · 0 评论 -
绘制余弦图案
#include #include int main(void){ double y = 0.0; int x = 0; int m = 0; for (y = 1; y >= -1; y -= 0.1) /*y为列方向*/ { m = acos(y) * 10; /*计算y对应弧度 并放大十倍*/ for (x = 1; x < m; x++) printf(原创 2015-03-05 19:12:05 · 947 阅读 · 0 评论 -
获取一个正整数,输出其二进制反转形式的十进制的值
如 25 的32位二进制为 0000 0000 0000 0000 0000 0000 0001 1001翻转后为 1001 1000 0000 0000 0000 0000 0000 0000对应十进制为 2550136832# include # include int main(){ int原创 2014-12-27 17:54:32 · 1400 阅读 · 0 评论 -
int my_atof(char *str) 将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)
/*将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)例如:“12“ 返回12“-123“ 返回-123函数原型:int my_atof(char *str){}*/#includeint my_atof(char *str){ int res = 0; //结果 if (*str == '-') { *str++; while (*str >=原创 2015-03-10 20:11:56 · 1408 阅读 · 0 评论 -
int ascii_to_integer(char *str)函数 将一串数字字符转化成对应的整形数字
/*int ascii_to_integer(char *str);这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零。请不必担心算数溢出。*/#includeint ascii_to_integer(char *str){ int res = 0; //结果 while (*str>原创 2015-03-10 19:50:42 · 2584 阅读 · 0 评论 -
通讯录结构体方法的实现 和VS中存在的一些问题的分析
实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址功能如下:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人模块化设计:头文件 结构体和相应函数的原创 2015-03-17 19:35:34 · 1237 阅读 · 1 评论 -
hermite(厄密多项式)
/*编写递归函数,函数应该和下面的函数原型匹配:int hermite(int n, int x)*/#include int hermite(int n, int x){ if (n <= 0) return 1; if (n == 1) return 2 * x; return 2 * x * hermite(n - 1, x) - 2 * (n - 1) * h原创 2015-03-10 19:06:58 · 1847 阅读 · 0 评论 -
double my_atof(char *str)将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
/*将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)例如:“12.34“ 返回12.34“-123.34“ 返回-123.34函数原型:double my_atof(char *str)*/#include#includedouble my_atof(char *str){ double res = 0.0; //结果 int count = 0原创 2015-03-10 21:24:32 · 2201 阅读 · 0 评论 -
在终端输入多行信息,找出包含“ould”的行,并打印改行
如:Au,love could youand I with fate conspireTo grasp this sorryscheme of things entire,Would not we shatterit to bitd – and then.在终端输出上述的文字,输出Au,love could youand I with fate conspireWould翻译 2015-03-10 18:11:06 · 923 阅读 · 0 评论 -
辗转相除法 相减法 穷举法 求最大公约和最小公倍数
/*.编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4*/#include void main() /* 相除法求最大公约数 */{ int m, n, a, b, c; printf("输入两个整数:\n"); scanf_s("%d%d",原创 2015-03-10 18:29:12 · 3436 阅读 · 0 评论 -
优雅的编写C语言爬虫
CSpider c语言实现的易用的高效的网络爬虫框架:)。安装与使用方法:确认你的电脑中,已经安装下面的库:curl libuv libxml2 pcre liburi 进入core文件夹,编译文件,命令如下:make 接着要配置动态库,将.so文件和.h文件移动到相应的位置,命令如下: make install 这时,就可以开始编译你写好的文件(例如 test.c),命令如下:原创 2016-05-21 18:12:04 · 6598 阅读 · 2 评论