c语言
文章平均质量分 66
别是清欢
这个作者很懒,什么都没留下…
展开
-
C语言进阶--程序环境和预处理
C语言进阶--程序环境和预处理原创 2023-07-07 11:23:21 · 404 阅读 · 0 评论 -
C语言进阶--文件操作
C语言进阶--文件操作原创 2023-07-05 20:25:25 · 440 阅读 · 0 评论 -
C语言进阶--动态内存管理
C语言进阶--动态内存管理原创 2023-06-29 20:52:24 · 917 阅读 · 0 评论 -
C语言进阶--自定义类型详解
C语言进阶--自定义类型详解原创 2023-06-28 15:00:51 · 386 阅读 · 0 评论 -
C语言进阶--字符函数与内存函数
C语言进阶--字符函数与内存函数原创 2023-06-21 12:28:31 · 312 阅读 · 0 评论 -
C语言进阶--指针(C语言灵魂)
C语言进阶--指针(C语言灵魂)原创 2023-06-15 16:40:34 · 5117 阅读 · 1 评论 -
C语言进阶--数据的存储
C语言进阶--数据的存储原创 2023-06-06 13:10:33 · 591 阅读 · 0 评论 -
实用调试技巧与案例分析
C语言--实用调试技巧原创 2023-06-01 17:32:07 · 651 阅读 · 0 评论 -
C语言深度解析--结构体
C语言深度解析--结构体原创 2023-05-31 17:32:17 · 731 阅读 · 0 评论 -
C语言深度解析--指针
C语言深度解析--指针原创 2023-05-29 21:44:08 · 826 阅读 · 0 评论 -
C语言深度解析--操作符
C语言深度解析--操作符原创 2023-05-29 16:05:30 · 1178 阅读 · 0 评论 -
C语言小游戏--扫雷
C语言小游戏--扫雷原创 2023-05-24 11:30:37 · 168 阅读 · 0 评论 -
C语言小游戏--三子棋
C语言小游戏--三子棋原创 2023-05-23 20:09:17 · 545 阅读 · 0 评论 -
C语言深度解析--数组
C语言深度解析--数组原创 2023-05-23 13:33:18 · 1250 阅读 · 0 评论 -
C语言深度解析--函数
C语言深度解析--函数原创 2023-05-18 21:01:39 · 549 阅读 · 0 评论 -
C语言深度解析--分支语句和循环语句
C语言深度解析--分支语句和循环语句原创 2023-05-15 16:55:03 · 710 阅读 · 0 评论 -
初识C语言
C语言初识原创 2023-05-09 21:27:13 · 896 阅读 · 0 评论 -
不使用(a+b)/2这种方式,求两个数的平均值。
方法一:#include#include#pragma warning(disable: 4996)int main(){ int data1 = 0; int data2 = 0; printf("please enter two numbers: "); scanf("%d %d",&data1,&data2); printf("ret: %d\n", (data1&d原创 2017-10-28 18:40:36 · 166 阅读 · 0 评论 -
面试题:fun(484)的返回值是
题目:fun(484)的返回值是()bool fun(int n){ int sum=0; for(int i=1;n>sum;i=i+2) sum=sum+i; return(n==sum);}A.True B.False 答案:A 解析:函数fun的基本功能是:如果一个整数n能够写成从1开始的连续若干个奇数之和,则返回True。分析函数fun(n)提炼出数学原创 2017-12-22 21:16:05 · 744 阅读 · 0 评论 -
面试题:循环语句执行过程
题目一:(奇虎360) 以下程序运行时,若输入1abcedf2df<回车>,则输出结果是#include<stdio.h>#pragma warning(disable:4996)int main(){ char a = 0, ch; while ((ch = getchar()) != '\n') { if (a % 2 != 0 && (ch >=原创 2017-12-22 20:49:04 · 303 阅读 · 0 评论 -
面试题:for语句执行过程
题目一:(奇虎,360) 判断for(int i=0,k=1;k=0;i++,k++) A.判断循环的条件不合法 B.陷入无限循环 C.循环一次也不执行 D.循环只执行一次 答案:C 解析:for(表达式1;表达式2;表达式3)… 题目中的”表达式2”也称为”条件表达式”,写成了k=0;,是赋值语句,所赋的值就是赋值语句的返回值,这个值正好是0,造成了for语句的条件为”假”,不会执原创 2017-12-22 13:52:41 · 2028 阅读 · 0 评论 -
堆栈溢出一般是由什么原因导致的?
题目:堆栈溢出一般是由什么原因导致的? 答:1.函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。 2.动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态空原创 2017-12-22 11:30:54 · 38247 阅读 · 0 评论 -
全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
答:有区别。 全局变量保存在内存的全局存储区,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。引申: C语言经过编译之后将内存分为以下五个区域 1.栈:由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数,局部变量,返回值及函数返回地址。操作方式类似数据结构中的栈。 2.堆:用于程序动态申请分配和释放空间。C语言中的malloc和free,原创 2017-12-22 11:08:33 · 5488 阅读 · 0 评论 -
宏指令
题目:#include<filename.h>和#include"filename.h"有什么区别? 答:使用宏指令#include<filename.h>是通知编译器在预处理时要包含开发环境中提供的名为filename.h的头文件。使用宏指令#include"filename.h"是要求编译器在预处理时优先包含编程者指定路径下的名为filename.h的头文件,如果在指定路径下没有发现名为fil原创 2017-12-22 10:06:01 · 1100 阅读 · 0 评论 -
模仿qsort的功能实现一个通用的冒泡排序。
题目:模仿qsort的功能实现一个通用的冒泡排序。 代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct S{ char name[10]; float score;}stu;int cmp(const void*n1, const void*n2) {原创 2017-11-22 21:44:00 · 278 阅读 · 0 评论 -
写冒泡排序可以排序多个字符串.
题目: 写冒泡排序可以排序多个字符串。 代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>void string_sort(char *str[], int len){ int i = 0; int j = 0; for (i = 0; i < len - 1; i++) {原创 2017-11-22 21:06:49 · 319 阅读 · 0 评论 -
使用main函数的参数,实现一个整数计算器.
题目:使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:命令行参数输入:test.exe -a 1 2 执行1+2输出3 代码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>原创 2017-11-22 20:58:51 · 688 阅读 · 0 评论 -
C语言中,函数指针数组的用途:转移表
计算器的实现: 方法一:#include <stdio.h>int add(int a, int b){return a + b;}int sub(int a, int b){return a - b;}int mul(int a, int b){return a*b;}int div(int a, int b){return a / b;}int main()原创 2017-11-16 22:43:50 · 372 阅读 · 1 评论 -
从斐波那契到尾递归
首先,什么是尾递归?尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。 尾部递归的函数有助于将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从计算机的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个堆栈,因为电脑只需要将函数的参数改变再原创 2018-01-25 23:20:14 · 253 阅读 · 1 评论 -
C语言函数调用三种方式:传值调用,引用调用和传地址调用。
一.试题: 考题一:程序代码如下: void Exchg1(int x, int y) { int tmp; tmp=x; x=y; y=tmp; printf(“x=%d,y=%d/n”,x,y) } void main() { int a=4,b=6; Exchg1 ...原创 2018-02-12 19:51:24 · 1588 阅读 · 0 评论 -
内部排序之归并排序
1.归并排序归并排序,顾名思义就是将两个序列合并到一起,并且使之有序。该算法是分治法的一个典型应用,其主要思想是将已有序的两个子序列合并,在这个过程中,对其元素进行比较排序,从而得到一个完整的有序的序列。也就是先要保证小范围的数据有序,再使大范围的序列有序。因此,若要使用归并排序对一个序列进行排序,采用分治法思想,需要先将比较大的原始序列划分为较小的序列,使较小的序列有序。分出来的序列...原创 2018-03-21 20:46:44 · 579 阅读 · 2 评论 -
vs2013闪退问题的解决办法
1.在return前加上system(“pause”);2.在return前加上getchar(); 3.按ctrl+F5运行; ctrl+F5是不进行调试,直接执行DEBUG生成的程序,会在最后面 自动“pause ”.4.修改项目配置; 右键点击项目,在右键菜单中选择属性,然后在弹出的对话框左侧列表中中选择“配置属性”–>“链接器”–>“系统”,然后在右侧的列表中,...原创 2018-03-05 11:28:16 · 4234 阅读 · 0 评论 -
C语言之内存分配
在C语言的运行过程中,需要内存来存储数据。C语言使用的内存总体可以分为两类:一类是静态区,一类是动态区。静态数据存储区包含:只读数据区、已初始化的读写数据区、未初始化的读写数据区。动态数据存储区包含:栈内存区域、堆内存区域 C语言编写的程序经过编译-连接之后,将形成一个统一的文件,它由几个部分组成: 代码段(code或text)、只读数据段(RO dat...原创 2018-02-24 23:19:16 · 712 阅读 · 0 评论 -
浅谈C语言中的堆
操作系统堆管理器管理:堆管理器是操作系统的一个模块,堆管理内存分配灵活,按需分配。 大块内存: 堆内存管理者总量很大的操作系统内存块,各进程可以按需申请使用,使用完释放。 程序手动申请&释放: 手工意思是需要写代码去申请malloc和释放free。 脏内存: 堆内存也是反复使用的,而且使用者用完释放前不会清除,因此也是脏的。 临时性: 堆内存只在...转载 2018-02-24 22:45:59 · 478 阅读 · 0 评论 -
栈和堆内存的区别
1.1)栈:为编译器自动分配和释放,如函数参数、局部变量、临时变量等等 2)堆:为成员分配和释放,由程序员自己申请、自己释放。否则发生内存泄露。笔试题目:请解释一个栈内存与一个堆内存的区别,请分析下面代码运行是否有问题,如果有问题请改正。char* GetMemory(void){char p[] = “Hello world”;return p;}void m...原创 2018-02-24 22:43:07 · 182 阅读 · 0 评论 -
写一个函数找出一个整数数组中,第二大的数
题目:写一个函数找出一个整数数组中,第二大的数。算法分析:1)假设数组中的前两个元素就是最大和第二大,即max和smax;2)从数组的第二个元素开始遍历数组,当有元素大于max的时候,将max赋值给smax,再将最大的那个元素赋值给max;3)如果当前元素小于max,并且大于smax,那么就让smax当前元素。算法实现:方法一:#include<stdio.h&g...原创 2018-03-02 15:39:39 · 12122 阅读 · 1 评论 -
面试题:long a=0x801010;a+5?
试题:long a=0x801010; a+5=?解析:0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值为8392720,再加上5就是8392725。原创 2018-03-02 15:06:23 · 1558 阅读 · 0 评论 -
sizeof( )和strlen( )的用法和区别
1.sizeof( )的用法和说明:sizeof()的定义:在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为 typedef unsigned int size_t;在C99及以上标准中,sizeof(char)、sizeof(int)、sizeo...原创 2018-03-01 23:49:18 · 664 阅读 · 0 评论 -
结构体成员内存对齐规则
关于结构体成员内存对齐,主要有以下三方面原则:原则1:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是 紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都 会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。原则2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元...原创 2018-03-01 16:13:47 · 2606 阅读 · 2 评论 -
二叉排序树
1.二叉排序树的简介:当用线性表作为表的组织形式时,可以有三种查找法。其中以二分查找效率最高。但由于二分查找要求表中结点按关键字有序,且不能用链表作存储结构,因此,当表的插入或删除操作频繁时,为维护表的有序性,势必要移动表中很多结点。这种由移动结点引起的额外时间开销,就会抵消二分查找的优点。也就是说,二分查找只适用于静态查找表。当要进行动态高效率的查找,可以采用二叉排序树(BST)进行查找...原创 2018-02-28 15:19:51 · 629 阅读 · 0 评论