C语言
文章平均质量分 67
The Laughing Uncle
专业踩各种坑
展开
-
C语言 十进制数转化为二进制 八进制 十六进制数
对于刚开始学习C语言的来说,我们知道%d可以表示十进制的数,%o可以表示八进制的数,%x用来表示十六进制的数,但却没有来表示二进制数的。 这就是相对应的八进制数和十六进制数#include <stdio.h>int main(){ int n; printf("请输入一个十进制的整数:\n"); scanf("%d",&n); printf("八进制数...原创 2018-04-24 22:28:18 · 24547 阅读 · 0 评论 -
结构体、枚举、联合三者大小的计算
结构体偏移量对齐规则修改默认对齐数枚举联合(共用体)结构体结构体中的成员可以是不同的类型,那么是如何在计算机中存储尼。如果和数组一样,按照结构体成员的顺序一次存储在连续的内存空间,那么该如何访问尼,是按照一个字节一个字节的访问,还是四个字节四个字节的访问,这就存在类型差异。因此,就定义了一个对齐规则。在介绍对齐规则前,先了解一个概念——...原创 2018-08-01 15:02:54 · 1115 阅读 · 1 评论 -
变态青蛙跳台阶问题
青蛙跳台阶问题是一道很经典的问题: (1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。 (2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法? (3)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级(青蛙一次最多跳的台阶数由用户指定),此时该青蛙跳上一...原创 2018-07-27 19:29:47 · 1135 阅读 · 0 评论 -
打印素数的几种方法及其优化
题目:打印从第n个素数到第m个素数之间的素数(每十个换行)1. 试除法(傻瓜法)所谓试除法,就是从头到尾一个一个判断是不是素数,并且在判断素数时,从2一直试除到n-1 #define MAX 10000 #include <stdio.h> void prime_number(int arr[]) { int ret = 0;...原创 2018-08-05 11:20:36 · 1132 阅读 · 0 评论 -
汉诺塔问题
汉诺塔汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。分析当刚开始接触这个问题的时候,一时间不知道该如何下手,如果只是一步一步尝试,随便移,刚...原创 2018-07-27 10:36:56 · 1516 阅读 · 1 评论 -
找出数组中单独出现的三个数
题目一:一个数组中,只有一个数字出现了一次,其余都是成对出现,找出这个数字 题目二:一个数组中,有两个数字出现了一次,其余都是成对出现,找出这两个数字 题目三:一个数组中,有三个数字出现了一次,其余都是成对出现,找出这三个数字这三道题目是循序渐进的,典型的用异或求解的问题。1. 对于第一题,实际上比较简单,我们只需要将所有的数字全部异或一遍,就得到了代码比较简单,如下:...原创 2018-07-30 14:46:29 · 675 阅读 · 2 评论 -
C语言:模拟实现strlen、strcpy、strcat、strstr、strcmp函数
当我们在学习字符串的时候,经常会使用到strlen、strcpy、strcat、strstr、strcmp这几个库函数,但今天我们就用代码来自己实现my_strlen、my_strcpy、my_strcat、my_strstr、my_strcmp这几个函数。strlen功能:计算字符串长度(不计算’\0’) 返回值类型:int 实现my_strlen有三种方式:1.计数法思路...原创 2018-07-26 20:59:39 · 1453 阅读 · 0 评论 -
经典例题——指针和数组
第一题. int main() { int a[5] = { 1,2,3,4,5 }; int *ptr = (int *)(&amp;a + 1); printf("%d,%d", *(a + 1), *(ptr - 1)); system("pause"); return 0; }分析...原创 2018-07-28 21:38:49 · 1269 阅读 · 0 评论 -
深度剖析函数的调用过程(栈帧)
当我们在学习C语言的时候,写代码一定会用到函数(main函数),但函数在使用过程中是如何调用的,当我们从汇编的角度来剖析函数的调用,会让我们对函数的认识刚深一层。注:使用的工具是VS2017下面我将通过一段代码来剖析函数是如何调用的 #include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt; int Add(int x, int y) { int z = ...原创 2018-07-25 17:45:19 · 347 阅读 · 0 评论 -
斐波那契数的几种求法
斐波那契数列是比较出名的,其形式为:1,1,2,3,5,8,13,21,34,55…… 那么如何求第n个斐波那契数,我总结了几种算法:运用三个变量: int fibonacci(int n) { int a = 1; int b = 1; int c = 1; if (n <= 2) {...原创 2018-07-24 16:58:59 · 1087 阅读 · 0 评论 -
浮点数在计算机内存中的存储方式
我们知道,对于一个整数,在计算机内存中是以二进制的形式来存储的,但对于一个浮点数尼?假如仍以浮点数的二进制来存储,那小数点的位置如何来固定尼?所以人们就想到可以用二进制的科学计数法来保存,例如:5.5,其二进制数为101.1,则用二进制的科学计数法可以表示为 1.011 * 2^2,这样小数点的位置就是固定的。任何一个浮点数可以表示为下面的形式(国际标准IEEE 754):(-1)^S ...原创 2018-07-24 16:01:21 · 7055 阅读 · 6 评论 -
用C语言写一个日期计算器
首先,我们应知道日期计算器包括哪些功能1、明天的日期2 、n天后的日期3、两个日期之间的天数我们先从第一个功能开始,首先创建一个日期的结构体,包括:年、月、日。struct date{ int day; int month; int year;};其次来看一下解决这个问题的思想:然后我们要写一个判断闰年的函数:int Leap(struct date d){ int leap =...原创 2018-06-01 22:55:51 · 5516 阅读 · 1 评论 -
C语言一维数组的创建、初始化、清空、逆置、访问、存储
一维数组的创建和初始化创建: int arr[10];数组的初始化有三种方法:1 直接初始化 //代码1 int arr[10] = { 0 }; //代码2 int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };2 for循环初始化 void InitArr(int arr[], int ...原创 2018-06-23 16:51:16 · 11395 阅读 · 0 评论 -
C语言中的操作符及其用法
1. 算数操作符在上述操作符中,+, - 、* 我们都很熟悉了。/、% 有两点是需要我们注意的:1. 对于/运算,如果两边都是整数,则执行整数运算;如果两边有一个为浮点数,则执行的是浮点数操作。2. %不能用于浮点数,两边都只能是整数,其余四个都可以用于浮点数和整数。2. 移位操作符左移操作符移位规则:左边抛弃,右边补0;(有*2的效果) 例如 :6 的二进制补码为 00000000 ...原创 2018-06-14 14:24:21 · 375 阅读 · 0 评论 -
C语言:模拟实现strncpy、strncat、strncmp、strrchr函数
目录:目录:strncpy函数strncat函数strncmpstrrchrstrncpy、strncat、strncmp函数与strcpy、strcat、strcmp函数非常相似,实现的功能也差不多。但strncpy、strncat、strncmp函数要比strcpy、strcat、strcmp函数更安全。因为在c语言string库中,strcp...原创 2018-08-01 20:12:32 · 483 阅读 · 0 评论