C语言
咭咭熊
这个作者很懒,什么都没留下…
展开
-
【C语言】——有序数组的平方
https://leetcode-cn.com/problems/squares-of-a-sorted-array/977.有序数组的平方给定一个按非递减顺序排序的整数数组A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 10000 -...原创 2020-12-10 20:05:10 · 607 阅读 · 0 评论 -
【C语言】——残缺棋盘问题
1.题目描述:资源分配问题2.分析:动态规划算法一般是n步叠代计算局部值最优解,每一步叠代需要计算m个子项,那么时间复杂度就是O(m*n)。如果只保存一步叠代的结果,空间复杂度就是O(m);如果需要保存k步叠代结果,空间复杂度就是O(m*k)。3.代码实现:...原创 2020-12-11 15:30:03 · 3201 阅读 · 0 评论 -
【Java】——2的次幂表示(C和Java实现)
1.题目描述: 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^0 所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如:1...原创 2020-12-11 14:13:51 · 1734 阅读 · 0 评论 -
【C语言】——迷宫问题详解
1.题目描述:——迷宫问题 寻找走出迷宫的路径。2.问题分析: 解决迷宫路径问题,采取深度优先搜索算法,进入迷宫后开始搜索路径,每当遇到岔路,先沿其中一条路线进行搜索, 如果不通则转向另一条路线进行搜索,以此类推,直至搜索完所有路线。3.代码实现:#include <stdio.h>#include <stdlib.h>int m=14;int n=17;int maze[14][17]={ {...原创 2020-12-07 21:07:51 · 2829 阅读 · 0 评论 -
【C语言】——矩阵连乘积问题(动态规划)
1.题目描述:——矩阵连乘积 矩阵运算满足结合律,有的时候交换矩阵运算的顺序可以大大提高矩阵计算的速度和效率, 如何选择矩阵运算过程中交换的时间和次序是矩阵连乘积需要解决的问题。2.解题分析 矩阵乘法满足结合律,即(AB)CD=A(BC)D,不同的计算次序产生的计算量差别很大,所以确定合适的计算次序很关键。若一个矩阵连乘积的计算次序完全确定, 即该连乘积已完全加括号,则可依此次序反复调用 2 个矩阵相乘算法计算矩阵连乘积,完全加括号的...原创 2020-12-07 21:05:48 · 3532 阅读 · 1 评论 -
【C语言】——背包问题详解
1.题目描述:——背包问题有若干物品,每种物品的价值和重量各不相同,将物品装入一个容量有限的背包,如何选择装入的物品,使背包的价值最大。2.题目分析:要是背包中的物品价值最大,则需要在有限的重量中尽可能装入价值更大的物品,基于这种思想则采取贪心算法 首先计算物品的单位价值,即价值/重量,根据单位价值对物品进行排序,优先装入单位价值高的物品,直至背包装满。3.代码实现:#include <stdio.h>int n;//物品数量double c;//背包容量...原创 2020-12-07 21:02:30 · 5180 阅读 · 1 评论 -
【C语言】——贪心算法实现活动安排问题
1.题目描述:活动安排问题设有n个欧东的集合E= {1,2,...,n},其中每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源;每个活动 i 都有一个要求使用该资源的起始时间 Si 和一个结束时间 fi,且 si < f i。如果选择了活动 i ,则它在半开时间区间 [si ,fi)内占用资源;若区间 [si,fi) 与区间[sj,fj) 不相交,则称活动 i 与活动 j 是相容的。即当 si >= fj 或sj >= fi 时,活动 i 与 活动 j...原创 2020-12-07 20:56:42 · 5842 阅读 · 4 评论 -
【C语言】——资源分配问题实现
1.题目描述:资源分配问题2.分析:动态规划算法一般是n步叠代du计算局部zhi最优解,每一步叠dao代需要计算m个子项,那么时zhuan间复杂度就shu是O(m*n)。如果只保存一步叠代的结果,空间复杂度就是O(m);如果需要保存k步叠代结果,空间复杂度就是O(m*k)。3.代码实现:#include <stdio.h>#include <math.h>void TileBoard(int tr,int tc,int dr,int dc,int size);原创 2020-12-07 20:44:29 · 2773 阅读 · 0 评论 -
【C语言】——n皇后问题详解
题目描述:八皇后问题n个皇后两两不在一行,不在一列,不在同一对角线上1.方法1 ——暴力法/** n皇后问题 —— n个皇后两两不在一行,不在一列,不在同一对角线上* 两种方法: 1、暴力法 2、回溯法*/#include <stdio.h>#include <stdbool.h>#include <math.h>#include <stdlib.h>#define n 8bool hash[n+1];int p[n原创 2020-12-07 20:40:24 · 1143 阅读 · 0 评论 -
【C语言】——C语言实现科赫雪花及科赫曲线
1.题目描述:(1) 科赫雪花和科赫曲线科赫曲线(Koch curve)是一个简单的分形(fractal)图形。瑞典数学家海里格·冯·科赫(Helge von Koch)——1904 年提出科赫曲线的构造方法。给定一直线线段,把它等分三段,加入一个等边三角形,以三段的中间一段为底对齐,再去除该段线段。然后,对每个新线段重复进行上述步骤,就可以形成科赫曲线:当,科赫曲线的长度也是无穷的。如果画 3 条科赫曲线,每次旋转 120 度,就能得到科赫雪花(Koch snowf..原创 2020-12-07 13:57:34 · 2646 阅读 · 0 评论 -
【C语言】——求一个数的二进制序列中所有的偶数位和奇数位,并打印此序列
1.题目描述: 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。2.代码实现:#include <stdio.h>int main(){ int num = 0; int i = 0; scanf("%d", &num); printf("奇数序列为:"); for (i = 31; i >= 0; i -= 2) { printf("%d ", (num >> i) & 1); ...原创 2020-12-06 08:24:16 · 91 阅读 · 0 评论 -
【C语言】——求一个整数存储在内存中二进制中的1的个数的三种方法
编写代码实现:求一个整数存储在内存中二进制中的1的个数方法(1)//(1)方法int main(){ int num = 10; int count = 0;//计数 while (num){ if (num % 2 == 1) count++; num = num / 2; } printf("二进制中1的个数为:%d\n",count); return 0;}方法(2)//(2)方法int main(){ int num = -1;原创 2020-12-05 20:19:07 · 117 阅读 · 0 评论 -
【C语言】——小乐乐与字符串
1. 题目描述在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子串“CHN”的个数。子串的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子串。如“ABC”的子串有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。2. 输入描述:输入只包含大写字母的字符串s。( 1 <= length <= 8000) 输出描述:输出一个整...原创 2020-11-23 17:47:35 · 332 阅读 · 0 评论 -
【C语言】——模拟实现函数,将一个字符串中的每个空格替换成“%20”
1.题目描述 模拟实现一个函数,将一个字符串中的每个空格替换成“%20”。 如:字符串 We Are Happy. 经过替换之后的字符串为:We%20Are%20Happy.2.代码实现void replaceSpace(char *str,int length){ //1.数空格 int i = 0; int spacecount = 0; //空格数 for (i = 0; i < length; i++){ if (str[i] ==...原创 2020-11-23 14:15:11 · 294 阅读 · 0 评论 -
【C语言】——将任意一个数转换为Fibnacci数的最少次数
链接:https://www.nowcoder.com/questionTerminal/18ecd0ecf5ef4fe9ba3f17f8d00d2d66?toCommentId=763129来源:牛客网1.题目描述 Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fib...原创 2020-11-23 14:14:06 · 127 阅读 · 0 评论 -
【C语言】——预处理、编译、链接分析
1.题目描述 由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义? A.预处理 B.编译 C.链接 D.执行2.分析(1)预处理只会处理#开头的语句,编译阶段只校验语法,链接时才会去找实体,所以是链接时出错的,故选C。这里附上每个步骤的具体操作方式:预处理:相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有头文件(都已经被展开了)、宏定义(都已经替换了),没有...原创 2020-11-22 18:12:39 · 520 阅读 · 2 评论 -
【C语言】——三角形类型判断编程题
1.判断三角形类型 给定三角形的三条边,a,b,c。判断该三角形类型。 输入描述:测试数据有多组,每组输入三角形的三条边。 输出描述:对于每组输入,输出直角三角形、锐角三角形、或是钝角三角形。 示例1 输入 3 4 5 输出 直角三角形2.代码实现#include<stdio.h>int main(){ int a,b,c,t; scanf("%d%d%d",&a,&am...原创 2020-11-22 17:32:40 · 4238 阅读 · 1 评论 -
【C语言】——对输入n个整数的序列,进行去重操作
1.题目描述: 输入n个整数的序列,要求对这个数列进行去重操作; 所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置2.输入描述:输入包含两行,第一行包含一个正整数n(1 <= n <= 1000),表示第二行序列中数字的个数; 第二行包含n个整数(范围1-5000),用空格分隔3.输出描述: 输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔如:输入:510...原创 2020-11-22 16:53:23 · 4897 阅读 · 0 评论 -
【C语言】——实现一个数组中,一个单独出现的数字和两个只出现一次的数字
1.题目描述: 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。2.具体实现:void search(int arr[], int num){ assert(arr); assert(num > 0); int *x = (int *)malloc(sizeof(int *)); int *y = (int *)malloc(sizeof(int *)); *x = 0; *y = 0; //...原创 2020-11-22 14:59:14 · 438 阅读 · 0 评论 -
【C语言】——库函数atoi的模拟实现
1.atoi函数要求 atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi(const char * str); (1) 此函数需要丢弃之前的空白字符,直到找到第一个非空白字符。之后从这个字符开始,选取一个可选的正号或者符号后面跟随尽可能多的数字,并将其解释为数字的值。(2)字符串可以在形成整数的字符后包括多余的字符,将这些字符忽略,这些字符对于函数的行为没有影响。(3)如果字符串中的第一个非空白的字符不是有效的整数,或者没有这样的序列存在,字符串为空或...原创 2020-11-22 14:56:03 · 207 阅读 · 0 评论 -
【C语言】——简单计算器实现
1.题目描述: KiKi实现一个简单计算器,实现两个数的“加减乘除”运算,用户从键盘输入算式“操作数1运算符操作数2”,计算并输出表达式的值, 如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalid operation!”。 当运算符为除法运算,即“/”时。如果操作数2等于0.0,则输出“Wrong!Division by zero!”2.输入描述: 多组输入,一行,操作数1运算符操作数2(其中运算符号包括四种:+、-、*、/)。...原创 2020-11-22 14:45:41 · 1736 阅读 · 0 评论 -
【C语言】——文件操作相关知识详解
文件操作1. 在程序设计中一般包括两种文件:程序文件和数据文件 程序文件:包括源程序文件(后缀.c)目标文件(Windows环境后缀为.obj)可执行程序(Windows环境后缀为.exe) 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件 。 文件名:一个文件要有一个唯一的文件标识,以便用户识别和引用。 文件名包括三个部分: 文件路径 + 文件名主干 + 文件后缀 例如:c:\co...原创 2020-11-13 21:02:29 · 283 阅读 · 0 评论 -
【C语言】——动态内存管理相关知识详解
1. 动态内存分配 已熟悉的内存开辟的方式:int val = 20; //在栈空间上开辟4个字节 char arr[10] = { 0 };//在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的方式有两个特点: (1)空间开辟大小是固定的, (2)数组在声明的时候,必须指定数组组的长度,它所需要的内存在编译时分配。 但是对于空间的需求,不仅仅是上述的情况,有时候我们需要的空间大小在程序运行的时候才能知道, 那数组的编译时...原创 2020-11-12 09:34:31 · 162 阅读 · 0 评论 -
【C语言】——三子棋小游戏的实现
1.2.3.原创 2020-11-10 20:39:01 · 96 阅读 · 0 评论 -
【C语言】——结构体 + 枚举 + 联合等详解
1.结构体 结构是一些值的而结合,这些值称为成员变量,结构的每个成员可以是不同类型的变量//(1)结构的声明struct tag{ member-list ;}varible-list;(2)举例:如描述一个学生struct Stu{ char name[20]; int age; char sex[2]; char id[20];};//此处分号不可以省略(3) 在声明结构体的时候,可以不完全声明//匿名结构...原创 2020-11-10 14:58:07 · 538 阅读 · 0 评论 -
【C语言】——小程序(C语言中字符串库函数的使用及其模拟实现)
1.strlen原创 2020-11-09 20:29:53 · 182 阅读 · 0 评论 -
【C语言】——小程序(最大公约数和最小公倍数)
1.最大公约数(1)辗转相除法 计算两个正整数num1 num2的最大公约数,采用函数嵌套调用的形式求来啊那个自然数的最大公约数。 算法思想: 设两个数为num1,num2 ,设其中num1做被除数,num2 做除数,tmp做余数; 然后将较大的数字存放入num1中,较小的数存放入num2中; 求num1 / num2的...原创 2020-11-09 16:42:37 · 865 阅读 · 0 评论 -
【C语言】——指针和数组笔试题详解
指针和数组笔试题1.一维数组2.字符数组3.原创 2020-11-05 21:15:44 · 317 阅读 · 2 评论 -
【C语言】——小程序(猜凶手、猜名次、烧香问题)
1.猜凶手问题具体代码实现如下://猜凶手/*日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个以下为四个嫌疑犯的供词:A说:不是我;B说:是CC说:是DD说:C在胡说已知3个人说了真话,1个人说的是假话现在请根据这些信息,写一个程序来确定到底谁是杀手*/int main(){ int killer = 'a'; for (killer = 'a'; killer <= 'd';killer++){ if ((killer != 'a原创 2020-11-05 10:53:34 · 484 阅读 · 0 评论 -
【C语言】——野指针介绍、成因及其规避
野指针1.介绍 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的) 指针变量在定义时如果未初始化,其值是随机的,指针牛逼那辆的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地 址,所以结果是不可知的。2.成因:(1)指针变量未初始化int main(){ int *p; //局部变量指针未初始化,默认为随机值 *p = 20; retur...原创 2020-11-05 10:51:08 · 286 阅读 · 0 评论 -
【C语言】——指针问题详解
1.指针:(1)指针就是个变量:用来存放地址,此地址可以唯一标识一块地址空间。(2)指针的大小是固定的4/8字节(32位平台/64位平台)(3)指针是有类型的,指针的类型决定了指针 +- 整数的步长,指针解引用操作的时候的权限2.字符指针 char*int main(){ //将字符串hello world的首字符的地址放到了pstr中 //即把一个常量字符串的首字符h 的地址存放到指针变量pstr中 char* pstr = "hello wor...原创 2020-11-05 18:32:46 · 807 阅读 · 0 评论 -
【C语言】——小程序(求和问题)
//计算1/1 -1/2 + 1/3 - 1/4 + 1/5 .. + 1/99 - 1/100的值int main(){ int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i <= 100; i++){ sum += flag * 1.0 / i; flag = -flag; } printf("sum = %lf\n", sum); return 0;}原创 2020-11-03 20:26:18 · 478 阅读 · 0 评论 -
【C语言】——小程序(调整奇偶数顺序、字符串逆序、求一个字符串左旋n次的字符串)
1.调整奇偶数顺序输入一个整数数组,实现一个函数,调整数组使奇数全部都位于偶数前面具体代码实现如下://调整奇偶数顺序//输入一个整数数组,实现一个函数,调整数组使奇数全部都位于偶数前面void move_arr(int arr[], int sz){ int left = 0; int right = sz - 1; while (left < right){ //从左边找一个偶数 while ((left < right) && (arr[l原创 2020-11-03 20:28:44 · 441 阅读 · 0 评论 -
【C语言】——小程序(字符串的操作)
1.字符串旋转操作: 给定s1 =AABCD和s2 = BCDAA,返回1 给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC解题思路1:将所有旋转后的结果放到一个数组里,然后进行查找,...原创 2020-11-04 17:08:03 · 317 阅读 · 0 评论 -
【C语言】——小程序(杨氏矩阵)
1.杨氏矩阵有一个数字矩阵,矩阵的每一行从左到右都是递增的,从上到下也是递增的请编写程序,再这样的矩阵中查找某个数字是否存在要求时间复杂度小于O(N)如此形式:1 2 32 3 43 4 5(1)思路:根据观察,可了解到杨氏矩阵的特点:因此可考虑从矩阵的右上角或者左下角着手,,进行元素的比较, 此种方式可一次性排除一列或者一行,相比于遍历次数组找元素效率较快。(1)简单实现:在自定义函数内部打印所找到的该元素的位置下标具体实现代码如下:...原创 2020-11-03 19:40:53 · 200 阅读 · 0 评论 -
【C语言】——简易通讯录的实现
1.2.3.原创 2020-11-03 19:30:35 · 238 阅读 · 0 评论 -
【C语言】——扫雷游戏的实现
1.2.3.原创 2020-11-11 09:25:08 · 96 阅读 · 0 评论