
C语言
文章平均质量分 59
清欢有道
代码人,代码魂,敲好代码人上人
展开
-
C语言--指针部分--详解1
本节重点指针是什么二级目录三级目录指针是什么 在计算机科学中,指针(Pointer)是编程语言的一个对象,利用地址,它的值直接指向(Points to) 存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量 单元。因此,将地址形象化的成为“指针”。意思是通过它能找到以它为地址的内存单元。二级目录三级目录...原创 2021-03-02 22:50:40 · 352 阅读 · 2 评论 -
C语言实现扫雷
C语言实现扫雷首先来讲一讲扫雷的规则:随便点一个格子,会有一块,上面的数字就代表数字周围八个格子会有几个雷,是1他周围就只有1个雷,2就有两个雷······写代码的时候要注意构思代码的框架,每个函数实现的意义在代码中都有体现,首先看一下头文件game.h#define ROW 9#define COL 9#include<stdio.h>#include<stdlib.h>#include<time.h>//防止查雷时越界,多开两行两列#define原创 2021-01-28 00:38:36 · 1278 阅读 · 3 评论 -
力扣OJ题删除排序数组中的重复项详解
题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并使用O(1)额外空间的条件下完成。示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 *你不需要考虑数组中超出新长度后面的元素。*示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4],函数原创 2021-01-26 17:45:58 · 169 阅读 · 0 评论 -
顺序表的概念以及增删查改
顺序表增删查改目录顺序表概念以及结构二级目录三级目录顺序表概念以及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可分为:1. 静态顺序表:使用定长数组存储。2. 动态顺序表:使用动态开辟的数组存储。二级目录三级目录...原创 2021-01-26 15:51:19 · 177 阅读 · 0 评论 -
C语言实现通讯录系统
C语言实现通讯录系统本章我将和大家分享一个简单的通讯录系统设计要求我们设计的程序为手机通讯录系统,这是使用C语言写成。本程序具有和一般的通讯录一样的功能,有最基本的数据添加、修改、查看、删除等功能。功能设计总体设计详细设计 1. 查找联系人 通过总菜单选择查找联系人,输入需要查找的联系人姓名(或者该联系人姓,或者该联系人名)。 若存在该联系人,则输出该联系人的信息,若通讯录中不存在此联系人,则输出查无此人,并且可以继续从总菜单选择所需要的功能。原创 2021-01-22 23:44:44 · 2158 阅读 · 3 评论 -
动态内存管理
动态内存函数的介绍mallocfreecallocrealloc之前我们经常使用的开辟方式int va1=20;//在栈空间上开辟四个字节char arr[10]={0};//在栈空间上开辟连续的10个字节空间这些开辟方式有两个特点空间开辟大小都是固定的。数组在申明的时候,必须指定数组长度,它所需要的内存在编译的时候分配。所以当我们需要使用空间运行的时候才能直到的时候就要使用动态内存开辟了。mallocmallocvoid* malloc(size_t size);//这是C语言提原创 2021-01-22 02:24:16 · 202 阅读 · 0 评论 -
枚举、联合(共用体)详解
枚举、联合详解目录枚举类型的定义枚举的优点枚举的使用联合类型的定义联合的特点联合大小的计算枚举类型的定义枚举顾名思义就是------列举。举例说明enum Color//颜色{ RED, GREEN, BLUE};这里的enum Color是枚举类型,RED、GREEN、BLUE,{ }里面的都是枚举常量。这些枚举常量都是有值的,默认从零开始,依次递增,当然定义的时候也可以赋初值。这里举个例子,如果给RED赋初值为3,则GREEN、BLUE默认为4,5.枚原创 2021-01-21 01:40:48 · 1255 阅读 · 2 评论 -
内存操作函数(memcpy、memmove、memset)、结构体详解、位段
内存操作函数与结构体目录内存操作函数memcpymemovememset结构体结构体类型的声明结构体的自引用三级目录内存操作函数memcpyvoid* memcpy (void* destination , const void* source , size_t num)函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置这个函数在遇到 ‘\0’ 的时候并不会停下来,按照字节一个一个的拷贝过去。如果source和destination有任何的原创 2021-01-19 12:56:50 · 2821 阅读 · 4 评论 -
求Sn=a+aa+......的前n项之和,打印菱形
求Sn=a+aa+…的前n项之和,其中a是一个数字例如:2+22+222+2222+22222#include<stdio.h>int power(int n, int k){if (k == 0)return 1;elsereturn n*power(n, k - 1);}int main(){int a,n;printf("请输入a+aa+aaa+aaaa+....的a以及前n项的n\n");scanf("%d%d", &a, &a原创 2020-12-17 23:23:18 · 422 阅读 · 2 评论 -
递归解决青蛙跳台阶问题(斐波那契数列)
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?答题思路如果只有1级台阶,那只有一种跳法如果有2级台阶,那么就有2种跳法,一种是分2次跳。每次跳1级,另一种就是一次跳2级如果台阶级数大于2,设为n的话,这时我们把n级台阶时的跳法看成n的函数,记为,第一次跳的时候有2种不同的选择:一是第一次跳一级,此时跳法的数目等于后面剩下的n-1级台阶的跳法数目,即为,二是第一次跳二级,此时跳法的数目等于后面剩下的n-2级台阶的跳法数目,即为,因此n级台阶的不同跳原创 2020-12-15 15:11:54 · 735 阅读 · 0 评论 -
斐波那契数列-----兔子繁殖问题
斐波那契数列-----兔子繁殖问题斐波那契数列又因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?我们不妨拿新出生的一对小兔子分析一下:第一个月小兔子没有繁殖能力,所以还是一对两个月后,生下一对小兔对数共有两对三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对------幼仔对数=前月成兔对数成兔对数=前月成兔对数+前月原创 2020-12-15 14:29:54 · 13523 阅读 · 1 评论 -
递归实现字符串逆序、n的阶乘、字符串长度strlen、整数的每一位之和、n的k次方
递归实现字符串逆序、n的阶乘、字符串长度strlen、整数的每一位之和、n的k次方递归,又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。了解了递归的概念,下面看一下用递归实现的训练题递归:递归实现字符串逆序#include<stdio.h>int reverse_string(char* p, int le原创 2020-12-14 00:52:25 · 2214 阅读 · 5 评论 -
冒泡排序(详解)
冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。冒泡排序算法的原理如下:假设一共有M个元素需要排序,比较相邻原创 2020-12-12 00:48:15 · 15015 阅读 · 1 评论 -
C语言实现三子棋(五子棋、扫雷)
C语言实现三子棋(五子棋、扫雷)这个三子棋小游戏是对近期学习C语言的一个总结练习(后续还会添加五子棋和扫雷呦,关注博主,我们一起做代码人):三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。这里所用的编译器是vs2013首先看一下这个总体流程:菜单界面选择开始或者退出游戏。创建棋盘并初始化。打印棋盘。玩家落子(玩家输入行列坐标的方式来落子),“M”表示玩家落子。判定胜负关系(输,赢,原创 2020-12-11 23:57:49 · 3481 阅读 · 12 评论 -
折半查找(二分查找)
折半查找(二分查找)1、折半查找法,也称为二分查找法, 二分搜索, 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要查找的元素, 则搜索过程结束;如果某一特定元素大于或者小于中间元素, 则在数组大于或小雨元素的那一半中查找, 而且跟开始一样从中间元素开始比较. 若某1个步骤中数组为空, 则代表找不到. 这种搜索算法每一次比骄傲都使搜索范围缩小一半.这种方法对待查找的列表有两个要求必须采用顺序存储结构必须按关键字大小有序排列2、折半查找法分析从原创 2020-12-01 21:00:32 · 47271 阅读 · 6 评论 -
打印n的阶乘以及1-10的阶乘之和
打印n的阶乘以及1-10的阶乘之和首先明确一下n的阶乘:n!=123*4…n#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int n = 0; int i = 1; int M = 1; scanf("请输入n的值%d", &n); while (i <= n) { M = M*i; ++i; } printf("%d\n", M); return 0;}要算1!原创 2020-11-28 22:43:38 · 910 阅读 · 2 评论 -
打印0-100所有3的倍数的数字
打印0-100中所有3的倍数的数字解题思路:3的倍数一定能够被3整除,因此i%3==0表达式成立时,则i一定是3的倍数要输出1~100之间3的倍数,那只需要从1 ~100循环100次即可,每次拿到i之后,用i%3==0检测如果成立:i是3的倍数,输出如果不成立:i不是3的倍数#include<stdio.h>int main(){ int i = 0; while (i <= 100) { if (i % 3 == 0) { printf("%d\n原创 2020-11-28 00:43:52 · 3372 阅读 · 0 评论 -
求两个数的最大公约数
求两个数的最大公约数最大公约数举例:12 18 他们的约数有 1 2 3 6 最大的就为 6最大公约数:即两个数据中公共约数的最大者。求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法#include<stdio.h>int main(){ int a, b; int i = 0; int min; scanf("%d%d",&a, &b); min = a < b ? a : b; whil原创 2020-11-28 00:25:15 · 529 阅读 · 0 评论 -
打印出闰年
打印出1000-2000年内的闰年思路:要求1000年到2000年之间的闰年,只需要知道求解闰年的方法即可。闰年的条件:如果N能够被4整除,并且不能被100整除,则是闰年或者:N能被400整除,也是闰年即:4年一润并且百年不润,每400年再润一次#include<stdio.h>int main(){ int m = 2000; while (m > 1000) { if (m % 4 == 0 && m % 100 != 0) { pr原创 2020-11-27 23:45:34 · 746 阅读 · 1 评论 -
找出只出现一次的数字(找出单身狗)
找出只出现过一次的数字(找出单身狗)`#include<stdio.h>int main(){//其他数都是成对出现,只有一个数出现了一次,请找出他int array[5] = { 1, 1, 3,3,7 };int i = 0;int ret = 0;while (i < 5){ret = ret^array[i];//11=0,33=0,0^7=7i = i + 1;}printf(“单身狗是%d\n”, ret);}`总结:使用位操作符异或可以快速找出原创 2020-11-24 21:28:03 · 313 阅读 · 0 评论