C语言小技巧
曦文先生
这个作者很懒,什么都没留下…
展开
-
按等级统计学生成绩
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。函数接口定义:int set_grade( struct student *p, int n );其中p是指向学生信息的结构体数组的指针,该结构体的定义为:struct student{ int num; char name[20]; int score; char grade;};n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数原创 2022-03-21 19:10:22 · 1111 阅读 · 0 评论 -
内存移动——复刻memmove
众所周知在C语言标准里memmove和memcpy是两个完全不同的函数。memcpy 只要求能做到复制就可以了,可以不满足自我重叠复制。memmove 则更有理想,他专门从事自我重叠复制,偶尔也能客串一下memcpy函数。我们先看一下他的定义:可以看到他的返回类型和接收类型都是void*不定类型,因此在理论上他可以从事任意类型的内存复制。接下来我们直接走例子看看如何完成这个函数的功能复刻:例1:将int arr数组中的1234567转换成3456767。首先我们回忆一原创 2022-03-20 13:52:22 · 3143 阅读 · 0 评论 -
旋转字符串——三步逆序法
我们先举个例子:有一个字符串:“ABCDEF”。要求做左旋两个字符得到:“CDEFAB”一般情况下我们会写两个循环,一个负责字符交换,一个负责交换次数。也就是第一次循环:A拿出来,BCDEF向前一步,把A放后面。第二次循环:B拿出来,CDEFA向前一步,把B放后面。今天我们不用暴力求解法,我们使用三步逆序法!原理:根据需要旋转的个数将原字符分成两份,第一份做自我旋转,第二份也做自我旋转,然后将两个拼接起来再做一次旋转就得到了我们要的结果。第一步:把要旋转的AB先单独旋转得到B原创 2022-03-11 17:21:09 · 125 阅读 · 0 评论 -
素数筛选法
筛选法又称筛法,具体做法是第一轮:当前数值为2,用后面的数字3对2取模,余数为1则把3保留;继续向后用4对2取模,余数为0则把4消灭;按照这种方法检测一轮。第二轮:刚才是2现在应该是3了,按照刚才的方法继续取模。第三轮:经过前两轮检测后,4已经被消灭了,现在应该是5了,按照前面的方法继续。后面的轮数也是按照这种方式继续检测,现在看懂了吗?如果还不懂那就来看代码吧!原创 2022-02-27 21:46:42 · 809 阅读 · 0 评论 -
C语言——辗转相除法求最大公约数和最小公倍数
C语言——辗转相除法求最大公约数和最小公倍数原创 2022-02-18 16:11:37 · 4758 阅读 · 5 评论