![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言算法 面试
韭菜大葱馅鸡蛋
生存是文明的第一需求;文明不断增长和扩张但宇宙的物质总量不变
展开
-
9. 整数转化为其它进制数字
题目把一个整数转换为任意进制(进制小于65, 为什么是36呢, 因为有26个英文字母, 外加0, 1, 2,… 9)解题思路我们首先必须知道进制转化的方法是除基取余, 就是反复的除以进制数, 然后用商作为基数, 继续除以进制数, 直到商为0. 然后逆序的余数就是结果。举个栗子:111 转化为8进制, 111 / 8 = 13 余 7, 也就是111 包含13个整8, 外加一个余数7. 那么很自然的, 7 就是最低位了。13 / 8 = 1 余 5. 也就是对13 来说有一个 整8, 外加余数原创 2020-07-01 09:18:39 · 286 阅读 · 0 评论 -
8. 判断当前系统是大端对齐还是小端对齐
题目判断当前系统是大端对齐还是小端对齐解析首先需要明白什么是大端对齐,小端对齐。Little-Endian就是数字的低位放内存的低地址端,高位放在内存的高地址端。(为了方便记忆, 我都称小端对齐才是真对齐, 因为小对小, 大对大)Big-Endian就是数字的高位放在内存的低地址端,低位放在内存的高地址端。举一个例子,比如数字int a = 0x12 34 56 78在内存中的表示形式为:1)大端模式:2)小端模式:大端模式和字符串的存储模式有一拼代码实现#include<原创 2020-06-24 10:45:43 · 721 阅读 · 0 评论 -
7. IP地址整数和字符串之间转换
题目把一个整数转换为点分十进制字符串, 或者把点分十进制字符串转化为整数思路这个主要两点:ip地址 我们看到的都是10.189.132.132这样的, 如果按照字符串来保存, 那就需要15 char, 因为每一section都是0-255, 所以就可以用unsigned char来保存, 一个整数就搞定需要充分理解指针的概念。指针也是有类型的,指针的类型决定了指针的步长错误的代码实现首先一个错误的示范:请大家一定要仔细理解#include<stdio.h>#include&原创 2020-06-24 09:01:40 · 2094 阅读 · 0 评论 -
6.判断一年是否为闰年
题目键盘输入一个年份, 判断是否为闰年思路普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004年就是闰年);世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);代码实现#include<stdio.h>#include<stdlib.h>int main(){ int a; scanf("%d", &a); if (((0 == a % 4) &a原创 2020-06-17 10:15:12 · 352 阅读 · 0 评论 -
5. 判断一个数是否为质数(素数)
题目键盘输入一个数, 判断是否为素数思路最直观的想法就是用1-n 中间的数依次除, 有能被整除的那就不是了。这样的时间复杂度是O(n).我们可以总结一下:一个数字, 如果它是两个数字的乘机,那么它的分解因子怎么分布呢?15 = 3 * 5, 3 5 都小于 15/216 = 2 * 8 2 8 小于等于 16/2 这应该就是最极端的了吧综上, 我们就可以只试 2- n/2 之间的数就可以了我们进一步总价一下:16 = 2 * 8= 4 * 4= 8 *原创 2020-06-17 09:05:07 · 393 阅读 · 0 评论 -
4. 判断一个整数是否为水仙花数
题目键盘输入一个整数,判断是否为水仙花数思路首先应该知道何为水仙花数:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。水仙花数就是每一位的三次方相加等于原整数。解题思路就是定义瞎扯淡水仙花数只是自幂原创 2020-06-16 08:43:10 · 4157 阅读 · 0 评论 -
3. 判断一个字符串是不是回文字符串
题目键盘输入一个字符串, 判断是否是一个回文字符串思路第一位和最后以为对比,第二位和导数第二位对比…把字符串倒序,然后比较。代码思路一#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char string[128]; bzero(string, 128); scanf("%s", string); int len = strlen(string),原创 2020-06-15 19:14:40 · 738 阅读 · 0 评论 -
2. 判断一个数字是不是回文数
题目键盘输入一个数字, 判断数字是否为回文数思路想办法把一个数字高低位数对调, 1234 变成 4321;输入数字a, 每次对10取整就截断个位数, 每次对10取余得到个位数, 这样就是一个在一位一位的变大, 一个在逐渐变小代码#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int a, b, i = 0; scanf("%d", &a); b = a;原创 2020-06-15 18:54:15 · 411 阅读 · 0 评论 -
1. 求两个整数的最大公约数和最小公倍数
**求两个整数的最大公约数和最小公倍数**思路键盘输入整数a, b, 确保a 是较大的整数;利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。代码实现#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ printf("please input two int number\n"); int a, b; int origin原创 2020-06-11 22:02:14 · 1875 阅读 · 0 评论