C语言
文章平均质量分 55
程序员中的小小白
这个作者很懒,什么都没留下…
展开
-
【指针应用练习,习题讲解】
文章目录整型数组 sizeof计算字符数组没有存放'\0'存放'\0'二维数组总结整型数组 sizeof计算字符数组没有存放’\0’1、arr表示整个数组,大小为6个字节2、arr+0是指向第一个元素的指针,大小为4/8字节3、对首元素地址解引用,拿到第一个元素,char类型大小为1字节4、arr【1】访问第二个元素,也是1字节5、取出整个数组的地址,大小为4/8字节6、跳过一整个数组,指向下一块空间的地址,大小为4/8字节7、取出首元素地址向后+1指向第二个元素,指针大小4/8字节原创 2022-03-30 09:09:56 · 233 阅读 · 0 评论 -
C语言----如何学好指针,关于指针的详细讲解
目录认识指针指针大小指针与指针的类型野指针的了解与使用指针的运算数组与指针认识指针指针大小指针的大小由我们机器本身决定我们常见的32位机器与64位机器实际上是由32(64)个0/1电信号来决定的32位0/1组成我们的内存单元编号(指针),一个指针大小就是4个字节(1字节=8bit位)64位0/1组成我们的内存单元编号(指针),一个指针大小就是8个字节指针与指针的类型1、指针的类型决定了指针解引用的权限有多大例如:int*(整型指针),对它解引用就可以访问4个字节char*(字符型指针原创 2022-03-28 11:23:45 · 2052 阅读 · 0 评论 -
c语言----探究数据类型在内存中的存储(整型与浮点型)
目录数据类型整型在内存中的存储大小端问题char类型变量在内存中的存储浮点型在内存中的存储存储读取数据类型整型:char short int long longlong浮点型:float double …构造类型:数组 结构体 枚举 联合体…指针类型:char* int* …整型在内存中的存储我们都知道,数据在内存中以二进制的形式存储。对于整数而言,二进制的表示方式有三种:原码,反码,补码(以补码形式存于内存)正整数:原反补相同负整数:直接写出是原码,原码符号位不变其他取原创 2022-03-21 13:22:54 · 1446 阅读 · 0 评论 -
c语言----简单的操作符妙解难题
目录问题描述思路代码编写问题描述判断一个数是为2的n次方思路2的n次方的二进制表达只有一个1代码编写#include<stdio.h>int main(){ int n = 0; scanf("%d", &n); if ((n & (n - 1)) == 0) { printf("%d是2的n次方\n", n); } else { printf("%d不是2的n次方\n", n); } return 0;}...原创 2022-03-20 16:05:08 · 887 阅读 · 0 评论 -
c语言----二进制位中有几个1之基本操作符的巧妙使用
目录问题描述代码编写验证结果代码改进一验证结果代码改进二验证结果问题描述给定一个整数,如何求得这个数的二进制数中有几个1,并将其返回打印例如:15:00000000000000000000000000001111,返回4代码编写#include<stdio.h>int NumOf1(int n){ int count = 0; while (n) { if (n % 2 == 1)//看最右边的二进制位是否为1 { count++; } n /= 2;/原创 2022-03-18 11:10:43 · 708 阅读 · 0 评论 -
c语言----模拟实现memcpy
目录memcpy介绍代码实现运行结果memcpy与strcpy对比memcpy介绍代码实现#include<stdio.h>#include<assert.h>char* my_memcpy(char* dst, const char* src, size_t num){ char* ret = dst; assert(dst); assert(src); while (num--) { *(char*)dst = *(char*)src; dst=(原创 2022-03-17 17:39:56 · 461 阅读 · 0 评论 -
c语言----判断给定字符串是否为旋转字符串
目录问题描述解决思路代码实现运行结果问题描述给定一个字符串,判断是否为旋转字符串例如:ABCDE左旋1 :BCDEAABCDE左旋2 :CDEABABCDE右旋1 :EABCDABCDE右旋2 :EDABC若满足旋转字符串要求返回1,不满足返回0解决思路通过观察我们可以发现,不管字符串如何旋转,结果总会出现在一个固定的字符串中,例如:ABCD旋转结果总会是ABCDABC中的一部分,因此我们可以从这个固定的字符串中寻找,看结果是否在里面。代码实现#include<stdio.h&g原创 2022-03-17 11:12:28 · 185 阅读 · 0 评论 -
c语言----左旋字符串
目录问题描述解决思路代码实现运行结果问题描述实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB解决思路一、左旋的结果与左旋的次数以及字符串长度有关,不论k为多少,结果都会在k模字符串的长度得到的结果里面循环二、将第一个存储起来,每次移一个字符代码实现#include<stdio.h>#include<string.h>char* leftRound(char* src, int time){ i原创 2022-03-17 09:42:24 · 452 阅读 · 0 评论 -
c语言----打印菱形
目录问题描述解决思路代码实现结果输出问题描述在屏幕中打印以下图形解决思路观察规律可以看出,这个菱形上下两部分关于中间一行轴对称,中间的轴(line)作为突破口上半部分:每一行由2*i+1个号组成,(i从0开始),为了视觉感明显,每一行号左右有line-i-1个空格下半部分:每一行由2*(line-i-1)-1个*号组成(i从0开始),*号左右有i+1个空格代码实现#include<stdio.h>int main(){ int line = 0; int i = 0;原创 2022-03-16 10:44:08 · 937 阅读 · 0 评论 -
c语言----水仙花数的编写
目录问题描述解决思路代码编写输出结果问题描述找出0~100000的水仙花数并将其打印出来。水仙花数:假设此数有n位,那么这个数等于每一位的n次方之和,例如:153=13+53+33解决思路一、遍历1~100000的所有数字(循环遍历)二、要确定这个数有几位(确定n)三、求出各个位数的n次方之和四、将第三步求出来的结果与原来的数做对比,相等则满足要求,便输出。代码编写#include<stdio.h>#include<math.h>int main(){ i原创 2022-03-16 10:01:58 · 1977 阅读 · 0 评论 -
c语言----Sn=a+aa+aaa+aaaa+aaaaa.....
目录问题描述代码实现运行结果代码改进运行结果问题描述求Sn=a+aa+aaa+aaaa+aaaaa代码实现#include<stdio.h>int main(){ int a = 0; int Sn = 0; scanf("%d", &a); Sn = (5 * a) + (4 * a * 10) + (3 * a * 100) + (2 * a * 1000) + (a * 10000);//由于数据较小,容易总结规律,但不具有普遍性 printf("Sn=%d\原创 2022-03-15 23:00:36 · 10019 阅读 · 0 评论 -
c语言----数组,指针的简单运用--调整数组顺序
目录问题描述解决思路代码实现问题描述已知一个数组,现需要将数组里面的数字调整为前半部分为奇数,后半部分为偶数。解决思路一、从两个方向分别找到奇数和偶数(需要两个指针)二、将奇数交换到前半部分,将偶数交换到后半部分代码实现#include<stdio.h>void swap_arr(int arr[], int sz){ int left = 0; int right = sz - 1; int tmp = 0; while (left < right) {原创 2022-03-15 22:14:03 · 1573 阅读 · 0 评论 -
C语言----模拟实现strcpy
目录strcpy函数介绍c语言代码实现运行结果strcpy函数介绍c语言代码实现#include<stdio.h>#include<assert.h>char* my_strcpy(char* dest, const char* src){ assert(src != NULL); assert(dest != NULL); char* ret = dest;//存放目的字符串指针 while (*dest++ = *src++)//完成源字符串到目的字符串的原创 2022-03-15 21:36:38 · 335 阅读 · 0 评论 -
C语言----模拟实现strlen函数
strlen函数的介绍可以参考下面的网站学习c++学习网站实现代码#include<stdio.h>#include<assert.h>size_t mystrlen(const char* str){ assert(str != NULL);//断言字符串是否为空,防止非法访问 int count = 0; while (*str != 0)//字符串结束标志\0,用于终止循环 { count++; str++; } return count;原创 2022-03-15 21:15:00 · 348 阅读 · 0 评论 -
C语言实现喝汽水问题
题目要求汽水一元一瓶,喝完的两个空瓶可以兑换一瓶汽水,现在有20块钱,问:能喝到多少汽水?思路20元可以买20瓶汽水,相当于得到20个空瓶子,按照已知要求可以折半兑换10瓶,以此类推,将所有的加起来相当于可以得到39瓶汽水。代码实现与运行结果如下:代码#include <stdio.h>int main(){ int money = 0; int drinks = 0; int empty = 0; scanf("%d",&money); drinks = mon原创 2022-03-15 18:31:21 · 222 阅读 · 0 评论