每日练习
文章平均质量分 57
阿敢
这个作者很懒,什么都没留下…
展开
-
每日练习1-C语言
1. 什么是C语言C语言是一种通用的编程语言,广泛用于系统软件和应用软件的开发。由丹尼斯里奇与肯汤普逊于1969-1973年间,为了开发和移植UNIX操作系统,以B语言为基础开发出的高级语言。 2. C语言的特点具有高效、灵活、功能丰富、表达能力强、较高可移植性的特点。 3. 什么是常量值不会发生变化的称为常量。主要有字面常量、const定义的常量、#def原创 2018-04-03 14:18:34 · 284 阅读 · 0 评论 -
练习——内存管理&编译器优化
1.内存管理2. 编译器优化问题原创 2018-07-10 15:15:48 · 333 阅读 · 0 评论 -
每日练习3-找出字符串第一个只出现一次的字符
题目: 找出字符串第一个只出现一次的字符解决思路: 我们可以通过遍历字符串,并统计相同元素的出现次数,取最小的一个。但是这样我们的时间复杂度为O(n^2)。(1)本文介绍“以空间换时间”的思想实现O(n)的算法;(2)创建一个哈希表,以每个字符ASCII码值为下标,相应内容为该字符的出现次数的哈希表,同时,一个字符有8个bit位,所以ASCII码可能是0-256,所以我...原创 2018-06-01 15:54:02 · 438 阅读 · 0 评论 -
每日练习5-在(杨氏矩阵)每行从左至右增大,每列从上到下增大的矩阵中查找一个数是否存在
题目: 在每行元素从左至右增大,每列元素从上到下增大的矩阵,即杨氏矩阵中,查找一个数是否存在。解决思路:(1)例如以下分析过程:(2)我们可以遍历行;(3)通过判断当前行的最后一个元素和当前行的第一个元素与要查找的元素的大小关系,逐步缩小查找范围。实现代码:#define ROW 3#define COL 3int FindNumber(int a[ROW][COL], int...原创 2018-06-01 12:16:14 · 527 阅读 · 0 评论 -
每日练习5-匹配包括"."和"*"的正则表达式,"."表示任意一个字符,"*"表示其前面的字符可以出现任意次(包括0次)
题目:匹配包括"."和"*"的正则表达式,"."表示任意一个字符,"*"表示其前面的字符可以出现任意次(包括0次)。比如,"aaa"与"a.a"和"ab*ac*a"匹配,但是与"aa.a" "ab*a"不匹配。解决思路:(1)递归实现(2)从两字符串头开始遍历,当前字符相同或是当前有字符为“.”,说明当前字符匹配,就指针后移,继续判断;(3)若遇到“*”号,只要...原创 2018-06-01 11:42:16 · 6132 阅读 · 0 评论 -
每日练习4-逆置字符串中的单词,标点符号不逆置
题目: 逆置字符串中的单词,标点符号不逆置。比如字符串“I like Beijing.”,逆置后结果为“Beijing. like I”解决思路:(1)我们可以将整个字符串先逆置得到“.gnijieB ekil I”,在逆置每个单词得到“Beijing like I”。当然也可以先逆置单词在逆置整个字符串;(2)逆置的实现,我们可以定义首尾指针,两两交换,然后首指针++,尾指针--;(3)每...原创 2018-06-01 09:42:36 · 539 阅读 · 0 评论 -
每日练习6-输入一个矩阵,按照从外圈向内圈顺时针打印数组元素
题目: 输入一个矩阵,按照从外圈向内圈顺时针打印数组元素。例如输入二维数组 a[3][3] = {{1,3,4}, {5,6,7}, {8,2,0}},打印出来的结果应该是:1 3 4 7 0 2 8 5 6解决思路:(1)首先,本文实现的顺时针打印,起始位置是矩阵的左上角,即数组的 【0】【0】位置;(2)一个圈顺时针打印一遍,要分四个方向打印:从左到右、从上到下、从右到左、从下到...原创 2018-06-01 09:24:20 · 1238 阅读 · 0 评论 -
每日练习6-给定一个整数数组,将数组中所有奇数调到前半部分,偶数位于后半部分 ,且奇数与奇数,偶数与偶数的相对位置不变
题目: 给定一个整数数组,将数组中所有奇数调到前半部分,偶数位于后半部分。且奇数与奇数,偶数与偶数的相对位置不变解决思路:(1)将奇数调到数组的前半部分,偶数位于后半部分。即%2!=0的数全部在%2==0的数前面;(2)同时奇数与奇数,偶数与偶数的相对位置不变。我们要让第一个出现在数组的奇数在第一个,第二个出现的奇数在第二个...以此类推,偶数也一样。(3)我们可以将偶数按照出现顺序...原创 2018-06-01 09:01:35 · 1288 阅读 · 0 评论 -
每日练习2-实现atoi函数
atoi函数即将字符串转化为整型数的一个函数。下面直接贴代码:#include <stdio.h>#include <assert.h>#include <string.h>#include <stdlib.h>#include <ctype.h>int StrToInt(const char *str){ ...原创 2018-05-24 21:06:34 · 229 阅读 · 0 评论 -
每日练习3-找出数组中出现次数超过数组长度一半的数,时间复杂度O(n)
题目: 找出数组中出现次数超过数组长度一半的数。比如给定数组{1, 2, 3, 4, 2, 2,2,6, 2},我们最后要返回的值就是2。实现思路: (1)我们要找出现次数超过数组一半的数字,也就是说它出现的次数比其他所有数字出现的次数的和还要多。 (2)因此我们可以考虑用两个变量:一个保存数字,一个保存次数。开始时,保存数组中第一个元素,次数设置为1; (3)遍历...原创 2018-05-29 14:24:56 · 2823 阅读 · 2 评论 -
每日练习2-字符串右旋,包括i在内的元素均右旋到字符串右侧
题目: 输入一个字符串,对字符串进行右旋。给定一个下标i,将下标0到i(包括i位置)的元素全部右旋到字符串右侧。例如,输入字符串“ABCDEFGH”,给定下标i=4,即对应元素‘E’,右旋得到的结果是“FGHABCDE”。实现思想:实现代码:#include <stdio.h>#include <stdlib.h>#include <assert.h...原创 2018-05-29 13:56:50 · 234 阅读 · 0 评论 -
每日练习1-替换字符串中的空格
上档次原创 2018-05-29 13:40:15 · 220 阅读 · 0 评论 -
每日练习2-C语言
1. if语句介绍(1)if(表达式) { 语句列表1;} else {语句列表2; }if的表达式结果为真,执行语句列表1,否则执行语句列表2。 (2)if(表达式1) { 语句列表1;}原创 2018-04-03 14:19:36 · 268 阅读 · 0 评论 -
每日练习——输入一个整数,返回该二进制中1的个数,其中负数用补码表示
第一种方法:->效率不够高int count_one_bits(unsigned int value){ int i = 0; int count = 0; for (i = 0; i < 32; i++) { if ((value>>i) & 1 == 1) count++; } return count;} 第二种方法:-...原创 2018-07-10 16:44:29 · 290 阅读 · 0 评论