
c语言
GangStudyIT
搬砖搬砖。。。
展开
-
c语言中的问题与解决
在学习c语言中会有很多的问题,我把我学习中遇到的一些小问题给大家分享一下,如果遇到相同的问题希望能有帮助。 第一个问题,在c语言中定义一个变量,如果定义的变量是在运行的程序后边,就会出现【d:\c编程\day02\day02\huanwei.c(10) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)】举一个例子#includeint mai原创 2017-10-03 11:31:25 · 983 阅读 · 0 评论 -
运用字符串中位置的调换,比较一个旋转与另一个字符串是否相同。上篇博客的拓展。
对上一篇博客的拓展题。2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC 对于这道题,咱们和上一篇代码原理大同小异。来看代码具体实现原创 2017-11-05 22:35:55 · 393 阅读 · 0 评论 -
模拟c语言strcat库函数。。
在c语言中处理有关字符串的函数有很多,比如strlen字符长度,strcpy字符串的拷贝,strstr在字符串中查找子字符串,strcat把一个字符串添加到另一个字符串后边,等等。。那么今天我们来模拟一下strcat库函数,自己模拟一下。首先strcat的用法:char *strcat( char *strDestination, const char *strSource);原创 2017-11-15 20:11:23 · 281 阅读 · 0 评论 -
回调函数,qsort函数,与qsort函数的模拟
回调函数:回调函数就是一个通过函数指针调用的函数,如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这个函数为回调函数,回调函数不是由该函数的实现方法直接调用,而是在特定的事件或者条件时由另外的一方调用,用于对该事件或者条件响应。简单的说,就是一个函数的参数里面有一个函数指针参数,而这个函数指针对应的函数要自己用函数实现。很通俗,具体用途,我们来原创 2017-12-01 13:17:00 · 537 阅读 · 0 评论 -
库函数strcmp的实现
在c语言中,库函数strcmp是一个运用很频繁的函数,它的功能是比较两个字符串的大小,字符串怎么比较大小呢?其实是比较相同位置上字符的ASC码值的大小。举个例子:"abc"和"acb"两个字符串,比较大小,很显然是后者大,我们来分析一下:比较大小是以一个一个字符比较,a与a比较相同,再比较下一个,b与c比较很显然c的ASC码值要大,所以后者大。那么有人要问比较这里后面就不用比较原创 2017-11-23 20:38:33 · 1828 阅读 · 0 评论 -
代码在内存中的分布。函数在栈中的调用过程,即函数的栈帧。
代码在内存中的分布,函数调用时候,在栈中的逐步进行。即函数的栈帧。。。原创 2017-11-06 19:30:56 · 665 阅读 · 0 评论 -
库函数strstr的模拟。。
strstr函数是在一个字符串中查找子字符串第一次出现,返回子字符串第一次出现的首地址,没有查找到返回null。怎么理解呢?意思就是比如abcde和bcde两个字符串,查找到了就返回abcde中b的地址;来看具体代码:char *my_strstr(const char *string,const char *strCharSet ){ char *pat = (char *)st原创 2017-11-23 21:50:21 · 394 阅读 · 0 评论 -
什么是指针?关于指针的数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解
对指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解。。。。原创 2017-11-24 17:03:47 · 462 阅读 · 0 评论 -
模拟memcpy和memmove函数,以及他们的区别。。
memcpy是无类型拷贝,也是一个返回值为void *类型的函数,接受的两个参数也是void *类型,还有一个参数是要拷贝的大小。具体函数怎么实现,看代码:void *my_memcpy(void *dest,const void *src,size_t count){ void *p = dest; assert(dest); assert(src); while(count-原创 2017-11-25 20:09:40 · 271 阅读 · 0 评论 -
对于结构体,联合体,枚举的总结。内存对齐及结构体大小问题,位段问题。
在c语言中,学习自定义类型,有数组,结构体,联合体,枚举。现在咱们来讨论一下后三者。结构体原型声明:struct tag{ member-list;}variable-list;这样对于大都数没学过结构体的人来说看起来不是很懂。那么咱们来具体的实例:struct stu //stu为结构体名{ char name[20]; //成员 int age; //成原创 2017-12-17 17:18:15 · 424 阅读 · 0 评论 -
将一个字符串的前n个字符旋转到后面,采用左旋,或者右旋。
将一个字符串中的字符旋转位置,如旋转两个字符把ABCD变成CDAB。原创 2017-11-05 21:58:49 · 837 阅读 · 0 评论 -
在杨氏矩阵中判断是否有自己想要的数
杨氏矩阵一般来说都是n*n的矩阵,是从左到右,从上到下递增的。所以我们要判断是否存在自己想要的数呢?那么看看我自己写的一个小代码:#includeint search(int arr[3][3],int key,int size){ int i; for(i=0; i<size; i++) { if(arr[i][i] == key) { return 1;原创 2017-11-04 23:56:04 · 351 阅读 · 0 评论 -
用数据结构中的快速排序中Partion函数(交换法)的思想解题
今天遇到这样的一道题:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 意思是给出的数组中把是奇数的数放在数组前面,而偶数放在后面。咱们先不多说,先看我写得代码:#include<stdio.h>void divide(int arr[],int size){ int i = 0; int temp =...原创 2017-11-04 23:43:17 · 616 阅读 · 0 评论 -
在C语言中操作符及用法
操作符是一个高级语言的基础,那么有些比较频繁的一些操作符大家可能都很熟悉,但对于不常见的操作符可能有时候也记不清楚,那么今天小编总结了一些c语言中的操作符,给大家分享,总结不足希望多多指导。。操作符有一下几种:1,赋值操作符 +=,-=,*=,/=,%=,>=,&=,|=,^=,=; 2,算数操作符 “+”,“-”,“*”,“/”;注意“%”原创 2017-10-19 16:23:56 · 1160 阅读 · 0 评论 -
数据结构中的折半查找,查找对象为有序数组。用getchar()在写出输入字母输出相应的大小写。
折半查找有序数组,用C语言实现。。运用函数调用。#include<stdio.h>int find(int arr[],int key,int size) // arr 需要排序的数组 key 查找的值 size 数组长度{ int left = 0; int right = size; int mid = 0; while(left<=right) // 当le...原创 2017-10-17 22:33:09 · 834 阅读 · 0 评论 -
strcpy库函数的实现。。strncpy库函数的实现
今天我在写完代码后,想起strcpy这个库函数,经过查阅,自己总结出来一点,也顺便再写一遍strcpyh函数,也是让自己练习练习。先来了解strcpy函数的功能,strcpy是将src地址(源)开始到'\0',包括'\0'的字符串拷贝到dst地址(目的)中去。来看具体代码 char *strcpy(char *dst,const char *src){ char *d = d...原创 2017-10-29 21:04:26 · 720 阅读 · 0 评论 -
求第n个斐波那契数,用迭代和递归两种方法。
什么叫斐波那契数呢?这个数是由来是意大利数学家,斐波那契在研究兔子问题得来的一个数学问题。具体形式是类似于这样一个数列1 1 2 3 5 8 13 21···;简单理解前面两个数加起来是后面数。所以求第n个数具体代码我们来看看:#include#includeint recursion(int input)//递归{ assert(input>0);原创 2017-11-08 21:28:36 · 1841 阅读 · 0 评论 -
关于对getchar一些小小的自学理解。。。
小编今天写了一个小程序关于getchar()。。题目:编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。 题目什么意思呢?意思就是让从键盘获取一段源代码判断代码中的大括号是否成对且相互匹配。那么先说说getchar() 自己总结的一下。getchar()最主要功能是从键盘上获取一个字符,但用法却很灵活也很有特点。比如一般要获取多个字符的时候与w原创 2017-10-15 12:58:50 · 419 阅读 · 0 评论 -
用递归的方法把一个无符号整数的每一位数字单独写出来,并且计算出每一位加起来的和。
这个题的具体含义是什么呢?例如:给出一个无符号整数:1234 一千两百三十四;然后变成:1 2 3 4;再把它们加起来:10;所以很简单的一道题,但是我们要用递归的思想写出来;所以代码如下:#include#includeint add_recursion(int input){ int n = 0; if(input<10) { r原创 2017-11-09 21:58:56 · 829 阅读 · 0 评论 -
在c语言中宏和函数的区别
关于c语言中的宏,自己来总结一下。简单来说,宏就是在c语言中简单的文本替换,这是简单的理解,严格的说不是很准确,因为在宏中存在一个文本条件编译,所以有一定的判断,宏是在c语言中的预处理阶段就已经处理完成。函数呢,就要分为两种了。第一种封装成库。如果函数在动态库中,那么调用就是在函数运行阶段 。如果在静态库中,就在编译阶段就把相应的头文件copy一份到代码中,这样的代码的效率会有原创 2017-11-01 21:45:33 · 913 阅读 · 0 评论 -
用c语言编写求n的k次方函数,用迭代和递归两种方法
在c语言中求n的k次方函数。虽然c语言中库函数中已经存在,但是知道它的代码或者实现思想也是很必要的。那么我们用两种方式来实现:第一种:迭代法(效率在数据量比较大时要相比递归快一点)int power_ineration(int n,int k)//迭代{ int q = n; int p = k-1; if(k == 0) { return 1; } while(p--) { ...原创 2017-11-10 21:24:22 · 12218 阅读 · 2 评论 -
实现把一个无符号数的二进制位模式从左到右反转后输出。例如:在32位机器下,把25,0~011001变成100110~0
今天做了一道关于位运算的题。题目:实现把一个无符号数的二进制位模式从左到右反转后输出。例如:在32位机器下,25的二进制为0000 0000 0000 0000 0000 0000 0001 1001 变成1001 1000 0000 0000 0000 0000 0000 0000 即2550136832.我采用的是移位来得出结果,具体代码如下:#incl原创 2017-11-02 23:40:56 · 1685 阅读 · 0 评论 -
删除链表中重复的节点(经典链表面试题)
题目 删除链表中重复的节点 在一个排序,如何删除重复的节点? 例如:1 -&gt; 2 -&gt; 3 -&gt; 3 -&gt; 4 删除后是 1 -&gt; 2 -&gt; 4分析在链表的面试题中,重要一点是要注意对链表的情况要全部考虑到,或许你在看到上面的例子后按照给出的例子大笔一挥,写出代码后,那么你很可能就已经凉凉。。。首先我们应该考虑大部分...原创 2018-06-08 15:07:18 · 26622 阅读 · 9 评论