C语言
文章平均质量分 69
张传旭
阿三谁都拿上大三打底衫
展开
-
新手一枚,写了个大数相加的C程序
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000 //此处可以改输入大数据的位数struct Add_Number{ int num; struct Add_Number *pnext;};typedef struct Add_Number A_N;原创 2016-04-25 23:08:58 · 333 阅读 · 0 评论 -
统计字符串的个数
#define _CRT_SECURE_NO_WARNINGS#include #include #include int statisticString(char *str,const char *findStr){ if (NULL == str) { return -1; } int num = 0; char *p = str; while (1) { p原创 2016-10-08 23:49:16 · 323 阅读 · 0 评论 -
(两头堵)去除两边空格
#define _CRT_SECURE_NO_WARNINGS#include #include #include void trimSpace(char **str){ if (str == NULL) { return; } char *tmp = *str; if (tmp == NULL) { return; } char *left = tmp; c原创 2016-10-08 23:45:41 · 360 阅读 · 0 评论 -
sprintf初始化字符串的详细介绍
sprintf初始化字符串,详情请参照各个函数的注释:#define _CRT_SECURE_NO_WARNINGS#include #include #include void test1()//sprintf函数 字符串拼接{ char *p1 = "hello"; char *p2 = "world"; char buf[1024] = { 0 }; sprin原创 2016-10-10 22:56:01 · 1273 阅读 · 0 评论 -
sscanf扣取字符串的常用用法
#define _CRT_SECURE_NO_WARNINGS#include #include#include void test1()//sscanf匹配整个字符串{ const char *str = "asdasdadsad"; char buf[1024] = { 0 }; sscanf(str, "%s", buf); printf("%s\n", buf);}v原创 2016-10-10 22:59:01 · 613 阅读 · 0 评论 -
选择排序法,排序数字或者字符串
/*选择排序的思路:选择排序相比于冒泡排序,减少了交换次数,一般情况下冒泡每次比较符合交换要求时都要交换,而选择排序是不断的记录下标,保留最小数或者最大数的下标,在里层循环结束后再进行交换,减少了交换次数具体方法:遍历一次,记录下最值元素所在的位置,遍历结束后将此最值元素调整到合适位置,这样遍历一次,只需要交换一次,便可将最值放置到合适位置*/#define _CRT_SECURE_原创 2016-10-10 23:02:22 · 2110 阅读 · 0 评论 -
指针数组堆上分配内存(动态分配内存)
#define _CRT_SECURE_NO_WARNINGS#include #include #include char **allocateSpace(int len){ if (len <= 0) { return NULL; } char **temp = (char **)malloc(sizeof(char *)*len); if (temp == NULL)原创 2016-10-10 23:04:35 · 1860 阅读 · 0 评论 -
内存四驱模型
原创 2016-10-10 23:05:47 · 394 阅读 · 0 评论 -
数组指针,指针数组,以及数组下标是否可以为负数
/*数组指针:指向一个数组的指针int(*p)[5]指针数组:一个数组,数组里的每一个元素都是一个指针 int *p[5]*/#define _CRT_SECURE_NO_WARNINGS#include #include #include /*******************************************************************//原创 2016-10-11 22:17:43 · 1356 阅读 · 0 评论 -
二叉树(递归遍历和非递归遍历)(递归求树的高度以及叶子节点数和拷贝树)
#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include "LinkQueue.h"#include "LinkStack.h"/*前序遍历:先中 再左 再右中序遍历:先左 再中 再右后序遍历:先左 再右 再中*/typedef struct _Tag_BiNode//节点结构体原创 2016-10-21 22:17:07 · 1682 阅读 · 0 评论 -
fputc,fgetc,fputs,fgets,fwrite,fread写入或读取数据文件详细介绍
fputs,fgets:/*\r\n windows下存入文本数据时换行符会变成/r/n(/r是换行/n是将光标移动到行首) \nLinux下正常int fputs( const char *str, FILE *stream );标准解释:fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF. 返回值:成功返回0失败原创 2016-10-13 22:39:12 · 1693 阅读 · 0 评论 -
函数指针,函数指针数组,以及回调函数(函数指针做函数参数)
#define _CRT_SECURE_NO_WARNINGS#include #include #include void fun01(int a,double b){ printf("fun01:%d %f\n", a,b);}void fun02(int a, double b){ printf("fun02:%d %f\n", a, b);}void fun03原创 2016-10-14 22:03:47 · 290 阅读 · 0 评论 -
格式化读写文件fprintf,fscanf
#define _CRT_SECURE_NO_WARNINGS#include #include #include /*int fprintf(FILE * stream, const char * format, ...);功能:根据参数format字符串来转换并格式化数据,然后将结果输出到stream指定的文件中,指定出现字符串结束符 '\0' 为止。参数:stream:已经原创 2016-10-14 22:30:14 · 548 阅读 · 0 评论 -
ftell,fseek,rewind
int fseek(FILE*stream, long offset, int whence);功能:移动文件流(文件光标)的读写位置。参数:stream:已经打开的文件指针offset:根据whence来移动的位移数(偏移量),可以是正数,也可以负数,如果正数,则相对于whence往右移动,如果是负数,则相对于whence往左移动。如果向前移动的字节数超过了文件开头则出错返回原创 2016-10-14 22:43:19 · 290 阅读 · 0 评论 -
浪潮面试题(将一个句子中的单词反转)例:i am bob 输出 bob am i
#define _CRT_SECURE_NO_WARNINGS#include #include #include /*strtok:char *strtok( char *str1, const char *str2 ); *****************str1一定是要分配内存的数据******************功能:函数返回字符串str1中紧接“标记”的部分的指针原创 2016-10-15 23:24:06 · 519 阅读 · 0 评论 -
华为笔试题,关于操控字符串
问题描述:输入字符串例如:there is a pig,,,.,pig is good.输出:there is a pig good去掉字符串中所有非字母的字符,并删去重复单词#define _CRT_SECURE_NO_WARNINGS#include #include #include char *change(char *str){ if (str == NULL原创 2016-10-17 22:58:09 · 336 阅读 · 0 评论 -
161017_考试错题集(二维数组表示,字符串大小(sizeof,strlen),链表删除另一种思路)
4、若有定义:int a[3][4],能表示数组元素a[1][1]( B)A *(&a[0]+5)B *(a[0]+5)C (*(a+1)[1])D *(a+5)解答:a[0]等价于*(a+0) a[1][1]等价于 * (*(a+1)+1) 或者 (*(a+1))[1] 或者 *((a[1])+1),所以C少了一个括号原创 2016-10-17 23:29:22 · 527 阅读 · 0 评论 -
static,extern详细用法
/*staticC语言:static 的作用:1、全局静态变量:(1)在全局静态区分配内存(2)如果没有初始化,其默认值是0(3改变量在本文件内从定义开始到文件结束可见2、局部静态变量:(1)改变量在全局静态区分配内存(2)如果不显示初始化,那么将被初始化为0(3)它始终在全局静态区,直到程序运行结束(4)其作用域为局部作用域,当定义他的函数或语句块结束时,其作用域随之结束原创 2016-10-07 23:51:32 · 494 阅读 · 2 评论 -
大小端模式,栈的生长方向和内存的存放方向
/*栈的生长方向和内存的存放方向栈的开口向下,高地址在上,低地址在下内存的存放方向:自下向上大端模式下:栈的高地址对应数据的低位小端模式下:栈的高地址对应于数据的高位*/#define _CRT_SECURE_NO_WARNINGS#include #include #include //1. 栈的生长方向void test01(){ int a = 10; int原创 2016-10-08 23:37:46 · 3169 阅读 · 0 评论 -
#法(先序遍历)创建二叉树
#define _CRT_SECURE_NO_WARNINGS#include #include #include typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild;}BiTNode;void inOrder1(BiTNode *T)//前序遍历{ if (T == NULL) { re原创 2016-08-09 15:28:15 · 1864 阅读 · 4 评论 -
大数相减(不支持负数)
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000 //此处可以改输入大数据的位数struct Add_Number{ int num; struct Add_Number *pnext;};typedef struct Add_Number A_N;原创 2016-04-25 23:11:54 · 481 阅读 · 0 评论 -
用C语言写的超长的大数乘法,不支持负数,新手上路请多指点
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 20 //此处可以改变输入数字的位数void Multiply(char number1[],char number2[]){ int length_n1 = strlen(number1); int length_n原创 2016-04-26 18:57:58 · 526 阅读 · 0 评论 -
C语言,大数除法,不支持小数
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000void Input(char number1[], char number2[], int n);//输入数据void Change_str(char number[], int n);//数组前后互换void Sub(cha原创 2016-04-29 12:40:40 · 713 阅读 · 0 评论 -
C语言超大数除法,支持小数
#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 1000#define M 10 // 保留小数的位数void Input(char number1[], char number2[], int n);//输入数据void Change_str(char number[], int原创 2016-04-29 14:31:11 · 1862 阅读 · 0 评论 -
最大子数组问题
每周坚持搞三种算法问题,介绍一下最大子数组问题算法思路:分治策略求解,将问题不断分为更小的问题,进而求解问题描述:求数组中相连着的数 相加值最大,例如"{-3,2,3,-4,21,-5},输出最大为2+3-4+21=22"代码:#define _CRT_SECURE_NO_WARNIGNS#include #include #include #define N 10#defi原创 2016-05-24 19:35:03 · 267 阅读 · 0 评论 -
华为的一道很简单的笔试题,当时答得很烂,现在拿出来重新搞了一下
//代码有参考http://codepad.org/6Fd8V6z0#define _CRT_SECURE_NO_WARNIGNS//程序看起来有点复杂是因为考虑到字母数大于9个的时候,需要转换一下存进字符串,最后的字符串保存在了一个字符数组内了#include #include #include int number_to_char(int number, char *char_ne原创 2016-06-06 19:59:34 · 583 阅读 · 0 评论 -
C语言判断一个数是否是质数(蒙格马利快速幂算法)
前言:今天搞了一天这个 蒙格马利 什么的,我自己肯定是搞不定,参照了很多资料,写一下自己的理解总结,防止忘了没地方看。只是我个人的理解,对不对还得另说,一些公式还是不懂,只是大概的理解了下,各位当做参考吧问题描述:判断一个数是否是质数?解题思路:一开始我想的方法就是用For循环一个一个判断,后来看资料说这是最笨的方法,好吧,我得承认我数学太渣下面开始介绍点要用到的知原创 2016-06-18 17:33:53 · 3187 阅读 · 1 评论 -
质数因子
#define _CRT_SECURE_NO_WARNINGS#include #include #include int JudgeDigit(long num);unsigned int Montgmery( int num, long index, long mod)//蒙哥马利快速幂算法 (num^index)%mod{ int tmp = 1;//保存奇数是剩下的那原创 2016-06-18 19:45:26 · 385 阅读 · 0 评论 -
循环链表
循环链表 和之前的链表原理一样头文件:#ifndef __CIRCLELIST_H__#define __CIRCLELIST_H__#include "stdio.h"#include "stdlib.h"typedef void CircleList;typedef struct _tag_CircleListNode{ struct _tag_CircleLis原创 2016-08-03 18:14:11 · 236 阅读 · 0 评论 -
顺序链表的实现
写了一下顺序链表,为了防止自己忘记,于是乎写在博客里方便查看。程序中的容错处理做的不好,是我懒了,就简单处理了一下下面才给出这儿一套API函数头文件:#ifndef __SEQLIST_H__#define __SEQLIST_H__#include #include #include typedef void SeqList;typedef void Seq原创 2016-08-02 14:06:13 · 481 阅读 · 0 评论 -
线性表链式存储
首先是头文件:#ifndef __NODELIST_H__#define __NODELIST_H__#include "stdio.h"#include "stdlib.h"typedef void NodeList;typedef struct _tag_NodeListNode //单个节点{ struct _tag_NodeListNode * next;}Nod原创 2016-08-02 19:44:52 · 209 阅读 · 0 评论 -
双向链表
双向链表示意图如下:下面是双向链表的头文件:#ifndef __LINKLIST_H__#define __LINKLIST_H__#include "stdio.h"#include "stdlib.h"typedef void LinkList;typedef struct LinkListNode{ struct LinkListNode * nex原创 2016-08-07 11:31:10 · 213 阅读 · 0 评论 -
栈的线性存储
栈的特性是先入后出,下面给出栈的线性存储:下面是线性栈和线性链表的头文件:#ifndef __SEQLIST_H__#define __SEQLIST_H__#include #include #include typedef void SeqList;typedef void SeqListNode;SeqList * SeqList_Create(in原创 2016-08-07 11:44:13 · 519 阅读 · 0 评论 -
栈的链式存储
下面是栈的链式存储:下面是头文件:#ifndef __LINKSTACK_H__#define __LINKSTACK_H__#include "stdio.h"#include "stdlib.h"#include "nodelist.h"#include "string.h"typedef void LinkStack;typedef void LinkS原创 2016-08-07 11:53:30 · 339 阅读 · 0 评论 -
中缀转后缀
中缀转后缀方法:遇到数字:直接输出 遇到'(':压栈 遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。 遇到符号则判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则出栈并输出,直到优先级相等或栈为空;如果栈顶符号的运算优先级低于或等于当前符号的运算优先级,则将当前符号压栈。 处理完字符串后将栈中剩余的符号全部输出例如:2+(3-1)*5原创 2016-08-07 12:56:53 · 735 阅读 · 0 评论 -
二叉树中序遍历递归算法,求树的高度,以及拷贝树
#include #include #include typedef struct BiTNode{ int date; struct BiTNode *lchild, *rchild;//二叉树左枝,右枝}BiTNode;void inOrder(BiTNode *root)//中序遍历递归算法{ if (root == NULL) { return; } inO原创 2016-08-09 15:22:35 · 949 阅读 · 2 评论 -
二叉树中序遍历非递归算法
#include "iostream"#include "stack"using namespace std;typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode;/*步骤1:如果结点有左子树,该结点入栈;如果结点没有左子树,访问该结点;步骤2:如果结点有右子树,重复步骤1;原创 2016-08-09 15:25:38 · 513 阅读 · 3 评论 -
两种通用链表(Linux 内核链表)
Linux 内核链表(通用版)以下是头文件#define _CRT_SECURE_NO_WARNINGS#ifndef __LINKLIST_H__#define __LINKLIST_H__#include #include #include #include typedef struct _Tag_LinkNode //用来保存下一个节点{ struct _Tag_原创 2016-10-20 23:50:45 · 1643 阅读 · 0 评论