![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
zhuhuiyu_
一个在努力中的程序员!!!加油!!
展开
-
C语言 程序 取随机数再排序去重
#include #include int main(){ int num; int *a; int i; int j; int tmp; int n = 0; printf("please input a number of random numbers:\n"); scanf("原创 2016-06-09 16:17:21 · 2841 阅读 · 0 评论 -
C语言 程序 素数圈圈
题目:将1,2,3,。。。,20这20个连续的自然数排成一圈,使任意两个相邻的自然数之和均为素数。分析:用两个数组,一个数组判断是否使用过这个数,一个数组存储这个圈。在找不到与前面的数相加为素数并没有使用过时,用i--,再看前面的数。下面是我写的程序:#include int prime_num(int num)//判断是否为素数{ int原创 2016-07-29 17:44:57 · 1318 阅读 · 0 评论 -
C语言 避免野指针!!!
想要避免野指针,首先要知道什么是野指针?野指针就是随机指向内存中一块内存。野指针可能导致内存泄漏,在指向不可访问的内存或已经释放的内存的时候,就会出现段错误,也就是内存错误。如何避免野指针?1在定义指针时,初始化为空。同样在释放指针后,也有将指针指向NULL。NULL 是个宏,指向0地址,0地址是不允许访问和操作的!#define NULL (void *)0指向N原创 2016-07-20 19:11:23 · 574 阅读 · 0 评论 -
C语言 malloc realloc calloc
1 malloc 在C语言中,用到指针就会想到动态分配空间,动态分配空间最基础的就是malloc。头文件:stdlib.h或malloc.h(realloc和calloc也一样)void *malloc(size_t size);功能:分配长度为num_bytes字节的内存块返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回原创 2016-07-21 09:17:25 · 313 阅读 · 0 评论 -
C语言 数组VS指针
数组和指针完全是不一样的两个东西,但他们可以完成相同的功能。所以我们需要区分他们,大概可以从5个方面来区分:1 空间分配:数组:如果是局部变量,就在栈上分配一块连续的空间,分配的空间一般要比实际使用的大。属于静态分配空间。指针:在堆上分配空间,是动态分配空间2 访问效率:数组属于直接访问,所以效率较高。而指针需要先访问指针的地址,再找到它所指向的空间,属于间接访原创 2016-07-21 10:21:45 · 388 阅读 · 0 评论 -
C语言 函数小总结
函数乃C语言精华之所在。对于函数我们需要知道:1 为什么要用函数?函数的好处大致可以分为3点:1提高代码的复用性2提高代码的维护性3可以实现迭代开发,也就是可扩展开发。2 调用函数到底做了什么大致为5步:1通过函数名找到函数的入口地址,2给形参分配空间,3传参:就是把实参变量对应的空间的值传给形参,4执行函数体里的语句,5函数返回并释放内存空间。这也就是为什么修原创 2016-07-21 16:16:40 · 684 阅读 · 0 评论 -
关于全局变量,如何被多个.c文件共享问题
这里有三个问题,都是比较类似的。1. 如果我要在别的文件引用本文件的全局变量你有哪几种方法?extern、使用函数传参、使用引用头文件的方式。2. 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此转载 2016-09-22 15:20:11 · 1376 阅读 · 0 评论 -
C语言 函数返回值小总结
函数返回值小总结我得出了以下结论:1函数可以返回局部变量,局部变量虽然会被释放但其实返回的是复制。2函数不可以返回局部变量的地址,局部变量被释放了,那它的地址里面的值也没有了。3函数要返回的地址可以把局部变量定义成静态的或者使其变成形参,就可以了。例子:#include #include char test1(){ char a = '原创 2016-11-03 00:14:43 · 459 阅读 · 0 评论 -
C语言部分关键字
1. static: 修饰局部变量(只在初次运行时,进行初始化工作) 全局变量(只是本.c文件可见) 函数(类似于全局变量)2. extern:编译器并不匹配extern的函数的参数列表,只做函数名匹配!3. typedef:重定义过的数据类型,对于typedef char* newC; newC a,b;,这时候会将a b都定义为char *,而使原创 2016-10-23 23:36:50 · 237 阅读 · 0 评论 -
C语言的良好编程习惯
从编程菜鸟一路走来,慢慢对编程习惯有了一个新的认识。因为曾经我写的代码的可读性令自己也感到哭啼皆非,搞得自己晕头转向。今天特意来分享一下自己的一些关于编程习惯的心得。很多人以为代码一敲完,能得到预期的结果,就万事ok,其实不然。后面的程序调试、维护和升级是一个项目中很重要的一部分,这就要求我们必须规范编程习惯。(1)模块化编程试想一下,如果一个项目的所有功能都在一个main转载 2016-09-28 23:10:21 · 355 阅读 · 0 评论 -
C语言 链表尾插入和逆序
链表逆序只需要一次遍历,用三个指针。#include #include struct Node{ char ch; struct Node *next;};void add(struct Node *head,char ch)//尾插入{ struct Node *tmp = head; struct Node *原创 2016-10-25 23:36:55 · 426 阅读 · 0 评论 -
关于全局变量,如何被多个.c文件共享问题
这里有三个问题,都是比较类似的。1. 如果我要在别的文件引用本文件的全局变量你有哪几种方法?extern、使用函数传参、使用引用头文件的方式。2. 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变转载 2016-09-30 23:03:38 · 463 阅读 · 0 评论 -
变量存储位置和堆栈的区别
写了个程序,看了下各种变量的存储位置:明显的看出全局变量还有static是存储在一起的,局部变量在一起,常数有自己的地方,malloc也是。从而可以知道虚拟地址空间的分配:栈空间存放局部变量,函数形参堆空间存放malloc,relloc,calloc分配空间、数据段里面有BSS区,rodate区,date区,BSS存放未初始化全局变量,rodate存放常量,原创 2016-10-17 13:39:19 · 778 阅读 · 0 评论 -
C语言string.h常用函数总结
转载请注明出处:http://blog.csdn.net/zhubin215130/article/details/8993403void *memcpy(void *dest, const void *src, size_t n);从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中.void *memmove( void*转载 2016-10-03 23:09:19 · 575 阅读 · 0 评论 -
c语言 程序 快速排序
给出n和n个整数,从小到大给他们排序#include #include void rank(int a[],int n,int begin,int end);int main(){ int num; int a[100000]; int i; printf("please input the numbe原创 2016-06-09 16:21:27 · 656 阅读 · 0 评论 -
C语言 命令行参数 函数指针 gdb调试
作者 : 万境绝尘转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshuliang.com/?post=29.1. C语言命令行参数详解命令行参数 : 有两个参数 int argc 和 char **argv;转载 2016-10-04 23:09:04 · 377 阅读 · 0 评论 -
C语言 程序 简单二进制题目
题目:这题是2016年校招编程题是比较简单的,好像是小米的。分析:这题很简单,思路就是32位一位位异或计数就好。这题也不需要做入口参数检查。原创 2016-10-05 23:55:14 · 590 阅读 · 0 评论 -
C语言 程序 画圆、画圆和y=x^2
绘制圆在屏幕上用“*”画一个空心的圆 *问题分析与算法设计打印圆可利用图形的左右对称性。根据圆的方程:R*R=X*X+Y*Y可以算出圆上每一点行和列的对应关系。 程序思想和之前的两个程序一样。整个圆向右平移R个单位,因为长宽比不一样所以还要有个系数,下面是我写的程序#include #include #define R 10#defi原创 2016-07-13 10:21:29 · 11038 阅读 · 2 评论 -
C语言 程序 打印日历
请打印出任意年份的日历这个题目理解起来很简单,也没什么高深的算法,就是有一点点“啰嗦”。#include int print_mon(int year,int mon ,int week){ int day; int i; if(mon 12 || week 6)//出现不可能的值退出程序 {exit(1);原创 2016-07-17 16:00:19 · 1946 阅读 · 0 评论 -
C语言 程序 位运算
1. 题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数用一个循环,和1与判断是否为1,若是1计数。#include int count1(int b){ int n = 0; int i = 0; while(i {if(b & 1){ n++;}b = b >> 1;//右移i++;原创 2016-07-16 16:38:57 · 410 阅读 · 0 评论 -
C语言 程序 杨辉三角实现
9.杨辉三角形在屏幕上显示杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1………………………………..*问题分析与算法设计杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很原创 2016-07-16 10:29:00 · 11289 阅读 · 0 评论 -
C语言 程序 cantor表
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…输入第几项,输出对应的数。原创 2016-06-09 16:24:08 · 1889 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可转载 2016-06-09 16:29:43 · 314 阅读 · 0 评论 -
C 对于C语言可移植性的思考
我相信学过C语言的同学,都会在书中看到C语言特点一定有:可移植性。但是什么是可移植?如何才能可移植?C语言是如何做到可移植的?对于初学者,可移植可能是一个经常遇到却很神秘的词。我想通过这篇文章来表达我对于可移植性的一些想法。 首先,在这里铺垫一下。学过Win32程序设计的人肯定都听说过API(Application Program Interface)。我就先说说API,高手绕过。API转载 2016-06-04 22:33:21 · 8058 阅读 · 0 评论 -
C语言 定义变量(右左法则)
右左法则:首先从最里面的圆括号(应该是未定义的标识符)看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。(指针,括号外是指向的内容;数组,他左边是元素的类型)用变量a给出下面的定义a)一个整型数(An integer)b)一个指向整型数的指针(A pointer to原创 2016-06-06 14:57:08 · 779 阅读 · 0 评论 -
C语言的标准和Gcc遵循标准
C语言的标准K&R C 1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: · 结构(struct)类型· 长整数(long int)类型·原创 2016-06-06 15:24:32 · 1128 阅读 · 0 评论 -
操作系统内核为啥用C语言?(C语言特点)
世界上绝大部分的操作系统内核都是用C语言编写的,然而这是为什么喃?这个问题我们就必须结合C语言的特点了!C语言有三大特点:1 非常好的可移植性可移植性就是指与软件从某一环境转移到另一环境下的难易程度。也就是更换不同体系结构的软/硬件平台,修改的代码越少越好。因为不同机器的C语言源码(主要是函数库中的函数名和其参数)都是差不多的,所以C语言的可移植性好。2原创 2016-07-11 11:04:10 · 2391 阅读 · 0 评论 -
C语言 程序 用*显示cos(x)和sin(x)
1.绘制余弦曲线在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线*问题分析与算法设计 如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。 关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中原创 2016-07-11 10:24:13 · 4954 阅读 · 2 评论 -
C语言 程序 绘制余弦曲线和直线 , 绘制cos(x)和sin(x)
绘制余弦曲线和直线在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。*问题分析与算法设计本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别原创 2016-07-11 16:00:32 · 4863 阅读 · 0 评论 -
面向过程处理机制VS面向对象处理机制
面向过程处理机制就是把要实现的功能分为一步一步,也就是一个个函数。先做**,再做**,然后是**,最后是**。每一步非常具体,完成了所有步也就实现了这个功能。也就是实现原理。面向对象处理机制就是将要解决的问题分解成各个对象,不是为了实现每个步骤,而是描叙某个事物在整个解决问题的步骤中的行为。一个对象是个方法面面的系统,也就是实现效果。看到一个特别清楚的例子区原创 2016-07-11 16:26:26 · 634 阅读 · 0 评论 -
C语言 程序 去最高最低分的评分 , 偏心和不偏心的评分
4.歌星大奖赛在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。*问题分析与算法设计这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。下面是我写的程序,在输入时算出最大最小的是第几个,再算平均分,然后再输出。#include #define原创 2016-07-14 10:10:15 · 1978 阅读 · 0 评论 -
C语言 获取字符串的方法
在C语言中,获取字符串主要有三种方法1 scanf("%s",src);这个方法很常见,遇到空格和回车结束。例:#include int main(){char src[100];scanf("%s",src);printf("%s",src);return 0;}scanf也可以遇到空格不结束。%原创 2016-07-14 11:06:06 · 30891 阅读 · 0 评论 -
C语言 关键字!!面试常碰到!
关键字register 寄存器变量1 作用:请求编译器尽可能(资源有限喃!)将变量保存在CPU的内部寄存器中。2 目的:为了节省CPU从内存中读取数据的时间,从而提高了程序的运行效率。3 什么时候使用?频繁被访问的变量。4 注意事项: 1 register只能修饰局部变量不能修饰全局变量 (因为全局原创 2016-07-25 18:43:55 · 429 阅读 · 0 评论 -
printf 和 scanf 的使用
printf和scanf常常被使用,我也查阅写资料了解了部分printf和scanf的使用。要是有新发现继续更新。要了解printf,首先要知道printf是一个行缓冲,也就是满一行输出,只有两种情况不满一行也输出,一是程序结束时,清理缓冲区。二是后面有scanf输入,在输入前会先清理缓冲区。(因为scanf和printf使用一个缓冲区)常规使用可以看这个,感觉写的蛮清楚点:h原创 2016-07-14 15:41:27 · 1237 阅读 · 0 评论 -
C语言 程序 字符串转换成整型,整型转换成字符串
atoi这个函数的实现要考虑正负还有字母等情况下面是字符串转换成整型数#include #include int my_atio(char *String);int main(){ char String[100]; int num; printf("please input a string:\n");原创 2016-07-14 17:20:26 · 8227 阅读 · 1 评论 -
C语言 i++ ++i 傻傻分不清
i++就是先使用再相加(使用后是指此语句结束,是 ; , 之类的符号之后),++i就是先相加使用我感觉i++,++i使用要分为两种情况1 是在算式计算中i++就先不管它,等这条语句结束再相加。例:int i;i = i * ((i++) + (++i));先算(i++) + (++i) i++中的加加等遇到;后再加所以是3 + 3 = 6i * 6原创 2016-07-14 19:31:45 · 740 阅读 · 1 评论 -
C语言 程序 阶乘尾数零的个数
7.阶乘尾数零的个数100!的尾数有多少个零? *问题分析与算法设计 可以设想:先求出100!的值,然后数一下末尾有多少个零。事实上,与上题一样,由于计算机所能表示的整数范围有限,这是不可能的。 为了解决这个问题,必须首先从数学上分析在100!结果值的末尾产生零的条件。不难看出:一个整数若含有一个因子5,则必然会在求100!时产生一个零。因此问题转化为求1到100这原创 2016-07-14 20:52:05 · 4823 阅读 · 0 评论 -
C语言的库的创建
1. 库2. 静态库:ar –rcsvlibXXX.a func1.o func2.o func3.o (- r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。 -s :写入一个目标文件到库中 a – XXX.o 在库的最后添加一个新文件 v :显示信息 c:表示只编译,不链接)3. 静态库的使用:gcc main.c –o testMa原创 2016-11-11 19:57:42 · 1337 阅读 · 0 评论